首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言實現井字棋小遊戲:玩家 vs 電腦,完整棋盤渲染與輸贏判斷

     編輯:關於C語言

C 語言實現井字棋小遊戲:玩家 vs 電腦,完整棋盤渲染與輸贏判斷

另一版井字棋實現,採用函數模組化設計:棋盤初始化、玩家輸入座標、電腦自動落子(首空位)、棋盤渲染、主循環判斷輸贏平(行/列/對角線/平局)。

一、 模組函數

  • 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。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved