三字棋程式(拓展 五子棋)

2021-08-18 08:44:30 字數 4516 閱讀 1056

三字棋  

是一種民間傳統遊戲,又叫九宮棋、圈圈叉叉、一條龍等。將正方形對角線連起來,相對兩邊依次擺上三個雙方棋子,只要將自己的三個棋子走成一條線,對方就算輸了。

思路:

**:標頭檔案件程式(函式宣告):

#define _crt_secure_no_warnings 1

#ifndef __sanziqi_h__

#define __sanziqi_h__

#define row 3

#define col 3

//初始化

void initborad(char arr[row][col], int row, int col);

//顯示棋盤

void display(char arr[row][col], int row, int col);

//電腦走

void computer(char arr[row][col], int row, int col);

//人走

void player(char arr[row][col], int row, int col);

//判斷是否還有空格

int check_full(char arr[row][col], int row, int col);

//判斷輸贏

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

#endif

子程式執行(函式定義):

#define _crt_secure_no_warnings 1

#include #include #include #include "三字棋.h"

//初始化

void initborad(char arr[row][col], int row, int col)

//顯示棋盤

void display(char arr[row][col], int row, int col)

printf("\n----------\n"); }}

//電腦走

void computer(char arr[row][col], int row, int col)

} }//人走

void player(char arr[row][col], int row, int col)

else

}else

}}//判斷是否還有空格

int check_full(char arr[row][col], int row, int col)

} return 1;

}//判斷輸贏

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

for (i = 0; i < col; i++) //某一列連3

if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2]) //右對角線\連3

return arr[1][1];

if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0]) //左對角線/連3

return arr[1][1];

return ' '; //如果沒有判斷出誰贏並且棋盤還沒滿,則繼續進行遊戲

}

主函式(main):

#define _crt_secure_no_warnings 1

#include #include #include "三字棋.h"

void menu()

void game()

player(arr, row, col); //玩家走

display(arr, row, col); //列印棋盤

if (is_win(arr, row, col) != ' ') //如果棋盤不為空的話,即判斷出誰贏或平局,就跳出迴圈

} while (is_win(arr, row, col) == ' '); //如果棋盤沒有滿,同時也沒有判斷出輸贏的話,繼續執行迴圈,否則跳出迴圈

if (is_win(arr, row, col) == 'o')

printf("玩家贏\n");

else if (is_win(arr, row, col) == 'x')

printf("電腦贏\n");

else if (is_win(arr, row, col) == 'q')

printf("平局\n");

拓展:五子棋

思路與三字棋程式差不多。只不過在寫輸贏判斷時,不能簡單的認為直接另0-5幾個元素相等判斷。

標頭檔案(函式定義):

#ifndef __wuziqi_h__

#define __wuziqi_h__

#define row 10

#define col 10

//初始化

void initboard(char arr[row][col], int row, int col);

//列印棋盤

void display(char arr[row][col], int row, int col);

//電腦下

void computer(char arr[row][col]);

//玩家下

void player(char arr[row][col], int row, int col);

//判斷輸贏

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

#endif

子程式(函式定義):

#define _crt_secure_no_warnings 1

#include "五子棋.h"

#include #include #include #include //初始化

void initboard(char arr[row][col],int row,int col)

//列印棋盤

void display(char arr[row][col],int row,int col)

printf("\n");

for (j = 0; j < 3 * (row+1); j++)

printf("-");

printf("\n"); }}

//電腦下

void computer(char arr[row][col]) }}

//玩家下

void player(char arr[row][col], int row, int col)

else

printf("你輸入的下標被佔,請重新輸入!\n");

} else

printf("越界了,請重新輸入!\n"); }}

//檢查是否滿

int check_full(char arr[row][col], int row, int col)

return 1;

}//判斷輸贏

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

} for (j = 0; j < col; j++)//一列連5 }

for (i = 0; i < row - 4; i++)//右對角線\連5 }

for (i = row; i > 4; i--)//左對角線/連5 }

return ' ';

}

主函式(main):

#define _crt_secure_no_warnings 1

#include #include #include #include "五子棋.h"

void menu()

void game()

while (is_win(arr, row, col) == ' ');

if (is_win(arr, row, col) == 'o')

printf("玩家贏\n");

else if (is_win(arr, row, col) == 'x')

printf("電腦贏\n");

else if (is_win(arr, row, col) == 'q')

printf("平局\n");

五子棋程式進展

其實在寫 下步計畫 時已經將五子棋介面和畫棋子問題解決了。這段時間一直在檢視自己的vb6五子棋原始碼,回憶原來的思路。這個程式放得時間很久了,我是知道的,但沒想到竟有近20年了!單機版,功能還是不少的,就是介面太粗糙了!另外,也學習了 清月連珠 原始碼和作者寫的博文。有空就開始寫棋型識別的 我沒有採...

下五子棋的bot 五子棋演算法

include include include include include include jsoncpp json.h c 編譯時預設包含此庫 define n 7 每個節點的分支數 以下為各棋型的識別碼 權重 define win 1 4000 define lose 2 4000 defi...

窮舉五子棋

本想窮舉五子棋必勝點,可惜呀,這貨窮舉太不現實了,寫出來了,根本沒辦法執行出來結果 include include include define rl 17 char s 14 int five rl rl void init void void print void int cs int i,in...