首先我們需要建立兩個原始檔分別為test.c與game.c前者為遊戲的測試,後者為遊戲相關函式的定義,同時建立相應的名為game.h的原始檔宣告相關函式。
接下來可以開始搭建主函式框架了,因為不管如何,都會至少進入一次遊戲,由玩家確定退出或繼續,因此,筆者在該處運用do-while迴圈實現基本框架。
int
main()
}while
(input)
;return0;
}
當玩家選擇進入遊戲後,通過game函式完成遊戲過程,首先需要建立乙個二維陣列模擬棋盤,通過陣列元素的改變實現人機對下。顯然,棋盤最初無子,通過棋盤初始化函式實現陣列空白棋盤,但是只是簡單的空格列印出來玩家必定一頭霧水,因此我們還需設計乙個合理且美觀的棋盤,如下:
以三行三列為例,將該棋盤的列印分為三組,除最後一組外,每一組包括兩行列印,一行為落子行,一行為分割行(最後一組無),而落子行又可分為3小組,除最後一小組外,每一小組又包括「 字元 |」的列印,同理分割行亦可分組。由此我們建立兩個迴圈變數分別控制行和列並於迴圈中判斷是否為尾行或尾列,最後不要忘記換行。該函式具體實現如下:
void
initboard
(char board[row]
[col]
,int row,
int col)
}void
displayboard
(char board[row]
[col]
,int row,
int col)
printf
("\n");
if(i < row -1)
}printf
("\n");
}}
void
menu()
完成對棋盤的列印後,接下來就可以落子了,以玩家方為 『*』 ,電腦方為 『#』 為例,由玩家輸入兩個有效座標將棋盤對應位置的元素賦值 ,此時須注意座標的合法性(是否越界)與合理性(是否被占用)。由於筆者愚鈍,遂只用生成隨機數的方式實現電腦落子,需注意的是在rand()呼叫前還需於主函式呼叫一次srand()函式,引數用強制型別轉換後的時間戳(引數為空指標)。由於需判斷座標的合理性與合法性,二者都可以採用while迴圈實現,當座標正確時break跳出迴圈。具體實現如下:
void
playermove
(char board[row]
[col]
,int row,
int col)
else
printf
("該位置已被占用,請重新輸入!\n");
}else
printf
("位置非法,請重新輸入!\n");
}}void
computermove
(char board[row]
[col]
,int row,
int col)
}}
落子成功後除了列印棋盤外就是判斷遊戲輸贏了,不難想到,每下完一步棋,總有四種狀態,分別是:玩家贏,電腦贏,平局,繼續。而除繼續外其它狀態都直接結束遊戲,由此可整個下棋過程置於迴圈中,建立函式判斷狀態,除繼續外都直接break跳出迴圈。而輸贏判斷則是判斷行,列,斜的元素是否相同且不等於空格,直接返回相應字元判斷即可。若無未發現誰贏則還需判斷棋盤是否已滿,若滿了,則該局為平局。該過程具體實現如下:
static
intisfull
(char board[row]
[col]
,int row,
int col)
}return1;
}char
checkwin
(char board[row]
[col]
,int row,
int col)
//列判斷
for(j =
0; j < col; j++
)//對角線判斷
if(board[0]
[0]== board[1]
[1]&& board[0]
[0]== board[2]
[2]&& board[0]
[0]!=
' ')
return board[0]
[0];
if(board[2]
[0]== board[1]
[1]&& board[0]
[2]== board[2]
[0]&& board[1]
[1]!=
' ')
return board[2]
[0];
//平局判斷if(
isfull
(board, row, col)==1
)return
'q';
else
return
'c';
}
感謝各位小夥伴看到最後,最後是三子棋遊戲實現的具體步驟
void
game()
if(ret ==
'*')
printf
("玩家贏了\n");
else
if(ret ==
'#')
printf
("電腦贏了\n");
else
printf
("平局\n");
}
三子棋 用c語言實現
問題描述 三子棋就是雙方落棋子,直到其中一方所落棋子行,列或者對角線連成一條線。或者棋下滿,這一種情況是平局。問題分析 三子棋就是和計算機你一步我一步來實現。首先,得先製作乙個選單提示使用者玩還是退出,這裡用switch語句較為合適一些 我們使用幾個標記,x表示人下的棋子,o表示計算機下的棋子 n表...
三子棋遊戲(用C語言實現)
一.具體實現 1.棋盤初始化 memset 2.棋盤的展示 3.電腦下棋 4.玩家下棋 5.判斷輸贏 三字連珠 判斷輸贏的時候有四種情況 1.玩家贏 2.電腦贏 3.平局 4.還沒下完,繼續遊戲。電腦下棋為o,玩家下棋為x,棋盤初始化為空 二.框架 原始檔main.c 用於存放主函式 include...
C語言實現三子棋
game.h define crt secure no warnings 1 ifndef game h define game h include include include include define rows 3 define cols 3 void init board char bo...