/* Tic-Tac-Too 超簡易版 */ #include #include #define SIZE 3 /* ゲーム盤(プレーヤ番号 1 or 2 を記録)の静的配列 */ int board[SIZE][SIZE]; // 簡単のためグローバル変数を利用(今回だけね) /* タイトルを表示する関数 */ void Title() { printf("+-------------------------------+\n"); printf("| The Most Simplest TIC-TAC-TOO |\n"); printf("+-------------------------------+\n"); printf("\n"); printf(" 位置の指定は行番号,列番号の順.\n"); printf(" (番号は 0 から始まります.)\n"); printf(" 勝敗については自分達で判定してください.\n"); printf(" 終了するには [Ctrl]+[C].\n"); printf("\n"); } /* ゲーム盤を初期化する関数 */ void Clear() { int x, y; for (y = 0; y < SIZE; y++) { for (x = 0; x < SIZE; x++) { board[y][x] = 0; } } } /* ゲーム盤を表示する関数 */ void Draw() { int x, y; printf("\n"); for (y = 0; y < SIZE; y++) { for (x = 0; x < SIZE; x++) { printf("%2d", board[y][x]); } printf("\n"); } printf("\n"); } /* ゲーム盤のプレーヤ番号を調べる関数 * x, y:座標 * return:プレーヤ番号 */ int Get(int x, int y) { if (x < 0) return (-1); // はみ出し禁止 if (x >= SIZE) return (-1); // (セグメントエラー防止) if (y < 0) return (-1); if (y >= SIZE) return (-1); return (board[y][x]); } /* ゲーム盤にプレーヤ番号を書き込む関数 * x, y:座標 * v:プレーヤ番号 */ void Set(int x, int y, int v) { if (x < 0) return; // はみ出し禁止 if (x >= SIZE) return; // (セグメントエラー防止) if (y < 0) return; if (y >= SIZE) return; board[y][x] = v; } int main() { int x, y, player; Title(); Clear(); player = 1; while (1) { Draw(); while (1) { printf("%dP の番 > ", player); scanf("%d %d", &y, &x); if (Get(x, y) == 0) break; printf("そこには置けません!!\nもう一度 "); } Set(x, y, player); player = player%2 + 1; // 1→ 2,2→ 1 } return (EXIT_SUCCESS); }