今天我們來程式設計實現乙個充滿童趣的小遊戲「三子棋」
先來說一下三子棋的規則:
三子棋又叫九宮棋、圈圈叉叉、一條龍等。
將正方形對角線連起來,或相對兩邊依次擺上三個雙方棋子,
總之只要將自己的三個棋子走成一條線,
對方就算輸了。
不用再過多解釋了,相信大家一定都玩過!
那麼,該如何用程式設計的方式實現它呢?
首先,我們建立專案後,要建立三個檔案
分別是標頭檔案game.h,用來宣告庫函式,儲存我們在程式設計中所自定義函式的函式名,以及巨集定義棋盤的寬高。
原始檔game.c檔案用於儲存我們所編寫的遊戲中所要用到的自定義的函式體。
而test.c中包含的是整個遊戲程式的大框架和遊戲選單程式。
我們先在test.c檔案中定義選單函式,並在主函式中呼叫
#define _crt_secure_no_warnings 1
#include #include void menu()
int main()
} while (input);
return 0;
}
除錯成功後是這樣子的:
接下來就是最重要的game()程式體了
首先要展出棋盤,
我們知道三子棋的棋盤是乙個3x3的正方形格仔,即九宮格。
在程式執行後可以是這樣子
我們在game.h檔案中定義寬高
#define row 3
#define col 3
接下來再game.c中寫出初始化陣列的程式,在遊戲一開始時將陣列中的所有元素初始為「 」(空格)
void initboard(char board[row][col], int row, int col)
這裡我們使用memset函式,記得加上宣告
#include
接著寫出展出棋盤的函式
void displayboard(char board[row][col], int row, int col)
else
}else}}
接著寫出電腦走棋的函式
電腦走的棋用』o』來表示
void computermove(char board[row][col], int row, int col)
}}
這裡我們用到了rand函式,令電腦在沒占用的位置隨機走一步棋
需要進行宣告
#include
並且需要在主函式下呼叫srand函式
同時宣告
#include
最後,需要定義乙個函式來判斷輸贏或平局
我們在構成獲勝條件時讓函式的返回值為棋子所用的字元
在函式的末尾我們還需要乙個用於判斷棋盤是否被佔滿的函式isfull(在下方說明),
佔滿時返回』q』否則返回『 』
當返回值為『 』時未出現獲勝方,則應繼續遊戲
當返回『q』時意味著沒有一方獲勝,而棋盤已被佔滿,即為平局
char iswin(char board[row][col], int row, int col)
; char ret = 0;
initboard(board, row, col);
displayboard(board, row, col);
while (1)
if (ret == 'x')
printf("玩家贏!\n");
else if (ret == 'o')
printf("電腦贏!\n");
else if (ret == 'q')
printf("平局\n");
displayboard(board, row, col);
}
三子棋函式完成!
你是否找回了童趣呢?
完整**: chess/sanzi chess
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...