- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
允许玩家通过键盘上的方向键在迷宫中移动,在穿越过程.doc
题目9:设计并实现图形版的穿越迷宫问题。每次随机生成迷宫,系统先计算好路径,允许玩家通过键盘上的方向键在迷宫中移动,在穿越过程中,通过对话框或其他界面提示给予玩家一定的帮助,直到成功到达迷宫出口。
(2) 程序实现的基本思想
设计该迷宫可使用小应用程序.程序设计分为四个主要步骤:
第一,设计一个迷宫数组。首先我们要生成一个方格阵图,数组中每个元素代表图中相对应的一个小方格,每个方格由上墙与右墙组成,也就是说,要生成一个迷宫,只需要拆掉每个方格的上墙或右墙就可以实现了。令每一个数组元素赋予不同的字符,主要用来标记该坐标的方格是否具有上墙、右墙、边界,以及上、右墙是否皆有的四种情况。在运行程序的时候,就在各个位置上画上相应的图就可以了。
第二,使用递归方法随机生成一个迷宫格数组。从数组位置始点(1,1)出发,随机选取一个方向,再沿着方向走,进入下一个方格,再随机选取一个方向再走下,直到走遍所有方格,注意的是每个方格只能走一次。设当前位置为(i,j)处的方格里,现随机选择一个方向,如果方向所指向的位置为边界或是已设置过的地方,则另外再随机选取一个方向。选定位置后,如果所指向的方向向上,则拆掉(i,j)i,j+1)i,j)i,j)处,首先向各方向路径进行搜索;如果目标找到,则停止向其他方向搜索。否则则继续沿其他路径搜索,直到搜索到终点(n,n)为止。最后系统会根据由当前位置通往终点的路径给出路径方向提示。
第四,设计让小机械猫自动走出迷宫。设小机械猫的当前位置为(i,j),则系统通过调用方向提示的办法明确路径方向,再移动小机械猫,逐步走出迷宫。
(3) 程序的UML图
(4) 系统流程
(5) 运行结果及分析
1、运行程序
图(1)
由上图可以看到左上角显示出关数,而右边的面板上有6个按钮,1个标签,标签用于显示关数,六个按钮分别分成三组,第一组:“增加关数”、“减小关数”、“生成迷宫”;第二组:“方向提示”;第三组:“自动行走”、“行走停止”。其中第一组中,一定先设定好关数,才“生成迷宫”。
2、进入游戏
程序通过按键“”、“ ”、“ ”、“ ”来移动小机械猫,当发生迷路时,可通过“方向提示”按钮进行提示,其中图中红色箭头的指向为通往终点的路径方向。此外还可以通过“自动行走”按钮使小机械猫自动走出迷宫。如果需要还可以“生成迷宫”按钮生成同样级别的迷宫,使同样级别的迷宫多样化。(见图(2))”显示方向”按钮的使用,使用该按钮不能达到按一下按钮就马上在界面上显示出方向的要求,而需要多按几下方能显示出来.此问题至今尚未解决.此外,在设计上,当玩家完成游戏时,程序没有询问玩家就直接进入下一轮游戏,这使程序未能做到人性化。此为程序的不足之处.
(7)合作课程设计的成员分工情况
本课程设计由本人自主完成.
(8) 参考文献
1、Java程序设计教程(第五版)/(美)刘易斯(Lewis,J.)/2002年4月1日印刷
4、Java案例开发/张靓等编著。-北京:中国水利水电出版社/2005年1月
5、Java案例开发集锦/袁然,郑自国,邹丰义编著。-北京:电子工业出版社,2005.9
6、Java 2教程(第五版)/(美)林登(Linden,P.V.D)
6
interface
KeyListener
JApplet
Mi
# 加,减,产生迷宫,提示,演示,停止 :Button
# 标记 :char[][]
# 监听器 :按钮监听器
# timer :Timer
# grass、people、grassUP、grassRight :Image
# grassFloor、offScreen :Image
# label :Label;
# panel :Panel
# mark :int[][]
+ init() :void
+ paint(g :Graphics) :void
生成迷宫() :void
genmaze(i :int ,j :int) :void
+ 画出迷宫(page :Graphics) :void
+ keyTyped(e :KeyEvent) :void
+ keyReleased(e :KeyEvent) :void
+ keyPressed (e : KeyEvent) :void
+ update(g :Graphics) :void
向右() :boolean
向上() :boolean
向左() :boolean
向下() :boolean
画出人(page
您可能关注的文档
最近下载
- 《客户服务与管理》教案 第5课 学会使用即时通信工具.pdf VIP
- 民爆信息系统网路服务平台.pptx VIP
- 《QCNPC41-2001-防喷器判废技术条件》.pdf VIP
- 《客户服务与管理》(李清文)718-1教案 第2课 熟悉客户服务人员的综合素质要求.docx VIP
- 《客户服务与管理》(李清文)718-1教案 第3课 学会使用电话服务工具.docx VIP
- 3《峨日朵雪峰之侧》同步练习(含答案)统编版高中语文必修上册.docx VIP
- 第2课 让美德照亮幸福人生.pptx VIP
- 《峨日朵雪峰之侧》同步练习 统编版高中语文必修上册.docx VIP
- 海马普力马PREEMA 1.8L、1.6升 电路图07-发动机和变速箱控制.pdf VIP
- 《客户服务与管理》教案 第1课 初识客户服务与管理.docx
文档评论(0)