资源简介
采用多种搜索算法,实现了人机对弈,有较好的用户界面
代码片段和文件信息
#include “stdafx.h“
#include “AlphaBetaSearch.h“
int const MAXVALUE = 20000;//最大值
CAlphaBetaSearch::CAlphaBetaSearch(void)
{
}
CAlphaBetaSearch::~CAlphaBetaSearch(void)
{
}
//////////////////////////////////////////////////////////////////////////
//函数名称:SearchAGoodMove
//函数介绍:找出最好的走法
//输入参数: byPosition 棋盘数组
//输出参数:无
//返回值 : 无
//
//郑华山
//////////////////////////////////////////////////////////////////////////
void CAlphaBetaSearch::SearchAGoodMove(BYTE byPosition[10][9])
{
//拷贝棋盘数组到备份数组
memcpy(m_BackupChessBoard byPosition 90);
//设置当前搜索深度为最大深度
m_CurrentSearchDepth = m_MaxSearchDepth;
AlphaBeta(m_MaxSearchDepth -MAXVALUE MAXVALUE); //AlphaBeta搜索
m_BestMove.ChessFromID = m_BackupChessBoard[m_BestMove.From.y][m_BestMove.From.x];
m_BestMove.ChessToID = m_BackupChessBoard[m_BestMove.To.y][m_BestMove.To.x];
MakeMove(m_BestMove);//走一步棋
memcpy(byPosition m_BackupChessBoard 90); //更新棋盘;
}
//////////////////////////////////////////////////////////////////////////
//函数名称:AlphaBeta
//函数介绍:AlphaBeta搜索算法 随着程序的执行 [] 区间的范围将会不断缩小
//输入参数: iDepth 搜索深度 Alpha 表示本方最优,Beta表示对少最坏值
//输出参数:最佳走法
//返回值 : 返回最佳估值
//
//郑华山
//////////////////////////////////////////////////////////////////////////
int CAlphaBetaSearch::AlphaBeta(int iDepth int Alpha int Beta)
{
BYTE CurrentChessID; //被吃的的棋子ID
int iValue = 0;
int iNum = 0; //走法的个数
int iGameOver = IsGameOver(iDepth); //是否结束
if (iGameOver != 0)
return iGameOver;
if (iDepth <= 0) //叶子节点估值
{
return m_pEveluation->Eveluate(m_BackupChessBoard (m_MaxSearchDepth-iDepth + m_Side) %2); //局面评估
}
iNum = m_pMoveGenerator->GenAllMove(m_BackupChessBoardiDepth (m_MaxSearchDepth-iDepth + m_Side) %2); //产生所有走法
//遍历所有走法
for ( int i = 0; i < iNum; ++i)
{
CurrentChessID = MakeMove(m_pMoveGenerator->m_MoveList[iDepth][i]); //走一步
iValue = - AlphaBeta(iDepth - 1 -Beta -Alpha);//递归调用Alpha Beta分别取负,并交换位置
UnMakeMove(m_pMoveGenerator->m_MoveList[iDepth][i] CurrentChessID);//撤销上一步
if ( iValue > Alpha)
{
Alpha = iValue; //保留极大值
if ( iDepth == m_MaxSearchDepth) //到树根找到最好的走法
{
m_BestMove = m_pMoveGenerator->m_MoveList[iDepth][i]; //保存最好的走法
}
}
if ( Alpha >= Beta)//剪枝条件
break; //剪枝,放弃剩下的节点
}
return Alpha;//返回局面评估值
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1034752 2012-02-10 15:16 ChinaChess\bin\ChinaChess.exe
文件 1259 2012-02-03 09:45 ChinaChess\bin\ChinaChess.exe.CodeAnalysisLog.xm
文件 0 2012-02-03 09:45 ChinaChess\bin\ChinaChess.exe.lastcodeanalysissucceeded
文件 9300992 2012-02-10 15:16 ChinaChess\bin\ChinaChess.pdb
文件 2690 2012-02-02 19:30 ChinaChess\ChinaChess\AlphaBetaSearch.cpp
文件 630 2012-02-03 15:47 ChinaChess\ChinaChess\AlphaBetaSearch.h
文件 3293 2012-02-07 16:57 ChinaChess\ChinaChess\AlphaBeta_HH.cpp
文件 437 2012-02-03 15:49 ChinaChess\ChinaChess\AlphaBeta_HH.h
文件 586404 2012-02-08 10:02 ChinaChess\ChinaChess\ChinaChess.aps
文件 3349 2012-02-02 12:59 ChinaChess\ChinaChess\ChinaChess.cpp
文件 498 2012-01-05 19:02 ChinaChess\ChinaChess\ChinaChess.h
文件 14743 2012-02-08 10:02 ChinaChess\ChinaChess\ChinaChess.rc
文件 9367 2012-02-07 16:50 ChinaChess\ChinaChess\ChinaChess.vcproj
文件 257 2012-01-21 18:06 ChinaChess\ChinaChess\ChinaChess.vcproj.vspscc
文件 1421 2012-02-17 20:24 ChinaChess\ChinaChess\ChinaChess.vcproj.ZHENGHUASHAN.Administrator.user
文件 1092 2012-01-05 19:02 ChinaChess\ChinaChess\ChinaChessDoc.cpp
文件 572 2012-01-05 19:02 ChinaChess\ChinaChess\ChinaChessDoc.h
文件 36114 2012-02-10 11:08 ChinaChess\ChinaChess\ChinaChessView.cpp
文件 3896 2012-02-03 15:57 ChinaChess\ChinaChess\ChinaChessView.h
文件 14313 2012-01-28 19:54 ChinaChess\ChinaChess\CWaterRoutine.cpp
文件 1572 2001-01-19 18:23 ChinaChess\ChinaChess\CWaterRoutine.h
文件 3837 2012-02-15 22:12 ChinaChess\ChinaChess\Define.h
文件 35574 2012-01-31 16:44 ChinaChess\ChinaChess\DIBSectionLite.cpp
文件 6955 2012-01-31 16:44 ChinaChess\ChinaChess\DIBSectionLite.h
文件 35483 2012-02-10 15:16 ChinaChess\ChinaChess\Eveluation.cpp
文件 3932 2012-02-17 20:24 ChinaChess\ChinaChess\Eveluation.h
文件 4544 2012-01-25 19:32 ChinaChess\ChinaChess\GradientProgressCtrl.cpp
文件 2221 2004-08-17 14:29 ChinaChess\ChinaChess\GradientProgressCtrl.h
文件 4810 2012-02-07 15:28 ChinaChess\ChinaChess\HistoryHeuristic.cpp
文件 1153 2012-02-04 12:41 ChinaChess\ChinaChess\HistoryHeuristic.h
............此处省略95个文件信息
- 上一篇:智慧海淀顶层设计体系架构
- 下一篇:UML建模 医院管理系统
评论
共有 条评论