C語言三子棋的實現思路到過程詳解
一、三子棋小遊戲的簡單介紹
要說大家都很熟悉的一個小遊戲,三子棋算是其中一個了。相信大家都玩過三子棋小遊戲,在這裡我還是給大家介紹簡單的遊戲規則:
- 一次只能下一個棋子;
- 玩家下完棋子後,電腦下棋子;
- 不能再重複的位置上下棋子;
- 不管是玩家還是電腦,誰先達到三個棋子連線在一起的時候獲勝;
- 三個棋子的連線包括:橫三個、豎三個、斜三個。
當然,熟悉規則後我們會有一個大概的瞭解了,那麼三子棋遊戲的思路及程式碼到底是怎麼實現的呢?接下來我給大家一一詳細解析一下。
二、三子棋的思路及程式碼實現
1、列印遊戲選單
我們實現遊戲之前,應該想到先給玩家提供一個選單。這個選單的功能就是幫助使用者選擇是否要開始遊戲。選單的實現我們可以單獨自定義一個函數,我們用到選單的時候呼叫此函數即可。
void meau() { printf("*********************n"); printf("***** 1.play *****n"); printf("***** 0.exit *****n"); printf("*********************n"); }
通過上面的程式碼我們可以很容易看出,選擇‘1’是開始遊戲,選擇‘0’是退出遊戲。
2、選擇是否開始遊戲
提到選擇,我們這裡可以聯想到switch-case語句。由上面的選單可知:選擇‘1’是開始遊戲,選擇‘0’是退出遊戲。當然我們不能排除不小心輸入錯誤,所以這裡我們還要考慮到選擇錯誤的情況下要給出相應的提示。當選擇錯誤時,給出提示且重新選擇,同時再把選單列印出,提供玩家選擇。那怎麼實現重新選擇呢?我們這裡其實可以使用do-while()語句。我們先來看一下程式碼的實現。
void test() { int input = 0; do { meau(); printf("請選擇是否要開始遊戲:"); scanf("%d", &input); switch (input) { case 1: game(); //開始三子棋遊戲 break; case 0: printf("退出遊戲n"); break; default: printf("選擇錯誤n"); } } while (input); }
我們看上面的程式碼是放在的一個自定義的test()函數中,我們只要再主函數中呼叫一下即可。上面的程式碼很巧妙,當我們輸入‘1’的時候,開始遊戲。當遊戲結束時,迴圈繼續。其實是實現了一個玩完一局可以反覆玩的效果。當我們輸入‘0’的時候,迴圈結束,就是相當於結束遊戲了。當我們輸入錯誤時,迴圈仍然繼續,再次列印選單提供我們選擇。這也是 do-while()語句的巧妙之處。
3、建立並且初始化棋盤
3.1、建立棋盤
建立棋盤很簡單,我們這裡需要的是一個二維陣列。那麼棋盤的大小呢?我們首先想到的是3x3的棋盤——char board[3][3]。那要是想改成5x5的棋盤呢?我們是把整個工程中的board[3][3]改成board[5][5]嗎?這樣太麻煩了,當然也不現實。這裡我們可以參照#define 定義的識別符號常數。這時候我們可以寫成char board[ROW][COL]。改變大小的時候只需要改變#define 定義的識別符號常數的值就行。
#define ROW 3 #define COL 3 char board[ROW][COL];
3.2、初始化棋盤
我們這裡將初始化棋盤放在一個init_board(board, ROW, COL)函數中。為什麼要初始化棋盤呢?當我們不初始化的時候,期盼中的每個位置放的是‘