资源简介
程设实验上写的一个小程序,五子棋,用的评估分值法(甚至没有深度搜索)。写着玩的,比较弱智,人机赢不了我。有和我一样刚接触代码的,需要的可以做个参考。
代码片段和文件信息
#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]
- 上一篇:利用队列实现迷宫问题
- 下一篇:操作系统进程调度模拟算法
相关资源
- C语言嵌入式Modbus协议栈,支持主站和
- C语言封装的HttpClient接口
- C语言课设计算器
- C语言 学生兴趣管理系统
- c语言实现火车订票系统(控制台)源
- 模拟笔记本电脑(C语言实现)
- c语言实现竞技比赛打分系统
- KMP算法C语言程序
- Linux c语言 学生成绩管理系统
- 弹跳的小球(test.c)
- 林锐—高质量C编程
- 基于c语言的通讯录系统
- C语言全套课件与教学资料-哈工大
- 计算机二级C语言真题.docx
- C语言实现 设备信息管理系统
- GBT 28169-2011 嵌入式软件 C语言编码规范
- C语言标准库函数大全.chm
- C语言常用代码(分章节)
- c语言课程设计:客房登记系统源码
- C语言常用算法源代码
- 吕鑫:VS2015之博大精深的0基础C语言视
- c语言文都讲义2020
- c语言课件56883
- C语言推箱子win控制台
- C语言程序设计50例.docx
- 烟花优化算法(c语言版)
- C语言程序设计教材习题参考答案.do
- 数据结构(C语言版)ppt课件,清华,
- c语言编程经典例题100例 word版
- C语言编译器的设计与实现.doc
评论
共有 条评论