资源简介
用VC6.0写的五子棋程序,支持人机对战,使用A*和Alpha-Beta剪枝算法
代码片段和文件信息
// game.cpp: implementation of the game class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “wzq.h“
#include “wzqDoc.h“
#include “wzqView.h“
#include “game.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#define IW(xy) IsWhite(xy)
#define IB(xy) IsBlack(xy)
#define IBD(xy) IsinBoard(xy)
#define In(xy) IsEmpty(xy)
static int CounterWhite=0;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
game::game()
{
for(int i=0;i<=18;i++)
for(int j=0;j<=18;j++)
flag[i][j]=0;
Renji = 1; //0表示双人对战,1表示人机对战。
abort = 0;
history = 0;//0表示没有电脑还没有输过,1表示已经输过。
}
game::~game()
{
for(int i=0;i<=18;i++)
for(int j=0;j<=18;j++)
flag[i][j]=0;
}
void game::SetCounterWhite()
{
CounterWhite=0;
}
//判断(xy)处的子是否为白子。
int game::IsWhite(int xint y)//需继续检测出界情形
{
if(IsinBoard(x y))
if(flag[x][y]==1)
return 1;
else return 0;
return 0;
}
//判断(xy)处的子是否为黑子。
int game::IsBlack(int xint y)
{
if(IsinBoard(x y))
if(flag[x][y]==2)
return 1;
else return 0;
return 0;
}
//判断在(xy)这点有没有下子,1为没有子,0为有子。
int game::IsEmpty(int xint y)
{
if(IsinBoard(x y))
if(flag[x][y]==0)
return 1;
else return 0;
return 0;
}
//判断棋盘坐标下的(xy)是否在棋盘中。
int game::IsinBoard(int xint y)
{
if(x>=0 &&x<=18 &&y>=0 &&y<=18)
return 1;
else return 0;
}
//这个函数用于判断当前下的子是否造成了赢局。
//当前子也可能造成长连禁手,这个要判断和区别出来。
int game::WinJudge(CPoint pt)
{
int b=pt.y;
int c=pt.x;
//steps=order+2;
int e1=0f1=0e2=0f2=0;
int i=0;int j=0;
int counter1=1counter2=1;
if(IW(bc))//白子
{
for(i=0;i<=1;i++)
for(j=-1;j<=1;j++)
{ if(i!=0||j!=0) //去掉这个if的情形,这个双重循环共有5个循环体,而实际上只需要4个就可以遍历8个方向。故有一个重复。
{
counter1=1;
e1=b+i;f1=c+j;
e2=b-i;f2=c-j;
while(IW(e1f1))
{
counter1++;
e1=e1+i;
f1=f1+j;
}
while(IW(e2f2))
{
counter1++;
e2=e2-i;
f2=f2-j;
}
if(counter1>counter2)
counter2=counter1;
}
}
if(counter2>5) return 1;//1表示长连禁手。
if(counter2==5) return 2;//2表示白方赢了。
}
else if(flag[b][c]==2)// 黑子
{
for(i=0;i<=1;i++)
for(j=-1;j<=1;j++)
{ if(i!=0||j!=0)
{
counter1=1;
e1=b+i;f1=c+j;
e2=b-i;f2=c-j;
while(flag[e1][f1]==2 &&e1>=0 &&f1>=0 &&e1<=18 &&f1<=18)
{
counter1++;
e1=e1+i;
f1=f1+j;
}
while(flag[e2][f2]==2 &&e2>=0&&f2>=0&&e2<=18&&f2<=18)
{
counter1++;
e2=e2-i;
f2=f2-j;
}
if(counter1>=counter2)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2856 2010-04-16 18:12 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\{99BFE8D0-9396-4dc1-A3BD-1EED11548B10}.csproj
文件 6513 2010-04-08 15:10 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\PlayStrategy.cs
文件 1326 2010-04-16 18:12 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\{99BFE8D0-9396-4dc1-A3BD-1EED11548B10}.sln
..A..H. 29696 2010-04-16 18:13 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\{99BFE8D0-9396-4dc1-A3BD-1EED11548B10}.suo
文件 331 2010-04-04 11:46 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\LocalTestRun.testrunconfig
文件 501 2010-04-04 11:46 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\{99BFE8D0-9396-4dc1-A3BD-1EED11548B10}.vsmdi
文件 19977 2010-04-10 13:56 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\PlayStrategy_v1.cs
文件 2470 2010-04-08 17:30 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\Pla
文件 891 2010-04-10 13:50 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\obj\Debug\{99BFE8D0-9396-4dc1-A3BD-1EED11548B10}.csproj.FileListAbsolute.txt
文件 10752 2010-04-16 18:12 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\obj\Debug\{99BFE8D0-9396-4dc1-A3BD-1EED11548B10}.dll
文件 2575 2010-04-05 10:13 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\obj\Debug\ResolveAssemblyReference.cache
文件 26112 2010-04-16 18:12 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\obj\Debug\{99BFE8D0-9396-4dc1-A3BD-1EED11548B10}.pdb
文件 11264 2010-03-29 11:06 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\bin\Debug\GrapeCity.Competition.Gomoku.Core.dll
文件 10752 2010-04-16 18:12 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\bin\Debug\{99BFE8D0-9396-4dc1-A3BD-1EED11548B10}.dll
文件 26112 2010-04-16 18:12 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\bin\Debug\{99BFE8D0-9396-4dc1-A3BD-1EED11548B10}.pdb
文件 130560 2010-03-29 11:06 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\bin\Debug\GrapeCity.Competition.Gomoku.Arena.exe
文件 8704 2010-03-29 11:06 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\bin\Debug\GrapeCity.Competition.Gomoku.Common.dll
文件 692 2010-04-03 17:26 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\bin\Debug\Pla
文件 5120 2010-03-29 11:07 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\bin\Debug\{9F5D91B6-123D-4de2-B26D-B59041CEB07E}.dll
文件 1432 2010-04-01 12:38 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\Properties\AssemblyInfo.cs
目录 0 2010-04-16 18:13 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\obj\Debug\Refactor
目录 0 2010-04-16 18:13 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\obj\Debug\TempPE
目录 0 2010-04-16 18:13 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\obj\Debug
目录 0 2010-04-16 18:13 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\bin\Debug
目录 0 2010-04-16 18:13 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\obj
目录 0 2010-04-16 18:13 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\bin
目录 0 2010-04-16 18:13 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}\Properties
目录 0 2010-04-16 18:13 {99BFE8D0-9396-4dc1-A3BD-1EED11548B10}
文件 31438 2010-06-24 08:40 GoBang\code\game.cpp
文件 995 2010-06-24 08:40 GoBang\code\game.h
............此处省略33个文件信息
相关资源
- C++五子棋程序代码基础实现
- C++五子棋源码有AI,先手禁手
- C++五子棋源代码程序解析
- MFC五子棋,本地,网络,人机
- OpenSSL+VC6.0 实现的安全Web Server 客户端
- 五子棋纯c语言代码(测试完美)
- vc6.0编写的SOM神经网络聚类
- C++ 3D 五子棋 opengl
- Psapi.lib psapi.h VC6.0 文件
- MFC 五子棋 一个简单的五子棋游戏
- VC++6.0完美运行在win7和win10系统上
- VC6.0下开发的仿windows记事本-达尔魔记
- 简易计算器基于对话框VC6.0
- 三菱PLC上位机编程软件VC6.0完整源代码
- c++小游戏五子棋,带AI
- VC++五子棋程序源码VC6.0控制台下运行
- 数据结构和算法案例-欢乐五子棋 C+
- Skins VC6.0程序皮肤
- MFC规则DLL(MFC Regular DLL)添加DLLMain(
- VC6.0 TTS
- 一个五子棋游戏的MFC实现源码已判禁
- OPC客户端源代码
- 剪枝算法的五子棋C++程序
- 基于VC6.0的Bresenham直线算法
- 随机线性网络编码和确定线性网络编
- vc 源码 md5字符串加密算法 绝对可以用
- VC6.0_MFC_读写配置文件
- 扫雷游戏源程序 c++课程设计必备
- VC6.0做的仿按键精灵找图找色功能 f
- 最新版Zlib1.2.5 编译好 支持vc6.0
评论
共有 条评论