⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 studydlg.cpp

📁 围棋人机对弈程序源码 此版本目前还只能下布局阶段
💻 CPP
字号:
#include "stdafx.h"
#include "Sieger.h"
#include "StudyDlg.h"

IMPLEMENT_DYNAMIC(CStudyDlg, CDialog)
CStudyDlg::CStudyDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CStudyDlg::IDD, pParent)
	, formID(_T("1"))
	, remark(_T(""))
	, formScore(_T(""))
{
	m_pBlackBrush = new CBrush;
	m_pWhiteBrush = new CBrush;
	m_pBlackBrush->CreateSolidBrush(0);
    m_pWhiteBrush->CreateSolidBrush(0xffffff);
	stepnum=0;
	steps.RemoveAll();
}

CStudyDlg::~CStudyDlg()
{
	delete m_pBlackBrush;
	delete m_pWhiteBrush;
}

void CStudyDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_ID, formID);
	DDX_Text(pDX, IDC_REMARK, remark);
	DDV_MaxChars(pDX, remark, 255);
	DDX_CBString(pDX, IDC_Value, formScore);
	DDV_MaxChars(pDX, formScore, 1);
}


BEGIN_MESSAGE_MAP(CStudyDlg, CDialog)
	ON_WM_PAINT()
	/*
	ON_BN_CLICKED(IDC_GetForm, OnBnClickedGetform)
	ON_WM_LBUTTONDOWN()
	ON_BN_CLICKED(IDC_BUTTON_PREV, OnBnClickedButtonPrev)
	ON_BN_CLICKED(IDC_BUTTON_NEXT, OnBnClickedButtonNext)
	ON_BN_CLICKED(IDC_SetScore, OnBnClickedSetscore)
	ON_BN_CLICKED(IDC_SetRemark, OnBnClickedSetremark)
	ON_WM_RBUTTONDOWN()
	*/
END_MESSAGE_MAP()


// CStudyDlg 消息处理程序

void CStudyDlg::OnPaint()
{
//创建内存作图环境
	CPaintDC dc(this);
	CDC MemDC;
	MemDC.CreateCompatibleDC(NULL);
	CBitmap MemBitmap;
	MemBitmap.CreateCompatibleBitmap(&dc,400,400);
	MemDC.SelectObject(&MemBitmap);
//画蓝色背景
	MemDC.FillSolidRect(0,0,400,400,0xff9999);
//画棋盘边框
	CRect rect(19,19,382,382);
	MemDC.FrameRect(&rect,m_pBlackBrush);
//画棋盘纵横线
	for(int i=1;i<20;i++)
	{
		MemDC.MoveTo(20,i*20);
		MemDC.LineTo(380,i*20);
		MemDC.MoveTo(i*20,20);
		MemDC.LineTo(i*20,380);
	}
//画星
	MemDC.SelectObject(m_pBlackBrush);
	for(i=0;i<9;i++)
	{
		MemDC.Ellipse(i%3*120+75,i/3*120+75,i%3*120+85,i/3*120+85);
	}
//画棋子
	for(i=0;i<361;i++)
	{
		if(Board.pHolder[i])
		{
			if(Board.pHolder[i]->nColor==BLACK)MemDC.SelectObject(m_pBlackBrush);
			else MemDC.SelectObject(m_pWhiteBrush);
			MemDC.Ellipse(i%19*20+10,i/19*20+10,i%19*20+30,i/19*20+30);
		}
	}
//拷贝到显示设备并清除内存草稿
	dc.BitBlt(0,0,400,400,&MemDC,0,0,SRCCOPY);
	MemBitmap.DeleteObject();
    MemDC.DeleteDC();
}

/*
void CStudyDlg::OnBnClickedGetform()
{
	UpdateData(TRUE);
	if(!pDB->IsOpen())pDB->Open("ds.mdb");
	CDaoRecordset rs(pDB);
	CString str="select * from DS where ID=";
	str+=formID;
	rs.Open(dbOpenDynaset,str);
	COleVariant var;
	var=rs.GetFieldValue("steps");
	str=var.pbVal;
	var=rs.GetFieldValue("remark");
	remark=var.pbVal;
	var=rs.GetFieldValue("score");
	formScore=var.pbVal;
	UpdateData(FALSE);
	rs.Close();
	int i=str.GetLength();
	stepnum=i/2;
	steps.RemoveAll();
	char c;
	int n;
	int j=0;
	for(i=0;i<stepnum;i++)
	{
		c=str[i*2+1];
		n=c;
		n=n-'A';
		n=n*19;
		c=str[i*2];
		n=n+c-'A';
		if(n>361){n=300-j;j++;}
		steps.Add(n);
	}
	Board.Reset();
	for(i=0;i<stepnum;i++)Board.Go(steps[i]);
	Invalidate(FALSE);
}

void CStudyDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
	Board.Reset();
	if(stepnum<steps.GetCount())stepnum++;
	for(int i=0;i<stepnum;i++)Board.Go(steps[i]);
    Invalidate(FALSE);
	CDialog::OnLButtonDown(nFlags, point);
}

void CStudyDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
	Board.Reset();
	if(stepnum>0)stepnum--;
	for(int i=0;i<stepnum;i++)Board.Go(steps[i]);
    Invalidate(FALSE);
	CDialog::OnRButtonDown(nFlags, point);
}

void CStudyDlg::OnBnClickedButtonPrev()
{
	int num=atoi(formID.GetBuffer());
	if(num>1)
	{
		num--;
		formID.Format("%d",num);
		UpdateData(FALSE);
		OnBnClickedGetform();
	}
}

void CStudyDlg::OnBnClickedButtonNext()
{
	int num=atoi(formID.GetBuffer());
	if(num<2404)
	{
		num++;
		formID.Format("%d",num);
		UpdateData(FALSE);
		OnBnClickedGetform();
	}
}

void CStudyDlg::OnBnClickedSetscore()
{
	UpdateData(TRUE);
	CDaoRecordset rs(pDB);
	CString str="select * from DS where ID=";
	str+=formID;
	rs.Open(dbOpenDynaset,str);
	rs.Edit();
	rs.SetFieldValue("score",formScore.GetBuffer());
	rs.Update();
	rs.Close();
}

void CStudyDlg::OnBnClickedSetremark()
{
	UpdateData(TRUE);
	CDaoRecordset rs(pDB);
	CString str="select * from DS where ID=";
	str+=formID;
	rs.Open(dbOpenDynaset,str);
	rs.Edit();
	rs.SetFieldValue("remark",remark.GetBuffer());
	rs.Update();
	rs.Close();
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -