資源簡介
用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個文件信息
評論
共有 條評論