用VB编写Hanoi塔问题动态演示程序[组图](4)
'向左移
For j = (pillarnum(getone) * 4000 - (n * 400) / 2) To (pillarnum(putone) * 4000 - (n * 400) / 2) + stepC Step -stepC
Form1.Line (j, i)-(j + n * 400, i + 200), Form1.BackColor, BF
Form1.Line (j - stepC, i)-(j - stepC + n * 400, i + 200), , BF
delay
Next j
End If
'向下移动到third柱子底端
For k = i To baseCoordinateY(pillarnum(putone)) - 210 - stepC Step stepC
'把矩形本次移动前的图形擦掉
Form1.Line ((pillarnum(putone) * 4000 - (n * 400) / 2), k)-((pillarnum(putone) * 4000 + (n * 400) / 2), k + 200), Form1.BackColor, BF
fixpillar (putone)
Form1.Line ((pillarnum(putone) * 4000 - (n * 400) / 2), k + stepC)-((pillarnum(putone) * 4000 + (n * 400) / 2), k + stepC + 200), , BF
delay
Next k
'最后在柱子底端再补画一次高度为210的矩形,
'因为k循环最后一次执行循环体时,k值未必正好等于循环终值baseCoordinateY(pillarnum(putone)) - 210 - stepC,
'所以要补一个上沿纵坐标为baseCoordinateY(pillarnum(putone)) - 210 - stepC矩形
Form1.Line ((pillarnum(putone) * 4000 - (n * 400) / 2), k)-((pillarnum(putone) * 4000 + (n * 400) / 2), k + 200), Form1.BackColor, BF
fixpillar (putone)
Form1.Line ((pillarnum(putone) * 4000 - (n * 400) / 2), baseCoordinateY(pillarnum(putone)) - 210)-((pillarnum(putone) * 4000 + (n * 400) / 2), baseCoordinateY(pillarnum(putone)) - 210 + 200), , BF
'更新各柱子最面一个盘子上沿的纵坐标
baseCoordinateY(pillarnum(getone)) = baseCoordinateY(pillarnum(getone)) + 210
baseCoordinateY(pillarnum(putone)) = baseCoordinateY(pillarnum(putone)) - 210
End Sub
- 上一篇:让VB开发环境支持鼠标滚轮
- 下一篇:VB 在远程管网数据传输中的应用[组图]