C語言小程式 用二維陣列實現三子棋

2021-09-26 01:31:22 字數 2876 閱讀 9323

三子棋想必對於大家來說並不陌生,三子棋是一種民間傳統遊戲,又叫九宮棋、圈圈叉叉、一條龍、井字棋、田字棋等。將正方形對角線連起來,相對兩邊依次擺上三個雙方棋子,只要將自己的三個棋子走成一條線,對方就算輸了。但是,有很多時候會出現和棋的情況。

利用c語言編寫三子棋的**,相對來說比較簡單,三子棋其實就可以看作是以個三行三列的二維陣列,然後對其裡面的每個元素進行賦值。因此我們首先需要理清楚三子棋完成的思路。

1.首先我們需要乙個棋盤,所以需要乙個showboard()函式來列印棋盤。『x』為玩家落子,『o』為電腦落子。

2.玩家落子的時候,以輸入座標的方式來進行,用playmove()函式實現;而電腦落子的話,我們就直接採用隨機數的方式完成電腦落子,用computermove()函式實現。

3.落子完了之後,我們就需要判定當前棋局的狀況了。當前棋局的狀況可以能有以下幾種情況:(1)玩家獲勝;(2)電腦獲勝;(3)和棋。這三種情況都是遊戲結束時的情況,當然還有一種就是棋局沒有結束,玩家電腦繼續落子。判定當前棋局狀況的話我們就用乙個iswin()函式來完成。

原始碼:game.h用來對我們需要使用的函式進宣告

#ifndef _game_h_

#define _game_h_

#include#include#include#includevoid initboard(char board[3], int row, int col);

void showboard(char board[3], int row, int col);

void playmove(char board[3], int row, int col);

char iswin(char board[3], int row, int col);

void computermove(char board[3], int row, int col);

#endif

test.c用來存放主函式,列印選單,呼叫game

#define _crt_secure_no_warnings 1

#include"game.h"

void menu() //列印選單

void game() //呼叫game模組的函式

; initboard(board, 3, 3);

showboard(board, 3, 3);

while (1)

showboard(board, 3, 3);

computermove(board, 3, 3);

ret = iswin(board, 3, 3);

if (ret != ' ')

showboard(board, 3, 3);

} if (ret == 'q')

else if (ret == 'x')

else if (ret == 'o') }

int main() //主函式

} while (input);

return 0;

}

game.c用來對我們的函式進行定義

#define _crt_secure_no_warnings 1

#include "game.h"

void initboard(char board[3], int row, int col) // 建立陣列,然後初始化陣列為空格 }}

void showboard(char board[3], int row, int col) //列印棋盤

}printf("\n");

if (i < row - 1)

}printf("\n");

} }}void playmove(char board[3], int row, int col) //玩家落子

else

}else

}}static int isfull(char board[3], int row, int col) // 判斷棋盤是否已滿,static防止被呼叫

} }return 1;//滿返回1

}char iswin(char board[3], int row, int col) //判斷誰贏

//列if (board[0][i] == board[1][i] && board[1][i] == board[2][i]

&& board[0][i] != ' ')

//對角線

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][0] != ' ')

//平局

if (isfull(board, row, col) == 1)

}//即沒有贏,也沒有平局

return ' ';

}void computermove(char board[3], int row, int col) //電腦落子

}}

程式執行介面:

玩家落子電腦落子

玩家勝出:

C語言二維陣列應用 三子棋

函式宣告寫在標頭檔案game.h中 ifndef game h define game h define row 3 include includevoid initboard char board row int row,int col,char set void showboard char b...

用二維陣列實現簡單三子棋遊戲

用二維陣列實現簡單三子棋遊戲 環境 vs2013 define crt secure no warnings define hang 3 define lie 3 include include include void menu 選單 qipan2 int a,int b 初始話棋盤格仔 prin...

c語言小程式之三子棋

第一次寫這麼長的程式,再此總結一下。首先考慮test.c的功能 1 main函式內實現乙個遊戲介面,用乙個迴圈可以讓遊戲一直迴圈進行,並且再迴圈內部使用分支用來選擇開始遊戲or退出遊戲。2 寫乙個menu函式,作用是列印遊戲選單介面。3 寫乙個game函式,主要在函式內部呼叫各個步驟的函式,實現乙個...