用C語言實現簡單的三子棋

2021-08-20 00:16:17 字數 4144 閱讀 9463

首先我們得先有個進入遊戲選單的頁面,用簡單的幾句printf語句組成就好。

void menu()

再用乙個接收器來接受並進入遊戲中,這裡用到乙個do-while迴圈來讓我們反覆進行遊戲直到選擇退出。

int main() 

} while (choice);

return 0;

}

當使用者選擇1時則進入遊戲,選擇0時則推出遊戲。而選擇非0非1時則會報錯需要使用者重新選擇。

而其中最重要的還是得有乙個函式來實現這個遊戲,也就是我們所建立的game()函式。三子棋的實現也就這其中。

在game()函式中首先我們得建立乙個3*3的乙個陣列

char board[row][col] = ;

然後就是將其初始化將陣列中的元素全部賦值成空格『 『。

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

}}

然後就是列印出我們的棋盤,建立乙個函式來初始化我們的函式棋盤。

void print_board(char board[row][col], int row, int col)

}

棋盤生成之後就要開始下棋了。首先是我們使用者先走,但由於我們平時的習慣輸入的下標是從1開始,所以我們在**中稍微改動小使其輸入時下標為(1 ,1)在函式中的實際下標為(0 , 0)。

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

else printf("該位置已經有棋子,請重新輸入.\n");

} else printf(" 輸入錯誤,請重新輸入.\n");

}}

緊接著是電腦走下一步,而我們採用產生隨機數,由電腦產生乙個隨機座標,然後在陣列中放入『x'作為電腦的棋子。

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

}}

而雙方走完之後我們就需要乙個依據來判斷哪一方 取得遊戲勝利,而將判斷的標準放在乙個is_win()函式中來檢測並放回乙個值來判斷輸贏。

char is_win(char board[row][col], int row, int col)

for (i = 0; i < col; i++)

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

return board[1][1];

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

return board[1][1];

else if (is_full(board, row, col))

return 'q';

return ' ';

}

當然也有可能出現平局這時候我們只需要判斷棋盤是不是已經滿了且沒有一方獲勝則為平局。

為了防止它被其他的原始檔使用對遊戲的判斷錯誤所以在前面加上static。

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

} return 1;

}

就此game()函式需要的內容我們就列印出來了,現在就只需要我們根據邏輯來排列順序將乙個步驟乙個步驟列印出來就可以了。

void game()

; init_board(board, row, col);

print_board(board, row, col);

while (1)

print_board(board, row, col);

if (ret == 'x')

else if (ret == '0')

else if (ret == 'q')

}

最後就是組成遊戲的三個部分:

第一部分:遊戲的標頭檔案

#ifndef __game_h__

#define __game_h__

#include#include#include#include#define row 3

#define col 3

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

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

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

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

char is_win(char board[row][col], int row, int col);

#endif

第二部分:game()中的函式部分

#include"test.h"

void print_board(char board[row][col], int row, int col)

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

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

else printf("該位置已經有棋子,請重新輸入.\n");

} else printf(" 輸入錯誤,請重新輸入.\n"); }}

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

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

} return 1;

}char is_win(char board[row][col], int row, int col)

for (i = 0; i < col; i++)

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

return board[1][1];

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

return board[1][1];

else if (is_full(board, row, col))

return 'q';

return ' ';

}

第三部分:遊戲的測試部分

#include#include"test.h"

void menu()

void game()

; init_board(board, row, col);

print_board(board, row, col);

while (1)

print_board(board, row, col);

if (ret == 'x')

else if (ret == '0')

else if (ret == 'q') }

int main()

} while (choice);

return 0;

}

**醜陋,還望多多包涵。

希望得到大家得指點並幫助

我進行優化。

三子棋 用c語言實現

問題描述 三子棋就是雙方落棋子,直到其中一方所落棋子行,列或者對角線連成一條線。或者棋下滿,這一種情況是平局。問題分析 三子棋就是和計算機你一步我一步來實現。首先,得先製作乙個選單提示使用者玩還是退出,這裡用switch語句較為合適一些 我們使用幾個標記,x表示人下的棋子,o表示計算機下的棋子 n表...

用C語言實現三子棋

首先我們需要建立兩個原始檔分別為test.c與game.c前者為遊戲的測試,後者為遊戲相關函式的定義,同時建立相應的名為game.h的原始檔宣告相關函式。接下來可以開始搭建主函式框架了,因為不管如何,都會至少進入一次遊戲,由玩家確定退出或繼續,因此,筆者在該處運用do while迴圈實現基本框架。i...

C語言實現簡單的三子棋

一 主要思想 1 建立乙個3 3的棋盤 使用字元陣列 2 初始化棋盤 用空格填充 3 列印棋盤 使其有可見的邊框 4 玩家落子,用x表示 檢驗是否越界,是否已經落子,是否贏 5 電腦落子,用o表示 檢驗是否已經落子,是否贏 注 電腦在有效範圍內隨機落子,使用當前時間戳設定隨機種子即srand tim...