資源簡介
VC++源碼版的中國象棋游戲,人機對戰。在電腦上是不是經常見到這款游戲啊?以前很喜歡玩中國象棋游戲的,你是不是還和電腦下過一盤呢?今天終于見到它的神秘面紗了,它的VC源代碼文件。超強難度的搜索引擎和算法、估值函數以及開局庫,還有大量的開局庫資料都將為您展現出來。研究VC++游戲編程的朋友可絕不要錯過哦!

代碼片段和文件信息
//Download?by?http://www.NewXing.com
//?GetAllCB.cpp?:?Defines?the?entry?point?for?the?console?application.
//
#include?“stdafx.h“
#include?“GetAllCB.h“
#include?
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#undef?THIS_FILE
static?char?THIS_FILE[]?=?__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//?The?one?and?only?application?object
//--------棋子--------
#define?NOCHESS????0?//沒有棋子
#define?B_KING ???1?//黑帥
#define?B_CAR ???2?//黑車
#define?B_HORSE ???3?//黑馬
#define?B_CANON ???4?//黑炮
#define?B_BISHOP???5?//黑士
#define?B_ELEPHANT?6?//黑象
#define?B_PAWN?????7?//黑卒
#define?R_KING ???8?//紅將
#define?R_CAR??????9?//紅車
#define?R_HORSE????10//紅馬
#define?R_CANON????11//紅炮
#define?R_BISHOP???12//紅士
#define?R_ELEPHANT?13//紅相
#define?R_PAWN?????14//紅兵
//--------------------
struct?CHESSINFO
{
BYTE?byChess;
int?iPos;
};
void?GetAllCBCnt(int?iint?j);??//得到所有合法布局的總數
int?CreateAllChess(int?iint?j);//產生所有合法的棋子
bool?IsLegalChess(int?iint?jBYTE?byChess);//在位置(ij)放棋子byChess是否合法
bool?IsHaveGen(bool?bIsRed); //是否已經放置了將帥
BYTE?MakeMove(int?iint?jCHESSINFO?ciChessInfo);
void?UnMakeMove(int?iint?jCHESSINFO?ciChessInfoBYTE?byChess);
void?PrintChessBoard(BYTE?byChessBoard[10][9]);//打印棋盤
CWinApp?theApp;
using?namespace?std;
float?iAllCnt=0;
BYTE?byCurChess[33]=
{
NOCHESS
B_CARB_HORSEB_ELEPHANTB_BISHOPB_KINGB_BISHOPB_ELEPHANTB_HORSEB_CARB_CANONB_CANONB_PAWNB_PAWNB_PAWNB_PAWNB_PAWN
R_CARR_HORSER_ELEPHANTR_BISHOPR_KINGR_BISHOPR_ELEPHANTR_HORSER_CARR_CANONR_CANONR_PAWNR_PAWNR_PAWNR_PAWNR_PAWN
};
CHESSINFO?ciAllPsbChess[10][9][32];//每一個格子對應的可以放的棋子
BYTE?byCurChessBoard[10][9];//當前棋盤
int?_tmain(int?argc?TCHAR*?argv[]?TCHAR*?envp[])
{
int?nRetCode?=?0;
//?initialize?MFC?and?print?and?error?on?failure
if?(!AfxWinInit(::GetModuleHandle(NULL)?NULL?::GetCommandLine()?0))
{
//?TODO:?change?error?code?to?suit?your?needs
cerr?< nRetCode?=?1;
}
int?ij;
//初始化byCurChessBoard
for(i=0;i<10;i++)
for(j=0;j<9;j++)
byCurChessBoard[i][j]=NOCHESS;
GetAllCBCnt(00);
cout<
getch();
return?nRetCode;
}
void?GetAllCBCnt(int?iint?j)
{
int?k;
int?iCnt=CreateAllChess(ij);
BYTE?byChess;
for(k=0;k {
byChess=MakeMove(ijciAllPsbChess[i][j][k]);
if(j+1>8)
{
if(i+1>9)//得到一種布局布局數加1
{
PrintChessBoard(byCurChessBoard);
getch();
iAllCnt++;
UnMakeMove(ijciAllPsbChess[i][j][k]byChess);
return;
}
else
GetAllCBCnt(i+10);
}
else
GetAllCBCnt(ij+1);
UnMakeMove(ijciAllPsbChess[i][j][k]byChess);
}
}
int?CreateAllChess(int?iint?j)
{
int?iCnt=0;
int?k;
bool?bFlag=0;//空棋子是否已經使用
for(k=0;k<33;k++)
{
if(IsLegalChess(ijbyCurChess[k]))
{
if(byCurChess[k]==NOCHESS)
{
if(!bFlag)
{
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????66769??2013-12-02?03:39??主程序\ba
?????文件??????20214??2013-12-02?03:39??主程序\ba
?????文件??????11008??2013-12-02?03:39??主程序\ba
?????文件???????3268??2013-12-02?03:39??主程序\ba
????.......????493056??2001-03-30?11:46??主程序\CBLibXControl.ocx
?????文件???????2627??2013-12-02?03:39??主程序\Chess.cpp
????.......??????9315??2004-12-03?20:37??主程序\Chess.dsp
????.......???????535??2004-08-24?09:49??主程序\Chess.dsw
?????文件???????1453??2013-12-02?03:39??主程序\Chess.h
????.......?????15436??2004-12-21?09:48??主程序\Chess.rc
?????文件??????73263??2013-12-02?03:39??主程序\ChessDlg.cpp
?????文件???????7433??2013-12-02?03:39??主程序\ChessDlg.h
?????文件???????6187??2013-12-02?03:39??主程序\CoolButton.cpp
?????文件???????1565??2013-12-02?03:39??主程序\CoolButton.h
?????文件???????2411??2013-12-02?03:39??主程序\Define.h
?????文件??????69811??2013-12-02?03:39??主程序\Eveluation.cpp
?????文件????????760??2013-12-02?03:39??主程序\Eveluation.h
?????文件???????4577??2013-12-02?03:39??主程序\GradientProgressCtrl.cpp
?????文件???????2259??2013-12-02?03:39??主程序\GradientProgressCtrl.h
?????文件???????1392??2013-12-02?03:39??主程序\HelpDlg.cpp
?????文件???????1281??2013-12-02?03:39??主程序\HelpDlg.h
?????文件???????2683??2013-12-02?03:39??主程序\HistoryHeuristic.cpp
?????文件???????1440??2013-12-02?03:39??主程序\HistoryHeuristic.h
?????文件??????12031??2013-12-02?03:39??主程序\Hyperli
?????文件???????3303??2013-12-02?03:39??主程序\Hyperli
?????文件???????1300??2013-12-02?03:39??主程序\MemDC.cpp
?????文件????????719??2013-12-02?03:39??主程序\MemDC.h
?????文件??????18955??2013-12-02?03:39??主程序\MoveGenerator.cpp
?????文件???????2357??2013-12-02?03:39??主程序\MoveGenerator.h
????.......?????20798??2003-05-10?19:01??主程序\MoveHint.wav
............此處省略315個文件信息
評論
共有 條評論