学校で三目並べの課題が出ました。
9マスすべてに入力できるか確認するところまで書けました。
int board[3][3]={
{0,0,0},
{0,0,0},
{0,0,0} }
printf("What is the vertical position? ");
scanf("%d", &i);
printf("What is the horizontal position? ");
scanf("%d", &j);
board[i][j]<-の場所
このように宣言して縦と横の場所を指定して打っていくんですが、
|O | | |
| | | |
| | | |
のようにすでにboard[0][0]の場所を使ったときに次のターンで[0][0]の場所を宣言したときに、
Cannot put thereと上書きできないようにしたいのですが、いい条件が思いつきません。
9マスあるので使った場所に上書きしようとしたときはすべてCannot put thereと表示させたいです。
void mark_board(int board[3][3],int turn)の関数のところの if (i < 0 || 2 < i || j < 0 || 2 < i)の条件を変えたいです。
下のソースコードの現状では上書きできてしまいます。
よろしくおねがいします。
#include <stdio.h> #define LEN_NAME 17 void print_board(int board[3][3]); void mark_board(int board[3][3], int turn); typedef struct { int num_play; /* 対戦数 */ int num_player1_win; /* Player1の勝利数 */ int num_player2_win; /* Player2の勝利数 */ int num_draw; /* 引き分け数 */ double ave_player1_win; /* Player1の勝率 */ double ave_player2_win; /* Player2の勝率 */ char player1[LEN_NAME]; /* Player1の名前 */ char player2[LEN_NAME]; /* Player2の名前 */ }PLAYDATA; int main(void) { int turn, i, count = 0; int board[3][3] = { {0,0,0}, {0,0,0}, {0,0,0} }; PLAYDATA game; printf("Enter Player1's name (max. 16 chars): "); scanf("%s", game.player1); printf("Enter Player2's name (max. 16 chars): "); scanf("%s", game.player2); printf("\n%s vs %s\n\n", game.player1, game.player2); for (i = 1; i < 10; i++) { if (count == 0) { turn = 1; count++; } else { turn = -1; count--; } mark_board(board, turn); print_board(board); } return 0; } void print_board(int board[3][3]) { int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf("|"); switch (board[i][j]) { case -1: printf("x"); break; case 0: printf(" "); break; case 1: printf("o"); break; } } printf("|\n"); } } void mark_board(int board[3][3], int turn) { int i, j; if (turn == 1) { printf("Player1's turn (o)\n"); } else { printf("Player2's turn (x)\n"); } while (1) { printf("What is the vertical position? "); scanf("%d", &i); printf("What is the horizontal position? "); scanf("%d", &j); if (i < 0 || 2 < i || j < 0 || 2 < i) { printf("Cannot put there\n"); } else { break; } } if (turn == 1) { board[i][j] = 1; } else { board[i][j] = -1; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。