• 大小: 7.74MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-23
  • 语言: C/C++
  • 标签: MFC  VS2019  汉诺塔  

资源简介

汉诺塔游戏,VS2019MFC平台开发,此为发行版内含exe文件和源码。可鼠标拖动盘子(不会出现盘子移动轨迹),画面清晰流畅;可连续演示和单步演示(上一步、下一步),可暂停;可记录游戏用时和步数,并排序展示。效果展示见https://blog.csdn.net/qq_44643644/article/details/108433423

资源截图

代码片段和文件信息

// CDlgPlay.cpp: 实现文件
//z

#include “pch.h“
#include “Tower_Hanoi.h“
#include “CDlgPlay.h“
#include “CDlgShow.h“
#include “afxdialogex.h“
#include “math.h“
#include “CInforFile.h“

// CDlgPlay 对话框

IMPLEMENT_DYNAMIC(CDlgPlay CDialogEx)

CDlgPlay::CDlgPlay(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_DlgPlay pParent)
 SumTime(0)
 SumStep(0)
{
flag_down = false;
num = -1;
idx = -1;
if_stop = false;
flag_end = false;
}

CDlgPlay::~CDlgPlay()
{
}

void CDlgPlay::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX IDC_COMBO1 m_combo);
DDX_Text(pDX IDC_EDIT2 SumTime);
DDX_Text(pDX IDC_EDIT1 SumStep);
}


BEGIN_MESSAGE_MAP(CDlgPlay CDialogEx)
ON_CBN_SELCHANGE(IDC_COMBO1 &CDlgPlay::OnCbnSelchangeCombo1)
ON_WM_PAINT()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_ERASEBKGND()
ON_BN_CLICKED(IDC_BUTTON1 &CDlgPlay::OnBnClickedButton1)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON2 &CDlgPlay::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON3 &CDlgPlay::OnBnClickedButton3)
END_MESSAGE_MAP()


// CDlgPlay 消息处理程序


BOOL CDlgPlay::OnInitDialog()
{
CDialogEx::OnInitDialog();

// TODO:  在此添加额外的初始化
//设置窗口大小和位置
MoveWindow(0 0 800 500);
CenterWindow();

return TRUE;  // return TRUE unless you set the focus to a control
  // 异常: OCX 属性页应返回 FALSE
}

//下拉框选项被选中
void CDlgPlay::OnCbnSelchangeCombo1()
{
// TODO: 在此添加控件通知处理程序代码
num = m_combo.GetCurSel() + 3;
if_stop = false;
flag_down = false;
flag_end = false;
//将上一个计数器停止计时
KillTimer(index);

index = m_combo.GetCurSel();

//每次切换时把时间清零
SumTime = 0;
SumStep = 0;
UpdateData(FALSE);
index++;
if (index == 1)
{
SetTimer(1 1000 NULL);
}
else if (index == 2)
{
SetTimer(2 1000 NULL);
}
else if (index == 3)
{
SetTimer(3 1000 NULL);
}
else if (index == 4)
{
SetTimer(4 1000 NULL);
}
else if (index == 5)
{
SetTimer(5 1000 NULL);
}
//初始化盘子位置信息
for (int i = 0; i < num; ++i)
{
site[i] = 0;//初始情况都在左柱
}
flag_down = false;
InvalidateRect(CRect(150 75 610 335) FALSE);//重绘
}


void CDlgPlay::OnPaint()
{
CPaintDC dc(this); // device context for painting
   // TODO: 在此处添加消息处理程序代码
   // 不为绘图消息调用 CDialogEx::OnPaint()
ShowGraph(&dc);//绘制图像
}

//绘制图像
void CDlgPlay::ShowGraph(CDC* dc)
{
CRect rc;//获取客户区
GetClientRect(&rc);

CDC pdc;
pdc.CreateCompatibleDC(dc);//创建一个临时显示设备

CBitmap bm;//创建一个临时位图
bm.CreateCompatibleBitmap(dc rc.Width() rc.Height());
pdc.Selectobject(&bm);
//填充底色
pdc.FillSolidRect(rc dc->GetBkColor());

//绘制三根柱子和底面托盘
CPen pen(PS_SOLID 3 RGB(0 0 0));
pdc.Selectobject(&pen);
pdc.MoveTo(150 320);
pdc.LineTo(610 320);
for (int i = 0; i < 3; ++i)
{
pdc.MoveTo(230 + i * 150 95);
pdc.LineTo(230 + i * 150 320);
}
pen.Deleteobject();

//绘制柱子上的盘子
int n[3] = { 000 };//用来记录三根柱子上的盘子数,提供顶部坐标
for (int i = 

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

     文件       8696  2020-09-04 14:33  Tower_Hanoi\CDlgPlay.cpp

     文件       1693  2020-09-03 18:59  Tower_Hanoi\CDlgPlay.h

     文件       2206  2020-09-03 19:21  Tower_Hanoi\CDlgRecord.cpp

     文件        555  2020-09-03 19:21  Tower_Hanoi\CDlgRecord.h

     文件       1020  2020-09-02 11:19  Tower_Hanoi\CDlgRule.cpp

     文件        466  2020-09-03 19:02  Tower_Hanoi\CDlgRule.h

     文件       7620  2020-09-03 13:22  Tower_Hanoi\CDlgShow.cpp

     文件       1673  2020-09-02 17:31  Tower_Hanoi\CDlgShow.h

     文件       2936  2020-09-05 21:06  Tower_Hanoi\CInforFile.cpp

     文件        780  2020-09-04 21:50  Tower_Hanoi\CInforFile.h

     文件       1559  2020-08-24 13:59  Tower_Hanoi\framework.h

     文件       1782  2020-09-05 23:10  Tower_Hanoi\MainFrm.cpp

     文件        681  2020-08-24 13:59  Tower_Hanoi\MainFrm.h

     文件        158  2020-08-24 13:59  Tower_Hanoi\pch.cpp

     文件        544  2020-08-24 13:59  Tower_Hanoi\pch.h

     文件        676  2020-08-24 13:59  Tower_Hanoi\res\TowerHanoi.rc2

     文件      67777  2020-05-30 00:12  Tower_Hanoi\res\Tower_Hanoi.ico

     文件       4710  2020-05-30 00:12  Tower_Hanoi\res\Tower_HanoiDoc.ico

     文件     270398  2020-08-24 14:38  Tower_Hanoi\res\xiaojingling.ico

     文件       1279  2020-09-04 21:25  Tower_Hanoi\resource.h

     文件        147  2020-09-04 22:35  Tower_Hanoi\stock.txt

     文件        299  2020-08-24 13:59  Tower_Hanoi\targetver.h

     文件     376140  2020-09-05 23:08  Tower_Hanoi\TowerHanoi.aps

     文件      26682  2020-09-05 23:02  Tower_Hanoi\TowerHanoi.rc

     文件       4843  2020-08-24 13:59  Tower_Hanoi\Tower_Hanoi.cpp

     文件    2584576  2020-09-05 23:11  Tower_Hanoi\Tower_Hanoi.exe

     文件        574  2020-08-24 13:59  Tower_Hanoi\Tower_Hanoi.h

     文件    1987998  2020-09-05 23:11  Tower_Hanoi\Tower_Hanoi.iobj

     文件     535296  2020-09-05 23:11  Tower_Hanoi\Tower_Hanoi.ipdb

     文件   25579520  2020-09-05 23:11  Tower_Hanoi\Tower_Hanoi.pdb

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

评论

共有 条评论