C語言實現雙人對戰五子棋遊戲

2021-09-26 06:18:38 字數 3022 閱讀 4406

在編寫五子棋遊戲前首先對整個專案進行分析:

1、五子棋的介面繪製及顯示

2、對輸入的資料進行寫入

3、判斷輸入的資料多對應的位置上是否可以下棋其中包括檢測此位置是否為空及是否超出下棋的有效位置(越界超出棋盤大小)

4、判斷五個棋子相連的情況

5、檢測勝利

6、整合所有函式功能實現雙人對戰的效果

以下內容是對上邊步驟的**實現

①對介面的設計首先需要確定好棋盤的大小,本次**以8*8的矩陣大小繪製棋盤,並配合系統清屏函式進行顯示,函式的**如下

行列相等==8

printf();–繪製棋盤

system(「cls」);–系統清屏函式

標頭檔案:#include

函式功能:顯示棋盤

返回值:無

形參:無

void menu(void)

u8 i,j; //i代表行,j代表列

printf("\n ");

for(i=0;iprintf("\n ");

for(i=0;iprintf("\n");

for(j=0;jprintf("%d|",j);

for(i=0;iif(chess[i][j] == 0)

printf(" *");

printf("\n");

②對輸入的資料進行寫入,此功能只需要將輸入的值進行接收即可:

函式功能:獲取值

返回值:無

void getdata(u32 *x,u32 *y)

scanf("%d %d",x,y);

函式功能:對應位子(x,y)寫入資料

返回值:無

形參:x,y的座標,who:對應玩家

void putdata(u32 x,u32 y,u32 who)

chess[x][y] = who;

③判斷輸入的資料多對應的位置上是否可以下棋其中包括檢測此位置是否為空及是否超出下棋的有效位置

函式功能:檢測(x,y)是否為空

返回值:1表示沒有棋子,0表示有棋子

形參:x,y的座標

u8 kong(u32 x,u32 y)

if(chess[x][y] == 0)

return 1;

printf(「此處有棋,請重新下棋!\n」);

return 0;

函式功能:檢測(x,y)是否越界並且為空可以輸入

返回值:1表示沒有,0表示越界

形參:x,y的座標

u8 check_out(u32 x,u32 y)

if(x<0 || x>7 || y<0 || y>7)

return 0;

if(kong() == 1)

return 1;

return 0;

④判斷五個棋子相連的情況

分別判斷四個方向中其中有乙個方向連成5子

函式功能:檢測5子相連

返回值:1表示有5子相連,0表示沒有

形參:x,y的座標

u8 check_five(u32 x,u32 y) //x,y 0,0

u32 x_next,y_next;

u8 i,j;

u32 who;

u8 num = 1;

u32 dirx[4]=; //對應四個方向下,右,右下,右上

u32 diry[4]=;

who = chess[x][y]; //將值傳入給who給後邊判斷玩家i

if(who == 0) //判斷對應座標是否為0,

return 0; //不需要檢測

for(i=0;i<4;i++) //四個方向

num = 1;

x_next = x; //下乙個子=前乙個往某方向偏移

y_next = y;

for(j=1;jx_next += dirx[i]; //下乙個子=前乙個往某方向偏移

y_next += diry[i];

if(chess[x_next][y_next] == who)

num++;

if(num == five) //判斷是否已連成五子

printf(「玩家%d勝利,勝利方向dir->%d\n」,who,i);

return 1;

return 0;

⑤檢測勝利

函式功能:檢測勝利

返回值:1表示有人勝利,0表示沒有

形參:無

u8 check_win()

u32 x,y;

for(x=0;xfor(y=0;yif(check_five(x,y) == 1)

return 1;

return 0;

⑥整合代買

函式功能:函式彙總

返回值:結果

形參:無

u32 fiveplay(void)

u32 x,y;

u32 step = 0 ;

u32 who;

char ch;

printf(「親愛的玩家!您準備好了嗎?請按任意鍵繼續!\n」);

getchar();

showmenu();

printf(「您可以輸入x y的值落下對應位子的棋子,如1 1\n」);

while(1)

who = step %2 + 1;

printf(「玩家%d請下棋:」,who);

getdata(&x,&y);

if(check_out(x,y))

putdata(x,y,who);

clear;

showmenu();

step++;

if(win())

printf(「祝賀玩家%d取得勝利\n」,who);

scanf("%c",&ch);

if(ch == 『n』)

return ;

else

chess[hang][lie]

else

printf("%d %d這個位子不允許下棋,請重新輸入!\n\n",x,y);

更多交流可以私我132-60-56-20-29哦

C語言實現雙人五子棋遊戲

生成棋盤玩家1與玩家2對戰,哪個玩家率先有連續5子連線,哪個玩家贏。組成 二維陣列 board row col 定義乙個row col的棋盤。主要邏輯 顯示棋盤,提示使用者下子,下子後判斷 1.顯示棋盤很簡單,慢慢湊棋盤就好 2.使用者下子,注意兩個條件 棋子在棋盤裡,下子位置未被占用。3.判斷是最...

C語言 實現網路對戰五子棋

碼雲 傳送門 該專案運用udp技術可以實現跨電腦對戰 在linux環境且可以正常上網的情況下開啟終端輸入命令 ifconfig 記錄本機inet位址 cd進入到專案目錄 輸入命令 gcc gobang send.c o send gcc gobang recv.c o recv 首先執行接收端,埠號...

C語言實現 五子棋遊戲

之前我們實現了關於電腦版的三子棋的遊戲玩法和思路,今天我們來實現五子棋的玩法和思路 和三子棋的很多思路很相似 define crt secure no warnings include include include define row 10 define col 10 char border r...