C語言小遊戲1 三子棋

2021-10-25 08:24:49 字數 4384 閱讀 1304

一、多檔案思維

二、遊戲總體思路與函式設計實現

三、多檔案**清單

我們使用多檔案實現三子棋遊戲,培養多檔案思維,分別為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...