2.顯示棋盤
3.玩家選擇座標進行下棋
4.電腦進行隨機座標下棋
5.每次落子後進行判斷輸贏
6.列印當前棋盤
二、**介紹
總結###1.1主要用於函式宣告,以及對棋盤的大小進行初始化
標頭檔案的作用:
1.方便開發:包含一些檔案需要的共同的常量,結構,型別定義,函式,變數申明;
2. 使函式的作用域從函式宣告的位置開始,而不是函式定義的位置(實踐總結)
3 .提供介面:對乙個軟體包來說可以提供乙個給外界的介面(例如: stdio.h)。
**如下():
#include
#include
#include
#define row 3
#define col 3
//初始化棋盤
void
initboard
(char board[row]
[col]
,int row,
int col)
;//列印棋盤
void
displayboard
(char board[row]
[col]
,int row,
int col)
;//玩家下棋
void
playermove
(char board[row]
[col]
,int row,
int col)
;//電腦下棋
void
computermove
(char board[row]
[col]
,int row,
int col)
;//檢查輸贏
char
checkwin
(char board[row]
[col]
,int row,
int col)
;
對頭檔案中的宣告過的函式進行編寫,完成函式功能
這樣做的好處就是,對於未來想更改**時,只需要對該檔案中的函式塊進行更改,不需要耗費大量的時間在主函式中更改。
**如下(示例):
#define _crt_secure_no_warnings 1
#include
"game.h"
//實現初始化棋盤函式,將二維陣列中的每乙個元素先初始化為空格
void
initboard
(char board[row]
[col]
,int row,
int col)}}
//棋盤顯示函式
void
displayboard
(char board[row]
[col]
,int row,
int col)
//列印資料
//下面使用迴圈巢狀,可以避免上述出現不能列印多行多列的情況
int i =0;
for(i =
0; i < row; i++
)printf
("\n");
//列印分隔符
if(i < row -1)
printf
("\n");
//每一行列印完後要記得換行}}
}//玩家下棋
void
playermove
(char board[row]
[col]
,int row,
int col)
else
}else}}
//電腦下棋
void
computermove
(char board[row]
[col]
,int row,
int col)}}
//根據返回的字元判斷下列情況。
//電腦贏-『#』
//玩家贏-『*』
//平局-『q』
//繼續-『c』
////檢查輸贏,(沒有產生輸贏時)當遍歷陣列中所有元素後,若沒有發現存在空格,則判斷為平局。
intisfull
(char board[row]
[col]
,int row,
int col)
}return1;
}char
checkwin
(char board[row]
[col]
,int row,
int col)
}//判斷三列
int j =0;
for(j =
0; j < col; j++)}
//對角線
if(board[0]
[0]== board[1]
[1]&& board[1]
[1]== board[2]
[2]&& board[1]
[1]!=
' ')
if(board[0]
[2]== board[1]
[1]&& board[1]
[1]== board[2]
[0]&& board[1]
[1]!=
' ')
//平局if(
isfull
(board,row,col)==1
)//因為該語句位於char checkwin(char board[row][col], int row, int col)內部,所以使用row,col
//遊戲繼續
return
'c';
}
乙個程式中只含有乙個main函式,為了**看起來邏輯性強,只需要在main函式中呼叫game函式檔案中的函式塊。這樣就避免了main函式過長修改起來不方便
**如下(示例):
#define _crt_secure_no_warnings 1
#include
"game.h"
//選單函式
void
memu()
void
game()
displayboard
(board, row, col)
;//列印棋盤
//電腦下棋
computermove
(board, row, col)
;//在標頭檔案中需要宣告
ret =
checkwin
(board, row, col)
;//檢測輸贏
if(ret !=
'c')
displayboard
(board, row, col)
;//列印棋盤}if
(ret ==
'*')
printf
("玩家贏了\n");
else
if(ret ==
'#')
printf
("電腦贏了\n");
else
if(ret ==
'q')
printf
("平局\n");
displayboard
(board, row, col);}
intmain()
}while
(input)
;return0;
}
C語言三子棋實現
標頭檔案 ifndef game h define game h include time.h include stdlib.h include string.h include stdio.h define rows 3 define cols 3 void init board char arr...
三子棋的實現
三子棋的實現還是比較簡單的,在寫 之前,你先構建一下遊戲的架構,這樣寫的時候思路比較清晰,不容易思想卡克,很容易就完成。再乙個,你寫的 並不是孤芳自賞的,而是要拿出來給別人看,別人可以清楚地看懂你的 這才是好 我們先來看三子棋的架構如何實現,這就看你的思維邏輯能力了。下面 很清晰的展現了這一架構 v...
三子棋的實現
c語言實現三子棋 c語言實現三子棋關鍵是運用到二維陣列的知識,使用多檔案程式設計來實現這個程式,我們需要建立乙個標頭檔案,兩個原始檔來實現 main.c chess.c chess.h 如下圖所示,玩家的棋為字元 x 電腦的棋為字元 0 接下來,我們看一下具體的 實現 首先,要完成對頭檔案的宣告 i...