龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

用VB编写Hanoi塔问题动态演示程序[组图](2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
这一部分的初始化工作在准备按钮的click事件过程中实现,其核心代码如下: Dim i As Integer 设置Form窗体属性 Form1.Caption = "准备..." Form1.Cls 设置三个柱子的标

  这一部分的初始化工作在准备按钮的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

精彩图集

赞助商链接