小白 c語言編寫井字棋遊戲

2021-10-11 18:53:30 字數 3124 閱讀 3702

本人小白一枚,編寫井字棋遊戲純粹興趣使然,其中必有不當或錯誤之處,還望大佬們批評指正。

初始化棋盤

定義乙個字元陣列,對不同元素賦相應的值,構成棋盤邊框。

//初始化棋盤

void

inimap()

}

編寫其餘相關函式

除了棋盤初始化函式外,還需編寫落子函式勝負判斷函式棋盤列印函式等函式。還可以列印分隔線,輸出使更有條理。

在落子函式中,玩家輸入座標(r ,c) 或電腦隨機生成座標(r,c)後,需找到二維座標與一維陣列元素的對應關係:map[i]=map[(r-1)*14+(c+3)*2]。

勝負判斷函式中,只能用窮舉的方法,不知有無更好的方法,尤其對於棋盤更大,而且是五子棋時。

//玩家落子

void

gameon_1()

//電腦落子

void

gameon_2()

while

(map[

(r-1)*

14+(c+3)*

2]=='o'

||map[

(r-1)*

14+(c+3)*

2]=='x');

printf

("computer's(r,c):%d %d\n"

,r,c)

; map[

(r-1)*

14+(c+3)*

2]=chs_2;

times++

;check()

;prtmap()

;if(flag==1)

printf

("you lost!\n遊戲結束!\n");

separate()

;}//判斷勝負

void

check()

//列印棋盤

void

prtmap()

}//列印分隔線

void

separate()

編寫主函式

由於函式較多,考慮將變數定義為全域性變數,可不必考慮函式引數。

在主函式中先定義乙個判斷遊戲是否開始的變數start,遊戲開始後,迴圈執行落子函式(其餘函式已巢狀在其中)。鑑於迴圈次數不可知,用while迴圈,用全域性變數flag和times判斷。當flag和times不滿足條件時,及時跳出迴圈,以免陷入死迴圈。

注:這裡預設玩家先手,電腦後手。

#include

#define imax 49

int flag=

0,r=

0,c=

0,times=0;

char map[imax]

;char chs_1=

'o',chs_2=

'x';

intmain()

else

if(flag==0)

printf

("the game resulted in a tie!遊戲結束!\n");

}return0;

}

編譯結果

編譯時發現,手機上的c語言編譯器和電腦上的dev-c++均未報錯,但在code::blocks中會報錯:rand未宣告。

經查詢可知,rand()函式需要標頭檔案。

但為何dev-c++中可以不需要該標頭檔案?還請大佬賜教。

執行結果

源**:

#include

#define imax 49

int flag=

0,r=

0,c=

0,times=0;

char map[imax]

;char chs_1=

'o',chs_2=

'x';

//列印棋盤

void

prtmap()

}//初始化棋盤

void

inimap()

}//列印分隔線

void

separate()

//判斷勝負

void

check()

//開始遊戲

//玩家落子

void

gameon_1()

//電腦落子

void

gameon_2()

while

(map[

(r-1)*

14+(c+3)*

2]=='o'

||map[

(r-1)*

14+(c+3)*

2]=='x');

printf

("computer's(r,c):%d %d\n"

,r,c)

; map[

(r-1)*

14+(c+3)*

2]=chs_2;

times++

;check()

;prtmap()

;if(flag==1)

printf

("you lost!\n遊戲結束!\n");

separate()

;}intmain()

else

if(flag==0)

printf

("the game resulted in a tie!遊戲結束!\n");

}return0;

}

井字棋遊戲

三連棋遊戲 兩人輪流在印有九格方盤上劃 或 o 字,誰先把三個同一記號排成橫線 直線 斜線,即是勝者 程式提供隨機演算法和智慧型演算法兩種ai,隨機演算法使用隨機數隨意選擇棋盤上的位置,智慧型演算法通過對每隔落子位置權重的計算,選取最優的落子點。include include include inc...

井字棋遊戲

井字棋,英文名叫tic tac toe,是一種在3 3格仔上進行的連珠遊戲,和五子棋類似,由於棋盤一般不畫邊框,格線排成井字故得名。遊戲需要的工具僅為紙和筆,然後由分別代表o和x的兩個遊戲者輪流在格仔裡留下標記 一般來說先手者為x 任意三個標記形成一條直線,則為獲勝。py100天day7 井字棋這個...

C語言井字棋

include include include include 主要邏輯 使用者資料 棋盤 儲存使用者資料 正好對應3 3的乙個棋盤的九個資料點 每個裡面乙個x,y對應棋盤中的乙個填棋子的位置 struct point char map 14 14 struct point data 4 4 代表九...