资源简介

蒋鹏、雷贻祥、陈园园编著的《C/C++中国象棋程序入门与提高》的源代码,很难下载到的。

资源截图

代码片段和文件信息

// Board.cpp: implementation of the CBoard class.
//
//////////////////////////////////////////////////////////////////////

#include “Board.h“

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


CBoard g_Board;

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////


CBoard::CBoard()
{
StackTop = 0;
ply =0;
MaxDepth = 4;
}

CBoard::~CBoard()
{

}


//棋子整数值转换成字符表示
char CBoard::IntToChar(int a)
{
if(a <32)
{
switch(a)
{
case 16: return ‘K‘;
case 17:
case 18: return ‘A‘;
case 19:
case 20: return ‘B‘;
case 21:
case 22: return ‘N‘;
case 23:
case 24: return ‘R‘;
case 25:
case 26: return ‘C‘;
case 27:
case 28:
case 29:
case 30:
case 31: return ‘P‘;
default: return 0;
}
}
else
{
a = a-16;
switch(a)
{
case 16: return ‘k‘;
case 17:
case 18: return ‘a‘;
case 19:
case 20: return ‘b‘;
case 21:
case 22: return ‘n‘;
case 23:
case 24: return ‘r‘;
case 25:
case 26: return ‘c‘;
case 27:
case 28:
case 29:
case 30:
case 31: return ‘p‘;
default: return 0;
}
}
}

void CBoard::ClearBoard() //清空棋盘数组
{
int i;
side = 0;
for (i = 0; i < 256; i ++) 
{
board[i] = 0;
}
for (i = 0; i < 48; i ++) 
{
piece[i] = 0;
}
StackTop=0;
ZobristKey = 0;
ZobristKeyCheck = 0;
}

//FEN串中棋子对应的数组下标
//下标0,1,2,3,4,5,6分别对应表示将,仕,象,马,车,炮,兵
int CBoard::CharToSubscript(char ch) 
{
switch(ch)
{
case ‘k‘:
case ‘K‘:return 0;
case ‘a‘:
case ‘A‘:return 1;
case ‘b‘:
case ‘B‘:return 2;
case ‘n‘:
case ‘N‘:return 3;
case ‘r‘:
case ‘R‘:return 4;
case ‘c‘:
case ‘C‘:return 5;
case ‘p‘:
case ‘P‘:return 6;
default:return 7;
}
}

void CBoard::AddPiece(int pos int pc) //增加棋子
{
int pt;
board[pos] = pc;
piece[pc] = pos;
pt = PieceNumToType[pc];
if (pc>=32)
{
pt += 7;
}
ZobristKey ^= ZobristTable[pt][pos];
ZobristKeyCheck ^= ZobristTableCheck[pt][pos];
}

//将FEN串表示的局面转换成一维数组
void CBoard::StringToArray(const char *FenStr) 
{
int i j k;
int pcWhite[7]={16171921232527};
int pcBlack[7]={32333537394143};
const char *str;
  
ClearBoard();
str = FenStr;
if (*str == ‘\0‘) 
{
return;
}
  
i = 3;
j = 3;
while (*str != ‘ ‘) 
{
if (*str == ‘/‘) 
{
j = 3;
i ++;
if (i > 12) 
{
break;
}

else if (*str >= ‘1‘ && *str <= ‘9‘) 
{
for (k = 0; k < (*str - ‘0‘); k ++) 
{
if (j >= 11) 
{
break;
}
j ++;
}

else if (*str >= ‘A‘ && *str <= ‘Z‘) 
{
if (j <= 11) 
{
k = CharToSubscript(*str);
if (k < 7) 
{
if (pcWhite[k] < 32) 
{
AddPiece((i<<4)+jpcWhite[k]);
pcWhite[k]++;
}
}
j ++;
}
}
else if (*str >= ‘a‘

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4477  2008-05-10 21:48  第10章 算法分析与测试技术\chessengine9-7\Board.cpp

     文件       3372  2008-06-14 11:05  第10章 算法分析与测试技术\chessengine9-7\Board.h

     文件       5011  2008-05-10 21:41  第10章 算法分析与测试技术\chessengine9-7\chessengine.dsp

     文件        547  2007-09-19 12:54  第10章 算法分析与测试技术\chessengine9-7\chessengine.dsw

     文件     328704  2008-06-14 15:31  第10章 算法分析与测试技术\chessengine9-7\chessengine.ncb

     文件     268800  2008-06-14 15:31  第10章 算法分析与测试技术\chessengine9-7\chessengine.opt

     文件       2019  2008-06-14 11:05  第10章 算法分析与测试技术\chessengine9-7\chessengine.plg

     文件       1478  2008-06-07 10:48  第10章 算法分析与测试技术\chessengine9-7\def.h

     文件       2422  2008-06-14 11:05  第10章 算法分析与测试技术\chessengine9-7\engine.cpp

     文件        539  2008-06-07 11:23  第10章 算法分析与测试技术\chessengine9-7\evaluate.cpp

     文件      10334  2008-06-14 11:05  第10章 算法分析与测试技术\chessengine9-7\genmoves.cpp

     文件       2283  2008-06-06 00:19  第10章 算法分析与测试技术\chessengine9-7\hash.cpp

     文件       2670  2007-09-19 13:02  第10章 算法分析与测试技术\chessengine9-7\pipe.cpp

     文件        476  2007-09-19 13:00  第10章 算法分析与测试技术\chessengine9-7\pipe.h

     文件       5073  2008-06-07 15:42  第10章 算法分析与测试技术\chessengine9-7\search.cpp

     文件       5293  2007-09-19 13:03  第10章 算法分析与测试技术\chessengine9-7\ucci.cpp

     文件       3935  2007-09-19 13:03  第10章 算法分析与测试技术\chessengine9-7\ucci.h

     文件      20732  2008-06-07 10:01  第10章 算法分析与测试技术\第六章\6-2.cpp

     文件      21036  2008-06-07 10:01  第10章 算法分析与测试技术\第六章\6-3.cpp

     文件       4361  2008-06-07 11:21  第10章 算法分析与测试技术\第六章\象棋程序.dsp

     文件        541  2007-08-28 13:59  第10章 算法分析与测试技术\第六章\象棋程序.dsw

     文件      91136  2008-06-23 23:50  第10章 算法分析与测试技术\第六章\象棋程序.ncb

     文件     266752  2008-06-23 23:50  第10章 算法分析与测试技术\第六章\象棋程序.opt

     文件       1262  2008-06-07 09:45  第10章 算法分析与测试技术\第六章\象棋程序.plg

     文件       4275  2008-05-20 23:38  第11章 时间控制策略\11-1\Board.cpp

     文件       2564  2008-05-20 22:24  第11章 时间控制策略\11-1\Board.h

     文件       4952  2007-09-19 13:20  第11章 时间控制策略\11-1\chessengine.dsp

     文件        547  2007-09-19 12:54  第11章 时间控制策略\11-1\chessengine.dsw

     文件      99328  2008-06-14 13:48  第11章 时间控制策略\11-1\chessengine.ncb

     文件     268800  2008-06-14 13:48  第11章 时间控制策略\11-1\chessengine.opt

............此处省略453个文件信息

评论

共有 条评论