// 例題5 包囲ゲーム // game.c メインプログラム #include #include // ヘッダファイル読み込み #include "game.h" #include "board.h" #include "move.h" #include "rule.h" // 終了処理(未完成) void end_game() { } // ゲーム本体 void game_main() { extern const char *winname[]; Move m; // 手 Board b; // 盤面 Winner w = none; // 勝者 // 盤面初期化 init_board(&b); // 勝者が決まるまで繰り返し while (w == none) { // 盤面表示 show_board(&b); // 手入力 input_move(&m,&b); // 投了処理 if (isresign(m)) { // 投了? printf("%s resigned\n",winname[b.turn+1]); w = (b.turn==black_turn)?white_win:black_win; break; } // 盤面更新 show_move(&m); update_board(&m,&b); // 勝者判定 w = check_winner(&b); if (w == none) change_turn(&b); } // 勝者表示 show_winner(w); show_board(&b); end_game(); } // メインプログラム // 単体テスト/統合テストではgame_mainをテスト対象関数に変更 int main() { game_main(); return 0; }