test.c:放置主函式(main())和選單函式(menu())和遊戲函式(game())。
game.c:放置game()裡面的相應操作的函式,例如玩家移動(playermove(board)),電腦移動(computermove(board)),以及每一次移動之後列印當前棋盤內容的函式(displayboard(board))等等。由於這些函式內容較多,所以單獨放在乙個標頭檔案裡實現。
game.h:放置game.c裡面函式的宣告,以及需要用到的庫函式的標頭檔案(stdio.h,stdlib.h,time.h),在test.c和game.c中引用即可(#include " game.h ")
1.主函式(main () )
遊戲的大體執行流程
int
main()
}while
(input)
;return0;
}
2.選單函式(menu())玩家選擇玩遊戲或者退出
void
menu()
3.遊戲函式(game () )三子棋遊戲的操作步驟,裡面涉及到的函式會在game.c說明
void
game()
;//初始化棋盤內容全部為空格
initboard
(board)
;//列印棋盤
displayboard
(board)
;//下棋
//下棋過程
while(1
)//下棋結束,判斷誰贏了if(
'*'== ret)
printf
("玩家贏\n");
elseif(
'#'== ret)
printf
("電腦贏\n");
elseif(
'e'==ret)
printf
("平局\n");
}
ps:裡面的p陣列指標,實參為board,即棋盤第一行陣列的位址
1. initboard(初始化棋盤內容)
//初始化棋盤內容全部為空格
void
initboard
(char
(*p)[3
])}}
2.displayboard(展示棋盤內容)開始時的棋盤是這樣的
3.playermove(玩家下子)玩家下的子用*表示,需要注意兩點1.下的子是否在棋盤座標內 2.該座標是否已經被下子。
//玩家下子(*)
void
playermove
(char
(*p)[3
])else
}else
}}
4.computermove(電腦下子)電腦下的子用#表示,通過限定rand函式得到的下子座標肯定是在棋盤內了,只需考慮該座標是否已經被下子。
//電腦下子(#)
void
computermove
(char
(*p)[3
])}}
5.iswin(判斷輸贏)和isfull(判斷棋盤是否已經被下滿)判斷誰贏:棋盤三行或者三列或者兩條對角線都是同一種棋子,誰贏了就返回他所下的棋子的符號(*或者#)
要是都沒贏的話只剩兩種情況平局(棋盤下滿了)和繼續(棋盤沒下滿),通過isfull來判斷當前棋盤是否滿了來決定是否繼續下棋。
//判斷棋盤是否已經下滿
//下滿返回1
//沒下滿返回0
intisfull
(char
(*p)[3
])}return1;
}//判斷輸贏
//玩家贏了返回'*'
//電腦贏了返回'#'
//平局返回'e'
//繼續返回'c'
char
iswin
(char
(*p)[3
])//豎三列
for(i =
0; i <
3; i++
)//兩個對角線
if(p[0]
[0]== p[1]
[1]&& p[1]
[1]== p[2]
[2]&& p[0]
[0]!=
' ')
return p[0]
[0];
if(p[0]
[2]== p[1]
[1]&& p[1]
[1]== p[2]
[0]&& p[0]
[2]!=
' ')
return p[0]
[2];
//判斷平局還是繼續(電腦和玩家都沒贏。此時棋盤滿了就平局,沒滿就繼續)if(
isfull
(p))
return
'e';
else
return
'c';
}
包括函式的宣告和需要用到的c語言的庫函式
#include
#include
#include
void
initboard
(char
(*p)[3
]);void
displayboard
(char
(*p)[3
]);void
playermove
(char
(*p)[3
]);void
computermove
(char
(*p)[3
]);char
iswin
(char
(*p)[3]);
C語言 三子棋遊戲
用c語言第一次完成三子棋遊戲,感觸特別深刻。在寫 中我明白了,思路還有 風格的重要性,在這次 中發現,我們整理好邏輯想法 對寫 就不會有太多問題了 如下,若有改進的地方,還希望大家可以多多指點。include include include include define row 3 define c...
C語言三子棋遊戲
三子棋是一種只需要行 列 斜中任意一種情況三個相同棋子相連便勝利的遊戲。本程式中,要求玩家與電腦pk,棋盤座標用乙個二維陣列儲存起來,玩家通過鍵盤輸入座標落子,電腦通過srand和rand函式隨機產生座標落子。每次落子都需要判斷遊戲是否結束。1.遊戲選單,供使用者進入遊戲 2.建立初始化棋盤 3.列...
C語言 三子棋遊戲
今天,我們用c語言來寫乙個三子棋遊戲。在整個工程裡建立了三個檔案,分別為main.c game.c game.h,其中 main.c 用於放整個遊戲的框架 game.c與game.h組成玩遊戲的模組。如下 game.h define crt secure no warnings 1 include ...