利用VB数组的方法实现汉诺塔游戏的设计

玛丽莲梦兔
763次浏览
2021年02月06日 22:11
最佳经验
本文由作者推荐

排球赛新闻稿-

2021年2月6日发(作者:剃头匠)


龙源期刊网



利用


V B


数组的方法实现汉诺塔游戏的设计



作者:刘晓章



来源:《科技创新导报 》


2011


年第


30

< br>期







:


本设计是利用


VB


中的数组方法

< p>
,


来设计出一个汉诺塔的交互式游戏程序


,


该程序能让


用户选择想移动的圆盘数量


,


自动生成不同大小和颜色的圆盘


,


用户可以 用鼠标进行游戏操作


,



操作错误或者 犯规时有相应的提示。




关键词


:


数组



汉诺塔



移动



圆盘




中图分类号


:TP311.11


文献标识码


:A


文章编号

< p>
:1674-098X(2011)10(c)-0012-02


1


引言




在很多关于程序设计的书中介绍到递归的章节时都要讲到


< p>
汉诺塔



的例子


,


大意是在一块板


上有三根针第一根针上从小到大套有

< br>64


个圆盘


,


每次只能移动一个 圆盘


,


而且只能将小的盘片放


在大的盘 片之上


,


通过第二根针过渡


,


将所有圆盘移至第三根针即为成功。在各书中是用递归的


算法来解决



汉诺塔



的实现 步骤的。如何利用


Visual Basic


来设计可供学生进 行真正操作、玩


的游戏呢?我通过探索和设计


,


用数组的方法实现了互动汉诺塔游戏的制作。



2


具体的设计思路




因为盘片的数量增加会导致玩成功的时间急剧增加


,

< p>
按照全部步骤正确


,


以每秒移动一个盘

< p>
片计算


,


要玩完


64


个盘片至少要


264-1



,



5849


亿年之久。所以


,


要首先让用户选择要玩的圆


盘总数< /p>


n,


根据


n,


设 计出一个二维数组


a(3,n),


第一维为针

< br>(


柱子


)


,


第二维为盘数。数组元素的值


为布尔型

< br>,


且对应于盘的位置。如


a(2,5)

< br>为


true


则表示在第二个针上


,



5


个盘在其上存在。如

< p>
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>放盘子时要放的盘子是否是该针上最小的盘片等。并进行相应的参数设置。


排球赛新闻稿-


排球赛新闻稿-


排球赛新闻稿-


排球赛新闻稿-


排球赛新闻稿-


排球赛新闻稿-


排球赛新闻稿-


排球赛新闻稿-