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 - 1) return false; if (path == TURN_LEFT && j == 0) return 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(4, 6); int start = 2; while (visitLadder(ladder, start) == 3) { ladder = generateLadder(4, 6); } printLadder(ladder); } } | cs |
'프로그래밍 > Java' 카테고리의 다른 글
Stream의 개념을 설명할 수 있나요? (의역) (0) | 2023.07.30 |
---|---|
[Java] 문자열에서 URL만 추출하기 (0) | 2021.01.08 |
[Java] URL인지 체크하기, URL 정규식 (0) | 2021.01.08 |
객체 지향 프로그래밍, 자바 (0) | 2016.06.17 |
Java 요일 구하기 계산 예제 / 소스 코드 (0) | 2016.04.28 |