三子棋想必對於大家來說並不陌生,三子棋是一種民間傳統遊戲,又叫九宮棋、圈圈叉叉、一條龍、井字棋、田字棋等。將正方形對角線連起來,相對兩邊依次擺上三個雙方棋子,只要將自己的三個棋子走成一條線,對方就算輸了。但是,有很多時候會出現和棋的情況。
利用c語言編寫三子棋的**,相對來說比較簡單,三子棋其實就可以看作是以個三行三列的二維陣列,然後對其裡面的每個元素進行賦值。因此我們首先需要理清楚三子棋完成的思路。
1.首先我們需要乙個棋盤,所以需要乙個showboard()函式來列印棋盤。『x』為玩家落子,『o』為電腦落子。
2.玩家落子的時候,以輸入座標的方式來進行,用playmove()函式實現;而電腦落子的話,我們就直接採用隨機數的方式完成電腦落子,用computermove()函式實現。
3.落子完了之後,我們就需要判定當前棋局的狀況了。當前棋局的狀況可以能有以下幾種情況:(1)玩家獲勝;(2)電腦獲勝;(3)和棋。這三種情況都是遊戲結束時的情況,當然還有一種就是棋局沒有結束,玩家電腦繼續落子。判定當前棋局狀況的話我們就用乙個iswin()函式來完成。
原始碼:game.h用來對我們需要使用的函式進宣告
#ifndef _game_h_
#define _game_h_
#include#include#include#includevoid initboard(char board[3], int row, int col);
void showboard(char board[3], int row, int col);
void playmove(char board[3], int row, int col);
char iswin(char board[3], int row, int col);
void computermove(char board[3], int row, int col);
#endif
test.c用來存放主函式,列印選單,呼叫game
#define _crt_secure_no_warnings 1
#include"game.h"
void menu() //列印選單
void game() //呼叫game模組的函式
; initboard(board, 3, 3);
showboard(board, 3, 3);
while (1)
showboard(board, 3, 3);
computermove(board, 3, 3);
ret = iswin(board, 3, 3);
if (ret != ' ')
showboard(board, 3, 3);
} if (ret == 'q')
else if (ret == 'x')
else if (ret == 'o') }
int main() //主函式
} while (input);
return 0;
}
game.c用來對我們的函式進行定義
#define _crt_secure_no_warnings 1
#include "game.h"
void initboard(char board[3], int row, int col) // 建立陣列,然後初始化陣列為空格 }}
void showboard(char board[3], int row, int col) //列印棋盤
}printf("\n");
if (i < row - 1)
}printf("\n");
} }}void playmove(char board[3], int row, int col) //玩家落子
else
}else
}}static int isfull(char board[3], int row, int col) // 判斷棋盤是否已滿,static防止被呼叫
} }return 1;//滿返回1
}char iswin(char board[3], int row, int col) //判斷誰贏
//列if (board[0][i] == board[1][i] && board[1][i] == board[2][i]
&& board[0][i] != ' ')
//對角線
if (board[0][0] == board[1][1] && board[1][1] == board[2][2]
&& board[0][0] != ' ')
if (board[0][2] == board[1][1] && board[1][1] == board[2][0]
&& board[0][0] != ' ')
//平局
if (isfull(board, row, col) == 1)
}//即沒有贏,也沒有平局
return ' ';
}void computermove(char board[3], int row, int col) //電腦落子
}}
程式執行介面:
玩家落子電腦落子
玩家勝出:
C語言二維陣列應用 三子棋
函式宣告寫在標頭檔案game.h中 ifndef game h define game h define row 3 include includevoid initboard char board row int row,int col,char set void showboard char b...
用二維陣列實現簡單三子棋遊戲
用二維陣列實現簡單三子棋遊戲 環境 vs2013 define crt secure no warnings define hang 3 define lie 3 include include include void menu 選單 qipan2 int a,int b 初始話棋盤格仔 prin...
c語言小程式之三子棋
第一次寫這麼長的程式,再此總結一下。首先考慮test.c的功能 1 main函式內實現乙個遊戲介面,用乙個迴圈可以讓遊戲一直迴圈進行,並且再迴圈內部使用分支用來選擇開始遊戲or退出遊戲。2 寫乙個menu函式,作用是列印遊戲選單介面。3 寫乙個game函式,主要在函式內部呼叫各個步驟的函式,實現乙個...