用vb.net编程汉诺塔 vb汉诺塔程序( 二 )


End Sub
通过分析可知,如果用户所选盘子的上方还有盘子,则不符合游戏规则,会被终止 。另外 , 程序中使用了类似其它软件中的“热区域”的概念,即当拖动鼠标至我们规定的B区域中时,将引发真正的移动操作(即激活子过程MoveImg),其主要代码如下:
Private Sub MoveImg(SImg As Object, DImg As Object, Idx As Integer)
For i = 0 To 4
If DImg(i).Picture = 0 Then’当前区域有位置
If i0 Then
If SImg(Idx).WidthDImg(i - 1).Width Then’符合上小下大游戏条件
DImg(i).Picture = SImg(Idx).Picture’移动盘子
Exit For
Else
Exit Sub’移动操作不合法则退出
End If
Else
DImg(i).Picture = SImg(Idx).Picture ’向区域最下方移动盘子
Exit For
End If
End If
Next i
If i = 4 Then
SImg(Idx).Picture = LoadPicture("")
Label4.Caption = Label4.Caption + 1’更新操作步数
End If
End Sub
在移动子过程中,判定位置是否为空的主要依据是目标Image控件的Picture属性是否为0;当获知位置可用时,再进一步判断当前位置的下面位置盘子的尺寸是否大于当前盘子(即对游戏规则的判定),条件满足的话就可以通过传递Picture属性值来完成移动操作了;最后,还要将源位置盘子清空,并且记录操作步数 。
3.对齐盘子
在上述两模块中都涉及了子过程SortImg,其主要功能是对区域内盘子进行居中对齐处理 , 这是美化程序执行效果的一项重要措施,同时在该部分中还加入了游戏胜利过关的判断(即每转移一步判断一次),主要代码如下:
Private Sub SortImg(Img As Object, IntCenter As Integer)
For i = 0 To 4
Img(i).Left = IntCenter - Img(i).Width / 2
Next i
For i = 0 To 4
If Image1(i).Picture0 Then Exit For
If Image2(i).Picture0 Then Exit For
Next i
【用vb.net编程汉诺塔 vb汉诺塔程序】If i4 Then MsgBox "恭喜:你成功了!", vbOKOnly + vbInformation, "胜利"
End Sub
【编程后记】
面对一些看似复杂的程序功能 , 仔细研究一下,总会有好的思路和方法闪现出来 。本例实现了汉诺塔游戏的基本设计思路 , 大家还可以在盘子数量、步数排行榜等方面予以改进,以使该程序变得更加丰富、精彩!
汉罗塔游戏VB程序怎么写Dim N As Integer
Private Sub Form_Click()
Dim N As Integer
N = Val(InputBox("请输入汉诺塔用vb.net编程汉诺塔的圆盘总数:"))
Call MoveDisk(N, "A", "B", "C")
End Sub
Sub MoveDisk(N, A As String, B As String, C As String)
If N = 1 Then
Print "将第1个圆盘从第"A"根柱子移到第"C"根柱子"
Else
Call MoveDisk(N - 1, A, C, B)
Print "将第"N"个圆盘从第"A"根柱子移到第"C"根柱子"
Call MoveDisk(N - 1, B, A, C)
End If
End Sub
这个是文字型用vb.net编程汉诺塔的,用vb.net编程汉诺塔你自己转换成图片用vb.net编程汉诺塔的吧
用vb.net编程汉诺塔的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vb汉诺塔程序、用vb.net编程汉诺塔的信息别忘了在本站进行查找喔 。

推荐阅读