C/C++

틱택톡 게임인데요~! 컴퓨터가 다음수를 결정하도록 프로그램을 어떻게 변경해야 되는지 모르겠습니다.ㅜ 도와주세요~~!

0
char board[3][3];     int x, y, i, k;     for (x = 0; x < 3; x++)         for (y= 0; y < 3; y++)         board[x][y] = ' ';     for (i = 0; i < 3; i++) {         printf("(x,y)좌표:");         scanf_s("%d %d", &..

char board[3][3];
    int x, y, i, k;
    for (x = 0; x < 3; x++)
        for (y= 0; y < 3; y++)
        board[x][y] = ' ';

    for (i = 0; i < 3; i++) {
        printf("(x,y)좌표:");
        scanf_s("%d %d", &x, &y);

        board[x][y] = (i % 2 == 0) ? 'X' : 'O';
        for (k = 0; k < 3; k++) {
            printf("---|---|--\n");
            printf(" %c | %c | %c \n",board[k][0],board[k][1],board[k][2]);
        }
        printf("---|---|--\n");

슈나 2021-04-19
슈나 님께서 2021-04-19에 C/C++에 올린 질문

댓글

1개의 답변

0
컴퓨터와 대결하는 Tic Tac Toe를 만드는 간단한 C 예제인데 참고가 되시기 바랍니다. #include #include char matrix[3][3]; /* 틱택토 구조 */ char check(void); void init_matrix(void); void get_player_move(void); void get_..

컴퓨터와 대결하는 Tic Tac Toe를 만드는 간단한 C 예제인데 참고가 되시기 바랍니다.

#include <stdio.h>
#include <stdlib.h>

char matrix[3][3]; /* 틱택토 구조 */

char check(void);
void init_matrix(void);
void get_player_move(void);
void get_computer_move(void);
void disp_matrix(void);

int main(void) {
  char done;

  printf("틱택토 게임입니다.\n");
  printf("컴퓨터인 저와 대결합니다.\n");

  done = ' ';
  init_matrix();

  do {
    disp_matrix();
    get_player_move();
    done = check(); /* see if winner */
    if (done != ' ') break; /* winner!*/
    get_computer_move();
    done = check(); /* see if winner */
  } while (done == ' ');

  if (done == 'X') printf("당신이 이겼습니다.!\n");
  else printf("내가 이겼습니다!!!!\n");
  disp_matrix(); /* show final positions */

  return 0;
}

/* 틱택토 초기화 */
void init_matrix(void) {
  int i, j;

  for (i = 0; i < 3; i++)
    for (j = 0; j < 3; j++) matrix[i][j] = ' ';
}

/* 플레이어가 놓을 자리 가져오고 확인하기 */
void get_player_move(void) {
  int x, y;

  printf("X를 놓을 X,Y 좌표를 입력하세요: ");
  scanf("%d%*c%d", & x, & y);

  x--;
  y--;

  if (matrix[x][y] != ' ') {
    printf("Invalid move, try again.\n");
    get_player_move();
  } else matrix[x][y] = 'X';
}

/* 컴퓨터가 놓을 자리 가져오기 */
void get_computer_move(void) {
  int i, j;
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++)
      if (matrix[i][j] == ' ') break;
    if (matrix[i][j] == ' ') break;
  }

  if (i * j == 9) {
    printf("비겼습니다\n");
    exit(0);
  } else
    matrix[i][j] = 'O';
}

/* 틱택토 화면 보이기. */
void disp_matrix(void) {
  int t;

  for (t = 0; t < 3; t++) {
    printf(" %c | %c | %c ", matrix[t][0],
      matrix[t][1], matrix[t][2]);
    if (t != 2) printf("\n---|---|---\n");
  }
  printf("\n");
}

/* 승자가 있는지 체크. */
char check(void) {
  int i;

  for (i = 0; i < 3; i++) /* check rows */
    if (matrix[i][0] == matrix[i][1] &&
      matrix[i][0] == matrix[i][2]) return matrix[i][0];

  for (i = 0; i < 3; i++) /* check columns */
    if (matrix[0][i] == matrix[1][i] &&
      matrix[0][i] == matrix[2][i]) return matrix[0][i];

  /* test diagonals */
  if (matrix[0][0] == matrix[1][1] &&
    matrix[1][1] == matrix[2][2])
    return matrix[0][0];

  if (matrix[0][2] == matrix[1][1] &&
    matrix[1][1] == matrix[2][0])
    return matrix[0][2];

  return ' ';
}

윈비 2021-04-20
사탕 주기
윈비 님께서 2021-04-20에 C/C++에 올린 글
보관하기

댓글

조회수 2,891
답글 1
URL