三字棋
是一種民間傳統遊戲,又叫九宮棋、圈圈叉叉、一條龍等。將正方形對角線連起來,相對兩邊依次擺上三個雙方棋子,只要將自己的三個棋子走成一條線,對方就算輸了。
思路:
**:標頭檔案件程式(函式宣告):
#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...