资源简介

程设实验上写的一个小程序,五子棋,用的评估分值法(甚至没有深度搜索)。写着玩的,比较弱智,人机赢不了我。有和我一样刚接触代码的,需要的可以做个参考。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
int board[15][15] = { 0 };
int res[2][2];
int F;
#define cfive  10000000
#define pfive   1000000
#define clfour   100000
#define plfour    40000
#define cdfour     1000
#define clthree     600
#define pdfour      800
#define plthree     500
#define cdthree      30
#define cltwo       100
#define pdthree      20
#define pltwo        10
#define pdtwo         1
#define cdtwo         1
#define diepos        0
//各个情形的权重
long int weight(int numint statechar c){
int weight = 0;
switch (c) {
case ‘c‘:
switch (state) {
case 2:switch (num) {
case 1:break;
case 2:weight = cltwo;  break;
case 3:weight = clthree;   break;
case 4:weight = clfour; break;
case 5:weight = cfive; break;
}break;
case 1:switch (num) {
case 1:break;
case 2:weight = cdtwo; break;
case 3:weight = cdthree; break;
case 4:weight = cdfour; break;
case 5:weight = cfive;break;
}break;
case 0:if (num == 5) weight = cfive;break;
default:break;
}break;
case ‘p‘:
switch (state) {
case 2:switch (num) {
case 1:break;
case 2:weight = pltwo; break;
case 3:weight = plthree; break;
case 4:weight = plfour; break;
case 5:weight = pfive; break;
}break;
case 1:switch (num) {
case 1:break;
case 2:weight = pdtwo; break;
case 3:weight = pdthree;break;
case 4:weight = pdfour; break;
case 5:weight = pfive;break;
}break;
case 0:if (num == 5) weight = pfive;break;
default:break;
}break;
default:weight = 0; break;
}
return weight;
}
//打印当前棋盘白子为负,黑子为正
void print_board() {
int i = 0;
int j = 0;
int k = 0;
int s = 0;
for (i = 0; i < 15; i++)
printf(“   %c   “ i + 97);
printf(“\n“);
for (i = 0; i < 15; i++) {
if (i <= 8) {
printf(“ “);
printf(“%d “ i + 1);
}
else printf(“%d “ i + 1);
for (j = 0; j < 15; j++) {
if (board[i][j] < 0) printf(“\b●“);
else if (board[i][j] > 0) printf(“\b○“); 
else {
if ((i == 7 && j == 7) || ((i == 3 || i == 11) && (j == 3 || j == 11)))printf(“*“);
else {
if (i != 0) printf(“|“);
else printf(“ “);
}
} if (j != 14) printf(“______“);
}printf(“\n“);
if (i != 14) {

for (k = 0; k < 2; k++) {
printf(“   “);
for (s = 0; s < 15; s++) {
printf(“|      “);
}printf(“\n“);
}
}
}
return;
}
//清棋盘,可连续下多局
void clear_board() {
int i j;
for (i = 0; i < 15; i++)
for (j = 0; j < 15; j++)
board[i][j] = 0;
return;
}
//判断输赢函数
int judge(int x int y)
{
int i j;
i = x;
j = y;
int lu = 0 up = 0 ru = 0 ld = 0 dow = 0 rd = 0 r = 0 l = 0;
while ((i != 0 && j != 0) && (board[i - 1][j - 1] == board[i][j])) {
lu++;
j--;
i--;
}
res[0][0] = i;
res[0][1] = j;
i = x;
j = y;
while ((i != 14 && j != 14) && (board[i + 1][j + 1] == board[i][j])) {
rd++;
i++;
j++;
}
res[1][0] = i;
res[1][1] 

评论

共有 条评论