资源简介
alphabeta剪枝算法的C++实现下棋程序。有注释,易理解。
代码片段和文件信息
#include
#include
#include
using namespace std;
char array[3][3];
int depth=3;
int bestmove[2];
bool win()
{
int ij;
char chess;
for(i=0;i<3;i++) //row
{
j=0;
if(array[i][j]==‘1‘) continue;
chess=array[i][j];
for(j=1;j<3;j++)
if(array[i][j]==‘1‘||array[i][j]!=chess) break;
if(j==3) return true;
}
for(j=0;j<3;j++) //column
{
i=0;
if(array[i][j]==‘1‘) continue;
chess=array[i][j];
for(i=1;i<3;i++)
if(array[i][j]==‘1‘||array[i][j]!=chess) break;
if(i==3) return true;
}
if(array[1][1]!=‘1‘) //special
{
chess=array[1][1];
if(array[0][0]==chess&&array[2][2]==chess) return true;
if(array[0][2]==chess&&array[2][0]==chess) return true;
}
return false;
}
void printchess()
{
int ij;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
if(j==3) cout< else cout< }
}
int evalue()
{
/*
int i;
i=rand()%10;
return i;
*/
int myside=0opposide=0;
int ij;
char chess;
for(i=0;i<3;i++) //row
{
j=0;
chess=array[i][j];
if(chess==‘1‘)
{
j++;
chess=array[i][j];
if(chess==‘1‘)
{
j++;
chess=array[i][j];
if(chess!=‘1‘)
{
if(chess==‘O‘) myside++;
else opposide++;
}
}else{
j++;
if(chess==array[i][j]||array[i][j]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
}
}else{
j++;
if(chess==array[i][j]||array[i][j]==‘1‘)
{
j++;
if(chess==array[i][j]||array[i][j]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
}
}
}
for(j=0;j<3;j++) //clomn
{
i=0;
chess=array[i][j];
if(chess==‘1‘)
{
i++;
chess=array[i][j];
if(chess==‘1‘)
{
i++;
chess=array[i][j];
if(chess!=‘1‘)
{
if(chess==‘O‘) myside++;
else opposide++;
}
}else{
i++;
if(chess==array[i][j]||array[i][j]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
}
}else{
i++;
if(chess==array[i][j]||array[i][j]==‘1‘)
{
i++;
if(chess==array[i][j]||array[i][j]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
}
}
}
if(array[1][1]!=‘1‘) //special
{
chess=array[1][1];
if((array[0][0]==chess||array[0][0]==‘1‘)&&(array[2][2])==chess||array[2][2]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
if((array[0][2]==chess||array[0][2]==‘1‘)&&(array[2][0])==chess||array[2][0]==‘1‘)
if(chess==‘O‘) myside++;
else opposide++;
}else
if((array[0][0]==array[2][2]&&array[0][0]!=‘1‘)||((array[0][0]!=array[2][2])&&(array[0][0]==‘1‘||array[2][2]==‘1‘)))
if(array[0][0]==‘O‘) myside++;
else opposide++;
if((array[0][2]==array[2][0]&&array[0][2]!=‘1‘)||((array[0][2]!=array[2][0])&&(array[0][2]==‘1‘||array[2][0]==‘1‘)))
if(array[2][0]==‘O‘) myside++;
else opposide++;
return myside-opposide;
}
int alphabeta(int alphaint betaint dbool
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4863 2009-10-23 09:20 alphabeta\alphabeta.cpp
文件 4320 2009-10-17 10:39 alphabeta\alphabeta.dsp
文件 526 2009-10-17 08:18 alphabeta\alphabeta.dsw
文件 426624 2009-10-17 10:40 alphabeta\alphabeta.exe
文件 41984 2009-10-23 09:21 alphabeta\alphabeta.ncb
文件 48640 2009-10-23 09:21 alphabeta\alphabeta.opt
文件 1303 2009-10-23 09:21 alphabeta\alphabeta.plg
文件 553029 2009-10-23 09:21 alphabeta\Debug\alphabeta.exe
文件 786524 2009-10-23 09:21 alphabeta\Debug\alphabeta.ilk
文件 258004 2009-10-23 09:21 alphabeta\Debug\alphabeta.obj
文件 2062840 2009-10-17 10:44 alphabeta\Debug\alphabeta.pch
文件 1090560 2009-10-23 09:21 alphabeta\Debug\alphabeta.pdb
文件 74752 2009-10-23 09:21 alphabeta\Debug\vc60.idb
文件 110592 2009-10-23 09:21 alphabeta\Debug\vc60.pdb
目录 0 2010-03-01 22:09 alphabeta\Debug
目录 0 2010-03-01 22:09 alphabeta
----------- --------- ---------- ----- ----
5464561 16
- 上一篇:利用MFC实现的停车场模拟仿真程序
- 下一篇:贝塞尔曲面 vc++ opengl
相关资源
- 贝塞尔曲面 vc++ opengl
- 操作系统的理发师问题解决文件打包
- C++11标准发布文档
- c++ MODBUS串行通信程序
- 成组链接法UNIXC++
- 维特比译码+卷积码编码程序C/C++实现
- 学分管理系统 c++
- C++五子棋源码有AI,先手禁手
- 双语版C++苏小红课后习题参考
- C++大作业之学生管理系统图表
- 基于Windows Socket的安全通信(C++实现)
- 蓝桥杯青少组C++赛前集训包.pdf
- 11个常用OpenCV+C++图像处理
- 吃豆人 c++ 源程序
- 求公式的主合取范式和主析取范式
- C++实现MATLAB的filter函数
- 实验室设备管理系统C++
- C++课程设计之简易英汉字典
- 传热学非稳态热传导问题网格划分数
- 学分管理系统c++课程设计
- 阿伦方差的C++ 版本
- 如何在VC++ 6.0创建RTX项目
- utf8编码解码的纯C++代码
- visualc++下位机温度测量串口通信与实
- c++写的OpenGL程序透明金字塔有加上光
- C++二叉树基于Mfc的程序开发
- C++ blackjack经典21点小游戏 课程设计
- 多用户多级目录文件系统c++源码(含
- libstdc++.so.6.0.22 or GLIBCXX_3.4.22 in tenso
- visual c++ 6.0 完整扫雷源代码
评论
共有 条评论