• 大小: 247KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-24
  • 语言: C/C++
  • 标签: 五子棋  Gobang  VC6.0  

资源简介

用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}\Player.cs

     文件        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\Players.xml

     文件       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个文件信息

评论

共有 条评论