另一版井字棋實現,採用函數模組化設計:棋盤初始化、玩家輸入座標、電腦自動落子(首空位)、棋盤渲染、主循環判斷輸贏平(行/列/對角線/平局)。
init_chess():初始化 3x3 棋盤為空格,並顯示初始棋盤。input_player():提示玩家輸入座標 (x,y),驗證合法性,落子 'Y'。input_computer():掃描棋盤首個空位落子 'O',使用 goto 跳出雙層循環。input_player_xy() / input_computer_xy():落子後重新渲染棋盤。while (flag) {
input_player(chess_arr);
input_computer(chess_arr);
// 檢查 8 條獲勝線
for (i=0; i<3; i++) {
if (行 i 全 'Y' 或 列 i 全 'Y') { printf("player win!"); flag=0; break; }
if (行 i 全 'O' 或 列 i 全 'O') { printf("computer win!"); flag=0; break; }
}
// 對角線
if (chess_arr[0][0]==chess_arr[1][1] && chess_arr[1][1]==chess_arr[2][2] && chess_arr[0][0]=='Y') player win;
if (chess_arr[0][2]==chess_arr[1][1] && chess_arr[1][1]==chess_arr[2][0] && chess_arr[0][2]=='O') computer win;
// 平局
if (總落子數 == 9) { printf("draw!"); flag=0; }
}
goto flag 簡潔跳出雙層循環(工程中慎用,教學示範控制流)。此版本著重模組化結構,適合作為「結構化程式設計」課程作業參考。AI 部分同為首空位策略,可按前文升級路線演進為 Minimax 完美 AI。