//C++로 시작하는 객체지향 프로그래밍 p.363 예제 8.20
/* 틱택토 게임은 두 명이 번갈아가며 o나 x(이를 토근이라함)를 3x3 격자판에 써서,
같은 글자를 가로, 세로, 혹은 대각선상에 놓이도록 하는 게임이다. 한 사람이 ㅜ평, 수직 또는 대각선에 3개의 같은 토큰을 표시하면 게임이 끝나고 승자가 된다. 격자판이 토큰으로 모두 채워진 상태에ㅓ 승자가 없는 경우도 있다. 틱택토 게임을 하는 프로그램을 작성하여라. 프로그램에서는 우선 첫 번째 사람이 x토근을 입력하고, 두 번째 사람이 o토큰을 입력하도록 한다. 프로그램에 토큰이 입력될 때마다 프로그램은 콘솔 상의 보드에 입력 토큰을 출력해야 하고 게임의 상태(승리, 무승부, 게임 중)를 결정한다.*/
#include <iostream>
using namespace std;
void init_board(char board[][3]);
void display_board(char board[][3]);
int get_player_move(int player, char board[][3]);
int main() {
char board[3][3];
int quit = 0;
init_board(board); //보드 초기화
do {
display_board(board); // 보드를 화면에 출력한다.
quit = get_player_move(0, board); // 사용자의 입력
display_board(board); // 보드를 화면에 출력한다.
quit = get_player_move(1, board); //사용자의 입력
} while (quit == 0);
system("pause");
return 0;
}
//board 초기화
void init_board(char board[][3]) {
int x, y;
for (x = 0; x < 3; x++) {
for (y = 0; y < 3; y++)
board[x][y] = ' ';
}
}
void display_board(char board[][3]) {
int i, j;
for (i = 0; i < 3; i++) {
cout << "---|---|---" << endl;
for (j = 0; j < 3; j++) {
cout << " " << board[i][j] << " ";
} cout << endl;
} cout << "---|---|---" << endl;
}
int get_player_move(int player, char board[][3]) {
int x, y, done = 0;
while (done != 1) {
cout << "player " << player << ", (x, y) 좌표 (종료 -1, -1) :";
cin >> x >> y;
if (x == -1 && y == -1) return 1;
if (board[x][y] == ' ') break;
else cout << "잘못된 위치임" << endl;
}
if (player == 0) board[x][y] = 'X';
else board[x][y] = 'O';
return 0;
}
댓글 없음:
댓글 쓰기