环境:VS2017,MFC
语言:C++
功能:
•
打开
后您首先进入的是演示模式,若想进入游玩模式请点击“游玩模式”下的“进入”。点击“退出”可退出游玩模式回到演示模式。
•
确定好盘数与速度后点击“开始演示”,程序将自动演示汉诺塔移动方法。(速度数字越小,移动越快)您可以随时点击快速完成,电脑将以最快速度完成演示。完成后您可以通过点击“复位”或者直接改变盘数(或速度)来回到初始状态。
•
进入游玩模式后,点击每根柱子下相应的按钮,可以选中该柱最上面的圆盘,再点击另一个按钮,该圆盘便会被移动到相应柱子上。注意不要违反规则。点击“复位”可回到初始状态。将所有圆盘从
A
柱移到
C
柱即为成功完成。
•
有“无视规则”选项可以选择
(
付费选项,可扫描弹出的二维码
)
,但注意复位后便会重置该功能。
(
无视规则模式:圆盘可以以任意顺序放在柱子上
)
•
有小彩蛋需要您来探索。
实现:
•
该程序基于
MFC
。用到了按钮、编辑框、图片控制框、上下箭头调整框等等。一个对话框类,定义与声明了其中各个控件的功能。一个
Plate
类和一个
Hanoi
类,负责柱子与圆盘的生成以及移动。自动演示功能由经典的汉诺塔递归算法实现,并且会显示出每一步具体的移动方式,游玩模式将由用户完全控制,用三个按钮实现了圆盘的选中以及移动,选中圆盘后会在相应圆盘四周画一个黑框,最终在信息箱子中显示所用步数。复位功能以及直接调整箭头,将直接重绘整个显示界面,以实现重置。
•
按下按钮将会实现相应功能,并且开启或关闭某些控件。上下箭头控制编辑框,需要打开自动寻找最近编辑框功能,才能使其相连。图片框中按像素调整距离,并可以将位图加载为资源以实现调用。编辑框设为只读,且某些设为只显示数字。
代码已放至github