3. 게임판 업데이트하기
이전 단계에서는 사용자의 유효한 입력을 받아 게임판을 출력하는 프로그램을 만들었습니다. 하지만 게임판은 여전히 비어 있습니다. 이번 단계에서는 사용자의 입력을 받아 게임판을 업데이트하고, 컴퓨터의 랜덤한 움직임도 추가하는 방법을 배웁니다.
<<<~ 틱택토~>>
* 1번 - 9번을 선택하여 이동합니다
* 플레이어: 'X' 컴퓨터: 'O'
1 | 2 | 3
---+---+---
4 | 5 | 6
---+---+---
7 | 8 | 9
당신의 이동을 입력하세요 (1-9): 1
| |
---+---+---
| | <--------------------- 보드에 플레이어/컴퓨터 이동이 없습니다
---+---+---
| |
당신의 이동을 입력하세요 (1-9): d
잘못된 입력; 이동을 다시 입력합니다 (1-9): 3
| |
---+---+---
| | <--------------------- 보드에 플레이어/컴퓨터 이동이 없습니다
---+---+---
| |
당신의 이동을 입력하세요 (1-9):
사용자 움직임 표시하기
hasNextInt() 조건문 안에서, printBoard(board) 메서드를 호출하기 전에 사용자가 입력한 값을 기반으로 board 배열을 업데이트합니다.
플레이어는 게임판에서 **“X”**로 표시된다는 점에 유의하세요.
알림
Java는 0부터 시작하는 인덱싱(0-indexing)을 사용합니다. 하지만 플레이어는 1부터 9까지의 숫자를 입력하도록 요청받았습니다. 배열의 요소에 접근하려면 인덱스 표기법을 사용해야 합니다: myVariable[indexNumber].
컴퓨터의 움직임 설정하기
컴퓨터가 유효한 위치에 말을 놓는 동작을 구현하기 위해 **getComputerMove(String[] curBoard)**라는 새로운 메서드를 만들어봅시다.
이 메서드는 1에서 9까지의 유효한 위치 중 하나를 선택하여 컴퓨터의 말을 놓습니다. 다음 단계에서 이 메서드를 구현하는 방법을 설명합니다.
컴퓨터의 움직임 구현하기
getComputerMove()
메서드 안에서 1에서 9까지의 숫자를 랜덤으로 생성합니다. 이를 위해 자바에서 자주 사용되는 Random
클래스를 사용할 것입니다.
이 클래스를 사용하려면 파일 상단에 다음과 같은 코드를 작성하여 Random
클래스를. 임포트(import)합니다.
import java.util.Random;
생성자를 Random()
이라고 불러 Random
객체를 만듭니다.
Random rand = new Random();
랜덤 숫자 생성
생성한 Random 객체에서 int nextInt(int num) 메서드를 호출하여 1부터 9까지의 숫자를 무작위로 생성할 수 있습니다.
int nextInt(int num) 메서드는 0부터 num-1까지의 랜덤 숫자를 반환합니다. 따라서 1부터 9까지의 숫자를 얻으려면 반환값에 1을 더해야 합니다.
int position = rand.nextInt(9);
유효한 움직임 확인
랜덤하게 1부터 9 사이의 숫자를 생성한 후, 해당 위치가 사용 가능한지 확인해야 합니다.
만약 이미 사용 중인 위치라면, while 루프를 사용해 유효한 움직임이 나올 때까지 새로운 랜덤 숫자를 계속 생성합니다.
이 과정이 끝나면 컴퓨터의 유효한 위치가 결정됩니다. 그 위치를 반환합니다
while (!curBoard[position].equals(" ")){
position = rand.nextInt(9);
}
return position;
게임판 배열 업데이트하기
1단계와 마찬가지로 ‘printBoard(보드)‘라는 메서드를 사용하기 전에 컴퓨터의 board
배열을 업데이트해야 합니다.
무작위로 ‘getComputerMove()‘를 호출하여 이동을 생성합니다!
컴퓨터는 게임 보드에서 ‘O’로 표시된다는 점에 유의하세요.
board[getComputerMove(board)] = "O"; //getComputerMove returns the integer 0-8 that is the proper position in the array
printBoard(board);
Run the Program
지금 프로그램을 ‘실행’(Run
) 하세요! 보드는 아래와 같이 각 입력으로 플레이어와 컴퓨터의 움직임을 올바르게 업데이트해야 합니다:
<<<~ 틱택토~>>
* 1번 - 9번을 선택하여 이동합니다
* 플레이어: 'X' 컴퓨터: 'O'
1 | 2 | 3
---+---+---
4 | 5 | 6
---+---+---
7 | 8 | 9
당신의 이동을 입력하세요 (1-9): 1
X | |
---+---+---
| |
---+---+---
| O |
당신의 이동을 입력하세요 (1-9): 1
잘못된 위치; 이동을 다시 입력하세요 (1-9): 2
X | X |
---+---+---
| | O
---+---+---
| O |
당신의 이동을 입력하세요 (1-9):
모든 것이 잘 작동하는 것 같습니다! 게임의 승자와 패자만 결정하면 다음 활동에서 구현할 수 있습니다!