一、多檔案思維
二、遊戲總體思路與函式設計實現
三、多檔案**清單
我們使用多檔案實現三子棋遊戲,培養多檔案思維,分別為game.h、game.c和main.c
三子棋遊戲的主要思路為:
玩家通過選單進入遊戲->顯示棋盤->玩家移動->判斷輸贏->電腦移動->判斷輸贏
上述函式封裝在game.c檔案中
void
menu()
棋盤用乙個二維陣列來儲存並顯示,對於沒有下過棋子的位置統一用』空格儲存,由於電腦的解析度不同,棋盤的形狀需要不斷除錯。
void
showboard
(char board[
][col]
,int row,
int col)
printf
("\n----------------\n");
}}
玩家棋子用x表示,在輸入位置後需要判斷落子的地方是否合法,主要為如下情況
1.越界,即超出棋盤範圍,
2.落子位置被占用,即該位置已經存在玩家棋子或者電腦棋子
void
playermove
(char board[
][col]
,int row,
int col)
//需要注意使用者輸入的座標從1開始,而程式定義的棋盤座標從0開始
else
if(board[x -1]
[y -1]
!=' '
)else
}}
char
judge
(char board[
][col]
,int row,
int col)
}//2.遍歷每一列是否三子成珠
for(
int j =
0; j < col; j++)}
//3.遍歷九宮格對角線是否三子成珠
if(board[0]
[0]== board[1]
[1]&& \
board[1]
[1]== board[2]
[2]&& \
board[0]
[0]!=
' ')
if(board[0]
[2]== board[1]
[1]&& \
board[1]
[1]== board[2]
[0]&& \
board[0]
[2]!=
' ')
//4.沒有出現三子成珠,且棋盤還有空位,繼續下棋
for(
int i =
0; i < row; i++)}
}//5.上述條件都不滿足,和棋
return draw;
}
電腦落子我們使用隨機落子,如果想要更加智慧型可以採取一些策略
void
computermove
(char board[
][col]
,int row,
int col)
}}
void
game()
computermove
(board, row, col)
; result =
judge
(board, row, col)
;//出現三子成珠情況,跳出迴圈,給出輸贏結果
if(result != next)
}while(1
);//列印輸贏結果
if(p_color == result)
else
if(c_color == result)
else
//此處再次呼叫顯示棋盤函式,用於顯示最終的落子情況,如果不呼叫該函式,會出現看不到最後一次落子的棋盤
showboard
(board, row, col)
;}
用於存放實現遊戲的所有庫函式和函式宣告,以及一些巨集定義方便後續更改
使用ifndef/define/endif防止標頭檔案的重複包含和編譯。
#ifndef _game_h
#define _game_h
#include
#include
#include
#pragma warning(disable:4996)
//定義棋盤大小
#define row 3
#define col 3
//定義玩家與電腦棋子顏色
#define p_color 'x'
#define c_color 'o'
#define next 'n'
#define draw 'd'
void
menu()
;void
game()
;#endif
用於存放實現遊戲的所有函式定義
#include
"game.h"
void
menu()
void
showboard
(char board[
][col]
,int row,
int col)
printf
("\n----------------\n");
}}void
playermove
(char board[
][col]
,int row,
int col)
//需要注意使用者輸入的座標從1開始,而程式定義的棋盤座標從0開始
else
if(board[x -1]
[y -1]
!=' '
)else}}
char
judge
(char board[
][col]
,int row,
int col)
}//2.遍歷每一列是否三子成珠
for(
int j =
0; j < col; j++)}
//3.遍歷九宮格對角線是否三子成珠
if(board[0]
[0]== board[1]
[1]&& \
board[1]
[1]== board[2]
[2]&& \
board[0]
[0]!=
' ')
if(board[0]
[2]== board[1]
[1]&& \
board[1]
[1]== board[2]
[0]&& \
board[0]
[2]!=
' ')
//4.沒有出現三子成珠,且棋盤還有空位,繼續下棋
for(
int i =
0; i < row; i++)}
}//5.上述條件都不滿足,和棋
return draw;
}void
computermove
(char board[
][col]
,int row,
int col)}}
void
game()
computermove
(board, row, col)
; result =
judge
(board, row, col)
;//出現三子成珠情況,跳出迴圈,給出輸贏結果
if(result != next)
}while(1
);//列印輸贏結果
if(p_color == result)
else
if(c_color == result)
else
//此處再次呼叫顯示棋盤函式,用於顯示最終的落子情況,如果不呼叫該函式,會出現看不到最後一次落子的棋盤
showboard
(board, row, col)
;}
實現三子棋遊戲的主選單和實現步驟
#include
"game.h"
intmain()
}printf
("byebye!\n");
system
("pause");
return0;
}
C語言小遊戲 三子棋
三子棋小遊戲 三子棋的實現是當玩家或者電腦自身所下的位置在同一條線時,判斷輸贏。在編寫該遊戲 時應注意到以下幾個方面的問題 1 首先應該列印棋盤以及初始化棋盤 2 在玩家和電腦落子之後均要列印一次棋盤 3 每次落子之前列印棋盤後,均要判斷是否已產生贏家 4 判斷輸贏之後,應當判斷此時棋盤是否已滿 5...
C語言小遊戲 三子棋
c語言三子棋小遊戲,通過二維陣列構建棋盤.利用七個個函式 void init 構建棋盤 void meau 遊戲選單 void display 構建棋盤 void player 玩家進行 void computer 電腦進行 char iswin 判斷輸贏 int isfull 判斷棋盤是否下滿 來...
C語言小遊戲 三子棋
將整個 分裝在三個檔案中,分別為原始檔 test.c game.c game.h 如下 game.h ifndef game h define game h define row 3 define col 3 定義棋盤行數和列數 include include include include voi...