利用VB数组的方法实现汉诺塔游戏的设计
排球赛新闻稿-
龙源期刊网
利用
V
B
数组的方法实现汉诺塔游戏的设计
作者:刘晓章
来源:《科技创新导报
》
2011
年第
30
< br>期
摘
要
:
p>
本设计是利用
VB
中的数组方法
,
来设计出一个汉诺塔的交互式游戏程序
,
该程序能让
用户选择想移动的圆盘数量
,
p>
自动生成不同大小和颜色的圆盘
,
用户可以
用鼠标进行游戏操作
,
当
操作错误或者
犯规时有相应的提示。
关键词
:
数组
汉诺塔
移动
圆盘
中图分类号
:TP311.11
文献标识码
:A
文章编号
:1674-098X(2011)10(c)-0012-02
1
引言
在很多关于程序设计的书中介绍到递归的章节时都要讲到
“
汉诺塔
”
的例子
,
大意是在一块板
上有三根针第一根针上从小到大套有
< br>64
个圆盘
,
每次只能移动一个
圆盘
,
而且只能将小的盘片放
在大的盘
片之上
,
通过第二根针过渡
,
将所有圆盘移至第三根针即为成功。在各书中是用递归的
算法来解决
p>
“
汉诺塔
”
的实现
步骤的。如何利用
Visual Basic
来设计可供学生进
行真正操作、玩
的游戏呢?我通过探索和设计
,
用数组的方法实现了互动汉诺塔游戏的制作。
2
具体的设计思路
因为盘片的数量增加会导致玩成功的时间急剧增加
,
按照全部步骤正确
,
以每秒移动一个盘
片计算
,
要玩完
64
p>
个盘片至少要
264-1
次
,
合
5849
亿年之久。所以
,
要首先让用户选择要玩的圆
盘总数<
/p>
n,
根据
n,
设
计出一个二维数组
a(3,n),
第一维为针
< br>(
柱子
)
数
,
第二维为盘数。数组元素的值
为布尔型
< br>,
且对应于盘的位置。如
a(2,5)
< br>为
true
则表示在第二个针上
,
第
5
个盘在其上存在。如
a(3,1)
为
false
则表示在第三个针上
,
第
1
个盘子不存在。
程序开始时
,
根据用户输入的准备移动的圆盘总
数
n,
用控件数组自动生成
n
个圆盘
,
并且随
机产生
其颜色。开始后画在第一个柱子上。
子程序
d_Click(Index As Integer)
,
是准备拿取圆盘
,
判断如果该针上有
圆盘
,
就进行移盘操
作。
子程序
L_MouseMove(Index As
Integer,Button As Integer,Shift As Integer,X As
Single,Y As
Single)
则是当选好盘子后<
/p>
,
到放置盘片的过程中
,
让盘子跟随鼠标光标一起移动。
子程序
xz(index),
判断是选
取
(
拿
)
圆盘
,
还是进行放置圆盘的工作
,
取盘子时该针上有没有盘
子
,
< br>放盘子时要放的盘子是否是该针上最小的盘片等。并进行相应的参数设置。