资源简介
用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个文件信息
相关资源
- 移木块游戏,可以自编自玩,vc6.0编写
- MFC数字钟(基于VC6.0)
- 安科瑞智能电能表MODBUS通讯程序 VC6
- VC6LineNumberAddin.dll
- 用VC6.0实现多边形扫描线填充算法
- VC助手 VC6.0助手
- 五子棋游戏源码(控制台)
- 五子棋c++控制台代码
- MFC五子棋游戏
- 五子棋C++(Qt版).zip
- VC6.0 完整的图像处理程序 运用了大量
- VC6.0经典串口通信源程序C++
- VC6.0MFC界面美化
- 即时通讯开发源码终极版C#.NETC++都有
- 毕业设计C++五子棋源代码及毕业论文
- VS打开VC6.0所需libcd.lib
- MFC画圆自定义|位置|半径|边界和内部
- C++课程设计五子棋基于Qt4
- 用vc++6.0实现的银行账户管理系统
- vc6.0编程助手Visual_AssistX(含破解补丁
- C++ 五子棋游戏 图形界面
- VC6.0_MFC画图demo小程序源码
- Visual_assist_X_for_VC6.0破解版.rar
- VC开发MFC局域网屏幕监控系统完美版
- VC6.0三维画图画三维球,立方体,矩形
- 基于C++的五子棋游戏设计
- 基于easyx的人机对战五子棋
- VC6.0获取MAC地址
- 基于MFC的单机版五子棋含PPT详细答辩
- vc6.0+opengl纯色五角星填充
评论
共有 条评论