標頭檔案:game.h //包含函式各種宣告,巨集定義
原始檔:main.c //主要負責測試整個**
原始檔:game.c //包含各種函式的定義
game.h
#ifndef __game_h__
#define __game_h__
#include
#include
#include
#pragma warning (disable:4996)
#define row 3
//棋盤行
#define col 3
//棋盤列
#define player 'x'
//玩家的棋子
#define computer 'o'
//電腦的棋子
#define next 'n'
//未分勝負且棋盤未滿 繼續
#define full 'f'
//棋盤下滿,平局
void
menu()
;//選單
void
play
(int
* quit)
;//開始遊戲
void
inti_board
(char
[col]
,int row,
int col)
;//初始化棋盤
void
show_board
(char board[
][col]
,int row,
int col)
;//顯示棋盤
void
playermove
(char board[
][col]
,int row,
int col)
;//玩家走棋
void
computermove
(char board[
][col]
,int row,
int col)
;//電腦走棋
char
judge
(char board[
][col]
,int row,
int col)
;//判斷
intfirst_step()
;//誰先走
#endif
game.c
#include
"game.h"
void
menu()
//初始棋盤全部置空(空格)
void
init_board
(char board[
][col]
,int row,
int col)}}
void
play
(int
* quit)
if(who_win == computer)
if(who_win == full)
computermove
(board, row, col)
;//電腦走棋
show_board
(board, row, col)
;//顯示棋盤
who_win =
judge
(board, row, col)
;//判斷
if(who_win == player)
if(who_win == computer)
if(who_win == full)
}else
if(who_win == computer)
if(who_win == full)
playermove
(board, row, col)
;//玩家走棋
show_board
(board, row, col)
;//顯示棋盤
who_win =
judge
(board, row, col)
;//判斷
if(who_win == player)
if(who_win == computer)
if(who_win == full)}}
while(1
);printf
("是否繼續: 是:1 否:0\n");
scanf
("%d",&
(*quit));
}while
(*quit);}
void
show_board
(char board[
][col]
,int row,
int col)
printf
("\n----------------\n");
}}void
playermove
(char board[
][col]
,int row,
int col)
else
}while(1
);}void
computermove
(char board[
][col]
,int row,
int col)
else}}
}char
judge
(char board[
][col]
,int row,
int col)
}for
(int i =
0; i < col; i++)}
if((board[1]
[1]== board[0]
[0]&& board[1]
[1]== board[2]
[2])
||(board[1]
[1]== board[0]
[2]&&board[1]
[1]== board[2]
[0])
)for
(int i =
0; i < row; i++)}
}return
'f';
}int
first_step()
else
printf
("電腦先\n");
return result;
default
:break;}
}
main.c
#include
"game.h"
intmain()
}while
(!quit)
;}
程式有乙個主函式和若干自定義函式。其分別為: 選單列印函式、棋盤列印函式、初始化棋盤函式、誰先走函式、電腦下棋函式、玩家下棋函式、贏家判斷函式。
玩家的棋為字元 『x』,電腦的棋為字元 『0』。
1.先用二維陣列構造乙個棋盤,這個棋盤各個位置需要初始化為字元零,定義 init_borad()函式來實現:
2.初始化棋盤之後我們需要在很多地方列印棋盤,定義show_borad()函式來實現:
3.確定誰先走,用int first_step()函式實現:
4.玩家下棋,我們需要輸入座標來確定你要走的位置,定義 void playermove(char board[col], int row, int col)函式來實現:
5.電腦下棋,電腦的兩個座標值分別由產生隨機數的函式rand()來生成,產生的座標錯誤還得迴圈產生,直到正確為止,定義void computermove(char board[col], int row, int col))函式來實現:
6.玩家和電腦每次下完棋之後都要檢測輸贏,定義char judge(char board[col], int row, int col) 函式來實現,這個函式的原理是:通過檢測每行,每列,和兩個對角線的所有字元是否為三個相同的字元,如果是就返回那三個相同的字元,這個函式無非就四個結果,(1)玩家贏,(2)電腦贏,(3)棋盤沒滿可以繼續,(4)棋盤滿了,但未分出勝負,平局。各自的情況返回各自的符號用於之後的判斷:
我們可以確定乙個大的思路,將各個函式的執行放在遊戲執行函式game函式中,將game函式放在迴圈中以便我們遊戲結束後還可以玩,還要選擇判斷繼續玩遊戲還是退出遊戲,然後將game函式放在乙個main()鐘函式實現即可
小白, 能力有限, 若有缺陷,請指教。
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...
三子棋C語言實現
要寫這個三子棋的程式我們分為三個部分首先是宣告函式的標頭檔案,我們分別宣告了五個函式,初始化棋盤,列印棋盤,玩家走,電腦走,檢查是否贏了。之後我們寫測試 然後分別來實現這五個函式 define crt secure no warnings 1 ifndef game h define game h ...
C語言實現三子棋
實現三子棋程式,只要我們能夠理清楚思路,就可以知道其實它的做法並不難,重點在於實際寫 時需要多關注細節。這裡我們可以寫完一塊就可以立馬執行程式檢查是否如我們所想的效果出現,如若不是便可立即查錯糾錯。如下。test.c include include include include game.h vo...