用VB编写Hanoi塔问题动态演示程序[组图](2)
这一部分的初始化工作在准备按钮的click事件过程中实现,其核心代码如下:
Dim i As Integer
'设置Form窗体属性
Form1.Caption = "准备..."
Form1.Cls
'设置三个柱子的标记
CurrentX = 4000
CurrentY = hLevel + 61
Form1.FontSize = 16
Form1.ForeColor = vbRed
Form1.FontBold = True
Print "A"
CurrentX = 8000
CurrentY = hLevel + 61
Print "B"
CurrentX = 12000
CurrentY = hLevel + 61
Print "C"
Form1.ForeColor = &H80000012
Form1.FontSize = 10
Form1.FontBold = False
'画底线
Form1.Line (0, hLevel)-(15360, hLevel + 100), vbGreen, BF
'画三根柱子,A柱子的柱底坐标是(4000,10300)
'纵坐标减10只是为了显示时看的效果更好一些,其实是不应该减的,减了后柱子底端纵坐标与底线上沿纵坐标就不一致了,但屏幕视觉是一致的
Form1.Line (3995, 700)-(4005, hLevel - 10), vbBlack, BF
Form1.Line (7995, 700)-(8005, hLevel - 10), vbBlack, BF
Form1.Line (11995, 700)-(12008, hLevel - 10), vbBlack, BF
number = Val(InputBox("请输入盘子数:", "输入数据", "3"))
Form1.Caption = "共有" & number & "个盘子"
'盘子宽400*i,高度200
'相邻盘子之间的高度差设置为210,如果设置为相差200的话,当把上面一个盘子移走时两个盘子重叠部分无法重新修复
For i = 1 To number
Form1.Line ((4000 - (i * 400) / 2), (hLevel - (number + 1 - i) * 210))-((4000 + (i * 400) / 2), (hLevel - (number - i) * 210 - 10)), , BF
Next i
baseCoordinateY(1) = hLevel - number * 210
baseCoordinateY(2) = hLevel
baseCoordinateY(3) = hLevel
- 上一篇:让VB开发环境支持鼠标滚轮
- 下一篇:VB 在远程管网数据传输中的应用[组图]