프로그래밍/Java

Java 사다리 게임 소스

Lou Park 2017. 12. 1. 16:33

Java로 만들어본 간단한 사다리 게임 소스다.

사다리는 랜덤하게 만들어지며, 대각선 길은 없다. (넘복잡 ㅎㅎ)


STRAIGHT ( ㅣ )

TURN_RIGHT( ㅏ )

TURN_LEFT( ㅓ )


라고 생각하면 된다.


주석으로 달아놓은 visit() 함수를 이용해서 해당 칸의 이미지를 업데이트해서 사다리를 타는 것처럼 효과를 내 볼 수도 있겠다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
public class main {
    
    public static final int STRAIGHT = 1;
    public static final int TURN_RIGHT = 2;
    public static final int TURN_LEFT = 3;
    
    public static int[][] generateLadder(int width, int height) {
        Random random = new Random();
        int[][] ladder = new int[height][width];
        Stack<Integer> pathStack = new Stack<Integer>();
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < width; j++) {
                if (!pathStack.isEmpty()) {
                    ladder[i][j] = TURN_LEFT;
                    pathStack.pop();
                } else {
                    int path = random.nextInt(2+ 1;
                    while (!isValid(path, i, j, width, height)) {
                        path = random.nextInt(2+ 1;
                    }
                    if (path == TURN_RIGHT) pathStack.push(path);
                    ladder[i][j] = path;
                }
            }
        }
        return ladder;
    };
    
    public static void printLadder(int[][] ladder) {
        for (int i = 0; i < ladder.length; i++) {
            for (int j = 0; j < ladder[0].length; j++) {
                System.out.print(ladder[i][j] + " ");
            }
            System.out.println();
        }
    }
    
    public static boolean isValid(int path, int i, int j, int width, int height) {
        if (path == TURN_RIGHT && j == width - 1return false;
        if (path == TURN_LEFT && j == 0return false;
        return true;
    }
    
    public static int visitLadder(int[][] ladder, int start) {
        int dest = -1;
        int cursorX = start;
        int cursorY = 0;
        if (start < ladder[0].length) {
            while (cursorY < ladder.length) {
                if (ladder[cursorY][cursorX] == TURN_RIGHT) {
                    cursorX++;
                } else if (ladder[cursorY][cursorX] == TURN_LEFT) {
                    cursorX--;
                }
                cursorY++;
            }
            dest = cursorX;
        }
        return dest;
    }
    
    public static void main(String[] args) {
        int[][] ladder = generateLadder(46);
        int start = 2;
        while (visitLadder(ladder, start) == 3) {
            ladder = generateLadder(46);
        }
        printLadder(ladder);
    }
}
    
cs