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

C語言井字棋遊戲:結構化設計版人機對戰

     編輯:關於C語言

C語言井字棋遊戲:結構化設計版人機對戰

3×3 井字棋,玩家(@) vs 電腦(#),模塊化設計:棋盤顯示、落子驗證、隨機 AI、勝負判斷、主循環控制。

代碼架構

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

char board[3][3] = {0};
int empty_count = 9;

void print_board() { ... }           // 顯示棋盤
void player_move() { ... }           // 玩家落子(含驗證)
void computer_move() { ... }         // 電腦隨機落子
int check_winner() { ... }           // 返回 1玩家勝 0電腦勝 -1平局 2繼續

int main() {
    srand(time(NULL));
    // 初始化
    for (int i=0;i<3;i++) for(int j=0;j<3;j++) board[i][j]=' ';
    
    while (1) {
        print_board();
        if (check_winner() != 2) break;
        player_move();
        print_board();
        if (check_winner() != 2) break;
        computer_move();
    }
    // 輸出結果
    return 0;
}

關鍵函數實現亮點

  • player_move:遞歸重試處理非法輸入
  • computer_move:do-while 循環確保落子合法
  • check_winner:展開 8 條勝利線判斷,雖代碼長但無函數調用開銷
  • 主循環:雙方落子後各檢查一次勝負,避免多餘判斷

改進方向

  1. AI 升級:Minimax 算法實現完美防守/進攻
  2. 輸入健壯:處理非數字、緩衝區殘留
  3. 代碼復用:提取 check_line(a,b,c,player) 通用檢查函數
  4. 界面優化:ANSI 顏色、座標標註、動畫
  5. 擴展性:N×N 棋盤、雙人模式、網絡對戰
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved