五子棋是經典課程設計題目,核心在於棋盤資料結構、落子合法性判斷、勝負檢測演算法、人機對戰 AI(可選)。網路上開源專案眾多,建議從簡單版本入手,逐步擴充。
// 檢盤:15x15 或 19x19
#define SIZE 15
int board[SIZE][SIZE] = {0}; // 0:空 1:黑 2:白
// 落子
bool place(int x, int y, int player) {
if (x<0||x>=SIZE||y<0||y>=SIZE||board[x][y]!=0) return false;
board[x][y] = player;
return true;
}
// 勝負檢測:四個方向連線 ≥5
bool checkWin(int x, int y, int player) {
const int dx[4] = {1,0,1,1};
const int dy[4] = {0,1,1,-1};
for (int d=0; d<4; ++d) {
int cnt = 1;
for (int k=1; k<5; ++k) {
int nx = x + k*dx[d], ny = y + k*dy[d];
if (nx<0||nx>=SIZE||ny<0||ny>=SIZE||board[nx][ny]!=player) break;
++cnt;
}
for (int k=1; k<5; ++k) {
int nx = x - k*dx[d], ny = y - k*dy[d];
if (nx<0||nx>=SIZE||ny<0||ny>=SIZE||board[nx][ny]!=player) break;
++cnt;
}
if (cnt >= 5) return true;
}
return false;
}
c gomoku 或 c wuziqi,挑選 Star 數較高、代碼結構清晰的專案。先抄寫跑通基礎版,再嘗試加入勝負檢測優化、悔棋、存檔/讀檔。切勿直接複製貼上不理解的 AI 代碼,考核時無法解釋邏輯極易被刁難。