// ChessDlg.cpp : implementation file
#include "stdafx.h"
#include "Chess.h"
#include "ChessDlg.h"
#include "CoolButton.h"
#include "BaseDef.h"
#include "OptionDlg.h"
#include "ThinkOptionDlg.h"
#include "BaiDlg.h"
#include "OpenDlg.h"
#define CHESS_C_UNDO 0
#define CHESS_C_REDO 1
#define CHESS_C_HELP 2
#define CHESS_C_CUT 3
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
CCoolButton m_btWeb;
CCoolButton m_btEmail;
CCoolButton m_btOK;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
afx_msg void OnButtonweb();
afx_msg void OnButtonemail();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
DDX_Control(pDX, IDC_BUTTONWEB, m_btWeb);
DDX_Control(pDX, IDC_BUTTONEMAIL, m_btEmail);
DDX_Control(pDX, IDOK, m_btOK);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
ON_BN_CLICKED(IDC_BUTTONWEB, OnButtonweb)
ON_BN_CLICKED(IDC_BUTTONEMAIL, OnButtonemail)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChessDlg dialog
CChessDlg::CChessDlg(CWnd* pParent /*=NULL*/)
: CDialog(CChessDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CChessDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
CWinApp* pApp=AfxGetApp();
m_hIcon = pApp->LoadIcon(IDR_MAINFRAME);
m_hIconUndo = pApp->LoadIcon(IDI_UNDO);
m_hIconRedo = pApp->LoadIcon(IDI_REDO);
m_hIconHelp = pApp->LoadIcon(IDI_HELP);
m_hIconCut = pApp->LoadIcon(IDI_CUT );
//棋子图标
m_hIconMan[RED_K]=pApp->LoadIcon(IDI_R_K);
m_hIconMan[RED_S]=pApp->LoadIcon(IDI_R_S);
m_hIconMan[RED_X]=pApp->LoadIcon(IDI_R_X);
m_hIconMan[RED_M]=pApp->LoadIcon(IDI_R_M);
m_hIconMan[RED_J]=pApp->LoadIcon(IDI_R_J);
m_hIconMan[RED_P]=pApp->LoadIcon(IDI_R_P);
m_hIconMan[RED_B]=pApp->LoadIcon(IDI_R_B);
m_hIconMan[BLACK_K]=pApp->LoadIcon(IDI_B_K);
m_hIconMan[BLACK_S]=pApp->LoadIcon(IDI_B_S);
m_hIconMan[BLACK_X]=pApp->LoadIcon(IDI_B_X);
m_hIconMan[BLACK_M]=pApp->LoadIcon(IDI_B_M);
m_hIconMan[BLACK_J]=pApp->LoadIcon(IDI_B_J);
m_hIconMan[BLACK_P]=pApp->LoadIcon(IDI_B_P);
m_hIconMan[BLACK_B]=pApp->LoadIcon(IDI_B_B);
m_pdcBack=new CDC;
m_pdcBoard=new CDC;
m_bThinking=FALSE;
m_bCheck[0]=FALSE;
m_bCheck[1]=FALSE;
FixManMap();
}
void CChessDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChessDlg)
DDX_Control(pDX, IDC_CHESS_CUT, m_btCut);
DDX_Control(pDX, IDC_PROGRESS1, m_progressStep);
DDX_Control(pDX, IDC_STEPLIST, m_listStep);
DDX_Control(pDX, IDC_CHESS_UNDO, m_btUndo);
DDX_Control(pDX, IDC_CHESS_REDO, m_btRedo);
DDX_Control(pDX, IDC_CHESS_HELP, m_btHelp);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CChessDlg, CDialog)
//{{AFX_MSG_MAP(CChessDlg)
ON_COMMAND(ID_ABOUTBOX, OnAboutbox)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_DESTROY()
ON_COMMAND(ID_FILE_BAI, OnFileBai)
ON_COMMAND(ID_FILE_NEW, OnFileNew)
ON_COMMAND(ID_FILE_SAVE, OnFileSave)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_COMMAND(ID_FILE_OPTION, OnFileOption)
ON_BN_CLICKED(IDC_CHESS_UNDO, OnEditUndo)
ON_BN_CLICKED(IDC_CHESS_REDO, OnEditRedo)
ON_BN_CLICKED(IDC_CHESS_HELP, OnEditHelp)
ON_COMMAND(ID_CHESS_CUT, OnEditCut)
ON_WM_TIMER()
ON_LBN_DBLCLK(IDC_STEPLIST, OnDblclkSteplist)
ON_COMMAND(ID_HELP_EMAIL, OnHelpEmail)
ON_COMMAND(ID_HELP_WEB, OnHelpWeb)
ON_COMMAND(ID_FILE_THINKOPTION, OnFileThinkOption)
ON_COMMAND(ID_CHESS_HELP, OnEditHelp)
ON_COMMAND(ID_CHESS_REDO, OnEditRedo)
ON_COMMAND(ID_CHESS_UNDO, OnEditUndo)
ON_BN_CLICKED(IDC_CHESS_CUT, OnEditCut)
ON_COMMAND(ID_HELP_USE, OnHelpUse)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChessDlg message handlers
BOOL CChessDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, FALSE);
SetIcon(m_hIcon, TRUE); // Set small icon
m_btUndo.SetIcon(m_hIconUndo,32,32);
m_btRedo.SetIcon(m_hIconRedo,32,32);
m_btHelp.SetIcon(m_hIconHelp,32,32);
m_btCut .SetIcon(m_hIconCut ,32,32);
CClientDC dc(this);
//Create Bitmap for DC
m_Bitmap1.CreateCompatibleBitmap(&dc,XBW,YBW);
m_Bitmap2.CreateCompatibleBitmap(&dc,XBW,YBW);
m_pdcBack->CreateCompatibleDC(&dc);
m_pdcBoard->CreateCompatibleDC(&dc);
m_pdcBoard->SelectObject(&m_Bitmap1);
m_pdcBack->SelectObject(&m_Bitmap2);
MakeBoard(); //draw Chessboard in Board DC(3D)
m_Setting.Load();
m_Thinker.SetLevel(m_Setting.m_nLevel);
m_Thinker.LoadThinkSetting();
m_progressStep.CProgressCtrl::SetRange(0,100);
m_nTimer=SetTimer(1,80,NULL);
New();
return TRUE;
}
void CChessDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CClientDC dc(this);
CRect rc;
GetUpdateRect(&rc,TRUE);
rc.OffsetRect(-XOFFSET,-YOFFSET);
UpdateFace(rc);
CDialog::OnPaint();
}
}
HCURSOR CChessDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CChessDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if(m_nManPickUp!=32)
{
CPoint last=m_pointPickUp;
point.Offset(-XOFFSET-MW/2,-YOFFSET-MW/2);
if(point.x<SW)point.x=SW;
if(point.x>BWA*8+SW)point.x=BWA*8+SW;
if(point.y<SW)point.y=SW;
if(point.y>BWA*9+SW)point.y=BWA*9+SW;
m_pointPickUp=point;
CRect rc=MakeUpdateRect(last,m_pointPickUp);
UpdateFace(rc);
}
CDialog::OnMouseMove(nFlags, point);
}
void CChessDlg::OnAboutbox()
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
CChessDlg::~CChessDlg()
{
if(m_pdcBack)delete m_pdcBack;
if (m_pdcBoard)delete m_pdcBoard;
}
void CChessDlg::OnFileOption()
{
COptionDlg optiondlg;
optiondlg.m_CORM0=m_Setting.m_nCOrM[0];
optiondlg.m_CORM1=m_Setting.m_nCOrM[1];
optiondlg.m_nMode =m_Setting.m_nMode;
optiondlg.m_nLevel=m_Setting.m_nLevel;
m_bThinking=FALSE;
EnableCommand(CHESS_C_CUT,FALSE);
int respond=optiondlg.DoModal();
if(respond==IDOK)
{
m_Setting.m_nCOrM[0]=optiondlg.m_CORM0;
m_Setting.m_nCOrM[1]=optiondlg.m_CORM1;
m_Setting.m_nMode=optiondlg.m_nMode;
m_Setting.m_nLevel=optiondlg.m_nLevel;
m_Thinker.SetLevel(m_Setting.m_nLevel);
m_Setting.Save();
ShowStatus();
if(m_Setting.m_nCOrM[m_Setting.m_nPlayer[m_Face.side]]==COM)
Think();
}
}
void CChessDlg::MakeBoard()
{
//填充
CBrush br(GetSysColor(COLOR_3DFACE));
CRect rect(0,0,XBW,YBW);
m_pdcBoard->FillRect(rect,&br);
//画棋盘
CPen pen[2];
pen[0].CreatePen(PS_SOLID,0,GetSysColor(COLOR_3DHILIGHT));
pen[1].CreatePen(PS_SOLID,0,GetSysColor(COLOR_3DSHADOW));
for(int i=0;i<=1;i++)
{
m_pdcBoard->SelectObject(pen[i]);
//画�
没有合适的资源?快使用搜索试试~ 我知道了~
个人优化后的中国象棋游戏
共140个文件
ico:20个
tlog:18个
h:18个
需积分: 9 9 下载量 68 浏览量
2015-08-12
07:09:30
上传
评论 1
收藏 39.08MB 7Z 举报
温馨提示
个人优化后的中国象棋。通过研究了中国象棋在计算机中的表示问题,以及博弈树的搜索技术及在此基础上发展起来的相关剪枝算法。系统使用 MFC 文档视图体系结构和 Visual C++开发工具,实现了一个具有一定棋力的中国象棋人机对弈程序。此博弈程序实现了人机博弈,悔棋,电脑难度设置,着法名称生成等功能。
资源推荐
资源详情
资源评论
收起资源包目录
个人优化后的中国象棋游戏 (140个子文件)
Chess.aps 51KB
Chess.bsc 10.83MB
ChessDlg.cpp 27KB
Thinker.cpp 25KB
hlinkctl.cpp 12KB
BaiDlg.cpp 10KB
BaseDef.cpp 7KB
BaseClasses.cpp 6KB
CoolButton.cpp 6KB
MoveList.cpp 5KB
ThinkOptionDlg.cpp 4KB
OptionDlg.cpp 2KB
StepList.cpp 2KB
OpenDlg.cpp 2KB
Chess.cpp 1KB
ReportDlg.cpp 1KB
MapFace.cpp 749B
StdAfx.cpp 209B
sdsdsd.cpp 0B
UpgradeReport.css 2KB
Thumbs.db 36KB
Chess.dsp 7KB
Chess.dsw 535B
Chess.exe 6.97MB
Chess.vcxproj.filters 5KB
resource.h 6KB
hlinkctl.h 5KB
ChessDlg.h 4KB
BaseDef.h 2KB
ThinkOptionDlg.h 2KB
BaiDlg.h 2KB
Thinkdef.h 2KB
BaseClasses.h 2KB
ReportDlg.h 1KB
CoolButton.h 1KB
Thinker.h 1KB
OptionDlg.h 1KB
OpenDlg.h 1KB
StepList.h 887B
Chess.h 790B
MoveList.h 789B
MapFace.h 694B
StdAfx.h 485B
UpgradeLog3.htm 19KB
UpgradeLog2.htm 18KB
UpgradeLog.htm 13KB
chesshelp.html 136B
Chess.ico 1KB
dir.ico 1KB
BLACK_P.ico 766B
BLACK_J.ico 766B
RED_M.ico 766B
RED_K.ico 766B
cut.ico 766B
RED_X.ico 766B
RED_J.ico 766B
RED_P.ico 766B
RED_B.ico 766B
icon3.ico 766B
icon1.ico 766B
BLACK_B.ico 766B
BLACK_X.ico 766B
icon2.ico 766B
BLACK_S.ico 766B
RED_S.ico 766B
BLACK_M.ico 766B
BLACK_K.ico 766B
vc110.idb 1.32MB
Chess.ilk 13.87MB
chess-4647c6ec.ipch 68.31MB
Chess.lastbuildstate 129B
Chess.log 588B
Chess.ncb 257KB
StdAfx.obj 707KB
ChessDlg.obj 184KB
Thinker.obj 122KB
BaiDlg.obj 87KB
CoolButton.obj 45KB
ThinkOptionDlg.obj 34KB
OpenDlg.obj 28KB
Chess.obj 25KB
BaseClasses.obj 25KB
OptionDlg.obj 25KB
BaseDef.obj 16KB
StepList.obj 12KB
Chess.opt 58KB
Chess.pch 28.38MB
Chess.pdb 25.15MB
vc110.pdb 3.83MB
Chess.plg 991B
UpgradeReport_Error.png 397B
UpgradeReport_Success.png 381B
UpgradeReport_Information.png 338B
UpgradeReport_Warning.png 292B
Chess.rc 17KB
Chess.rc2 397B
Chess.res 32KB
StdAfx.sbr 5.84MB
ChessDlg.sbr 0B
BaiDlg.sbr 0B
共 140 条
- 1
- 2
资源评论
Hacker_Bin
- 粉丝: 1
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功