汉诺塔VB的心得体会

来源:百度知道 编辑:UC知道 时间:2024/07/04 08:12:48
VB制作汉诺塔的重点难点和心得体会 急

VB编写益智游戏“汉诺塔”
海粟/文
《软件报》2007年47期 61-74

【编程引子】

“汉诺塔”问题源自印度的一个古老传说,对于它的算法比较常见的是应用递归调用。在本例中,笔者将给大家介绍一种更简单和直观的处理方法。

【编程分析】

汉诺塔游戏的主要目的是借助B区域,将A区域的五只盘子转移到C区域中,要求每次移动必须从最上层盘子开始,而且必须始终保证小号盘子在大号盘子的上方。

程序的主要技术点,除了对上述要求的实现外,还要考虑到鼠标拖放盘子以及盘子的定位、排序等内容。在设计初期,笔者首先考虑采用单击选定,再次单击定位的方式来移动盘子,但这样做必须要让程序记住谁是活动盘子,而且操作的直观性较差。所以,最后笔者还是选择了利用鼠标事件来模拟拖动盘子的动作。

而对于盘子移动后的定位问题,如果单纯靠坐标计算来显然,工作量是非常大的。所以,笔者在本例中应用了“一个萝卜一个坑”的简单原理,将目标位置提前放置好Image控件,这样一来,盘子的移动和定位操作都成了对目标控件属性的控制,处理起来变得十分方便。

【主要代码】

1.程序初始化

程序初始化操作在窗体加载事件中完成,另外它与“重新开始”功能模块的作用完全相同,所以可以通过调用的方式来共享代码。代码的主要功能是移动步骤清零、在A区域复位盘子,以及清除B和C两区域盘子等,主要内容如下:

Private Sub Command1_Click()

Label4.Caption = 0 ’移动步骤清零

For i = 0 To 4

Image1(i).Picture = LoadPicture(App.Path & "\p" & i & ".jpg")

Image2(i).Picture = LoadPicture("")

Image3(i).Picture = L