c語言小程式之三子棋

2021-08-11 03:22:27 字數 2419 閱讀 4474

第一次寫這麼長的程式,再此總結一下。

首先考慮test.c的功能:

1)main函式內實現乙個遊戲介面,用乙個迴圈可以讓遊戲一直迴圈進行,並且再迴圈內部使用分支用來選擇開始遊戲or退出遊戲。

2)寫乙個menu函式,作用是列印遊戲選單介面。

3)寫乙個game函式,主要在函式內部呼叫各個步驟的函式,實現乙個玩遊戲的過程,並且輸出誰贏誰輸。

game.c內部主要實現各個test.c裡各個函式:

1)初始化棋盤,再次全部初始化為空格。(使用memset庫函式)

2)展示即列印該棋盤。(其實就是利用迴圈將這個棋盤畫出來)

3)玩家落子,在此落子之前需要判斷該格仔是否為空,為空才能下子,並且判斷是否為非法座標(即x,y都有限定範圍)

4)電腦移動,設定乙個隨機數生成器,隨機座標在3*3以內隨機落子,同上一步一樣,每次落子之前需要判斷該座標是否為空。

5)判斷輸贏。即每一行都相等且不為空格(或每一列,或兩個對角線)此時給乙個返回值,建議再此用落在該座標上的標誌(即你下的棋子)作為返回值,在主函式內只需要判斷返回值是你下的棋子還是電腦下的棋子就可以判斷誰輸誰贏了,此時還要判斷平局的可能性。

在判斷每行(每列,每個對角線)之後加乙個對棋盤的判斷,判斷棋盤是否全滿,全滿才能有輸家贏家之分。

附上**(僅供參考):

#define _crt_secure_no_warnings 1

#include

#include

#include

#include "game.h"

void menu()

void game()

if (ret == 'a')

else

if (ret == 'c')

else

if (ret == 'q')

display_board(board, rows, cols);

}int main()

} while (button);

system("pasue");

return

0; }

#define _crt_secure_no_warnings 1

#include "game.h"

void init_board(char board[rows][cols], int row, int col)

void display_board(char board[rows][cols], int row, int col)

printf("\n");

for (i = 0; i < row; i++)}}

void player_move(char board[rows][cols], int row, int col)

else

}else}}

void computer_move(char board[rows][cols], int row, int col)}}

static int is_full(char board[rows][cols], int row, int col)

}return 1;

}char check_win(char board[rows][cols], int row, int col)

}for (i = 0; i < row; i++)

}if ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2]) && (board[1][1] != ' '))

if ((board[2][0] == board[1][1])

&& (board[1][1] == board[0][2]) && (board[1][1] != ' '))

if (is_full(board, row, col))

return ' ';

}

說一下我在寫這個程式時遇到的一些問題和總結到的經驗。

首先再寫之前應當構思我該寫那些函式他們分別在那個.c檔案中,最好拿紙筆記下來,函式名以及他們各自實現什麼功能。

並且在寫程式時應當從主函式main函式開始寫,逐步一點點向外擴充套件。寫函式主要是乙個實現模組化的步驟,每個模組單獨構思寫出來就可以。但我在寫程式時需要一些問題,我在寫了部分函式之後,如果我想要測試一下他們的功能是否正確實現了呢?

還有乙個來自初學者的建議,再寫關於邏輯的判斷語句時括號真的很重要….希望自己以後不要再犯這麼低階的錯誤啦!

最後附上遊戲截圖:

C語言 三子棋

使用工具 vs2017 分為三部分 game.h 函式宣告 game.c 實現函式功能 test.c main函式 棋盤為3 3的矩陣 規則 1.每回合玩家與電腦只能放置一枚棋子 2.已有棋子的位置不能再放置棋子 3.若有一方的三枚棋子可連城一條直線,則勝利 4.若棋盤棋子已經布滿,但是雙方沒有一方...

三子棋(c語言)

今天做了乙個三子棋小遊戲,寫了好久卻只完成了一部分,先把這部分分享給大家吧!望大家給點建議和指導,最後判斷輸贏部分到現在還沒構思出來,嘿嘿!game.h define crt secure no warnings 1 ifndef game h define game h include inclu...

c語言 三子棋

c語言三子棋 來完善一下三子棋 game.h define crt secure no warnings 1 ifndef game h define game h include include include include define row 3 define col 3 void menu...