版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计说明书N0.9推箱子趣味游戏1. 课程设计的目的随着科技水平的发展,人们的生活,工作节奏越来越快,同时人们的各方面的 压力也越来越大。在社会的条件下,压力给人们带来很多烦恼,所以合理的解压, 但又不会浪费很多时间的方式成为现代人的共同心愿。游戏随之产生,他的娱乐 性和有趣性也越来越被大家所认可,小游戏可以安装在手机里,让人们无论何时 何地都能玩到游戏。基于这样的目的,我们在本次课程设计中为大家开发了一款 适合休闲娱乐的小游戏一推箱子趣味游戏。他不仅可以帮助人们消磨时间,还可 以在一定程度上开发智力,此游戏的挑战性更加激发大家玩此游戏的热情。此课设计是配合JAVA程序 设计课程,深入学习
2、掌握JAVA语言,熟练运用Java工具对系统的编写。通过课 程设计各个项目的综合训练,培养学生实际分析问题,编程和动手能力,提高学生 的综合素质。2. 系统总体设计在此游戏中本着娱乐为目的,游戏者不仅可以在玩游戏还可以享受音乐,游 戏界面简单,操作容易,在玩游戏的同时还可以锻炼大家的反应速度及灵敏程度, 在游戏中设置关数,级别由低到高,一关比一关难,提高大家的兴趣,玩家可以 自由的选关,并设置了分数的存储系统。系统中又增加了音乐的设置可以让玩家 享受音乐。通过对小人移动箱子是否到达墙边进行判断决定胜负及是否可以进入 下一关。2.1系统功能模块划分在该系统中总共划分了五个模块(1)初始化模块,对
3、游戏界面进行初始化操作,对各个按钮的功能进行操作 使之当动作发生时有一定的反应及相应。(2)画图模块,主要是对地图的绘制进行画图的操作,在此游戏中不同的数 字代表不同的含义。(3)移动箱子模块,在推箱子游戏中最主要的模块,用户可以移动箱子到界面中的各个地方,以完成游戏设定的任务。(4) 移动小人模块,同过对小人的操作使之小人能够操作木块到各个位置。(5) 功能控制模块,通过对此功能的设置,可以对游戏的功能进行设置,可 以设置背景音乐,及通过的关数进行一些必要的设定。2.2系统功能结构图推箱子游戏主要分为初始化模块,画图模块,移动箱子模块,移动小人模 块,功能控制模块推箱子游戏功能模块图如图1所
4、示。图1.功能模块图2.3系统流程图推箱子游戏由功能和规则的确定。系统流程图如下图2所示图2.系统执行流程图3详细设计3.1程序中自定义类说明(1)重来:重新开始当前关;(2)悔一步:返回上一移动状态(可以连续返回多步);(3)第一关:游戏系统默认开始关为第一关,此按钮可以将关从其它关跳跃到第 一关;(4)上一关:返回到当前关的上一关;(5)下一关:返回到当前关的下一关;(6) 最终关:跳跃到最后一关,即第五十关;(7) 选关:选择想要玩的关;(8) 音乐关(开):默认为开,点击自动关闭音乐和开启音乐;(9) 更换音乐:从不同的音乐中选取适合玩家的音乐。3.2程序中主要方法说明(1) 界面框架
5、与按钮设计界面设计中包括了,所有你所直观见到的图形界面,窗体的大小,下拉菜单中 的功能菜单。使得玩家能够很直观的见到所有游戏中的功能,界面中有菜单, 括:“选项” “设置音乐” “帮助”,按钮包括:“重来”“悔一步”“第一关” “上 关”“下一关” “最终关” “选关”“音乐”。部分代码如下:Menu setmuc=new Menu(” 设置音乐”);setmuc.add( nor);setmuc.add( qin);setmuc.add(po);音乐调用代码如下:void mystop()midi.stop();midi.close();sig n=false;boolea n isplay
6、()return sig n;(2) 地图的绘制形成地图以二维数组的形式进行存储的,不同的数字有着不同的含义。在地图当 中不同的数字代表不同的含义我当时是将09解读成为不同的图形与图像。 "0"代表"地图以内的空位"; "1"代表"地图中的边缘"; "2"代表"地图以内的空位非点位; "3"代表"地图中的箱子"; "4"代表"点位" "5"代表"小人面部朝下" &qu
7、ot;6"代表"小人面部朝左" "7"代表"小人面部朝右"; "8"代表"小人面部朝上"; "9"代表"箱子已经到达点位。(3)推箱子游戏的游戏性其主要功能是给用户一个友好的游戏界面,游戏中包括50关的地图,推箱子这个游戏的50个地图是事先完成的,将所有地图上面的信息以数字的形式储 存在一个20*20的二维数组当中;然后,每一关都按照数组重新绘制地图, 这样 就拥有了 50张地图。(4)游戏规则的设置在游戏中要保证箱子不能重叠,箱子不能碰到墙壁,在设置过程
8、中一定要将 移动一次箱子的位置后位置的布尔值要设置为true,不然移动一次箱子后不能再移动。(5)小人与箱子移动的算法移动中包括正移动,与"悔一步"的负移动。正移动:小人上下左右的移动是,归结起来上下左右是一个判断的算法,判断都是通过判断小人前面是否是空位箱 子或者是墙,如果没有,就移动;有的话,据判断箱子是否可以移动,最后讨论 箱子推过的,小人移动,以及被遮挡住点的图形变化,重新绘制地图,算法判断完毕传出数据记录在一个栈当中,以备“悔一步”使用。负移动:通过记录在栈中的 数据判断,前一步是的移动方向以及移动使用过的算法,逆向将代码重新运行,同时 绘制地图以达到前一步的状态
9、。(6)移动的代码在本游戏系统中,给人的视觉感受应该是能感受都动作的变化,逼真的人物 动作会使系统更有效。通过控制人物,箱子,空地,障碍物在数组中的位置的改 变来控制移动动作。(7)的应用推箱子中的数据存储是很重要的,不然无法进行“悔一步”的操作本系统。采用栈的存储方式来存储并控制人物,箱子的移动和地图的变换,悔一步操作让 玩家有了反悔的一步,这节省玩家的时间,避免因错位导致重新开始。4. 设计结果与分析4.1程序运行结果程序编译无错误,单击运行按钮,运行通过,开始时弹出该游戏的页面,然 后开始游戏。一般的会显示出第一关的游戏,玩家可以根据自己的实际水平去操 作,而后选择适于自己水平的关卡来玩
10、。一开始运行程序,显示该页面时,会在页面的正中央显示出该关为第一关, 以提醒玩家。第一关如下图3所示。测在是第图3.推箱子游戏第一关界面沈阳大学当玩家想选关时,可以根据自己的意愿去选关闯。选第50关,如下图4所示。 jJlJ Mj现在是第 50兴图4.推箱子游戏第50关页面4.2尚需解决的冋题游戏的背景音乐比较单一,可以通过在“选项”模式中添加“背景音乐导入” 模块,导入玩家自己喜欢的音乐。在此次课程设计中,我遇到了一些问题,如: 对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于 Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法 错误,而且要在短
11、时间内用Java语言来设计一个具体的系统是一个较大的挑战; 还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对 应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍, 对于书上以及网站上下载的资料中的 Java实例必须有清楚的理解,还有就是多跟 精通此方面的老师和同学交流,取其精华。对于实际动手能力与系统开发的流程 的适应,必须多进行实际的练习与操作,才能有大的进步。5. 设计体会通过这次课程设计我充分了解了理论与课程设计相结合的重要性,理论基础 上必须有实际上的应用,在实际的应用中才能发现个
12、种问题,再灵活的应用理论知识去解决它们。在这一周的学习过程中,我不仅能够把以前所学知识联系起来, 并且还学会了一些新的知识,在此期间通过对 JAVA设计的系统训练,使我基本 上达到了这周的课程设计目的,并且懂得了要想学好课,除了要有扎实的基础知识 的功底深厚外,还需要有一定的实践动手能力,操作能力.我们要学习别人的长处, 改掉自己的缺点, 要懂得用网络,现在的网络包括的知识很多,就是看你能不能 把握住,有没有那个心在网络上要善于讨论,在论坛里向那些高人学习,学习他 们学习的方法和思想.。虽然课程设计已经完事,可是我们觉得应该继续努力,自 己做点东西,增加自己的学习经历和学习经验,不断的深入,了
13、解它的内部,借 助它创造财富。课程设计之所以进行的如此顺利,得力于老师的信任和支持,得 力于同学们的真诚配合和勤勉不断的努力!为此,我们深深地感恩!感谢老师谆谆教导,感恩同学们间的互帮互助。6. 参考文献1 文杰书院.JAVA程序设计完全自学手册M.北京:机械工业出版社,20102 张永常.JAVA2程序设计实用教程M.北京:电子工业出版社,20103 朱仲杰.JAVA2全方位学习M.北京:机械工业出版社,20084 张永常等.JAVA程序设计实践教程M.北京:清华大学出版社,20105 梁勇.Java语言程序设计M.北京:机械工业出版社,20116 郑莉.Java程序设计M.北京:清华大学出
14、版社,20117 张广彬.Java课程设计M.北京:清华大学出版社,20118 狄祥义.Java面向对象程序设计M.北京:清华大学出版社,2010课程设计说明书No.li附录程序具体代码:(1)主界面设置代码如下:class mai nF rame exte nds JFrame impleme nts Action Liste ner,ltemListe nerprivate static fin al l ong serialVers ionUID = 1L;JLabel lb;JLabel lb2;JButton btnrenew,btnlast,btnnext,btnchoose,bt
15、nfirst,btnover,btnmuc,btnback; mainpanel pan el;Sound sound;JComboBox jc=new JComboBox();Menultem renew=new Menultem(” 重新开始”);Menultem back =new Menultem(” 悔一步");Menultem last= new Menultem(” 上一关");Menultem next =new Menultem(” 下一关");Menultem choose=new Menultem(” 选关");Menultem e
16、xit =new Menultem(” 退出");Menultem qin=new Menultem(” 琴萧合奏”);Menultem po=new Menultem(” 泡泡堂");Menultem guang=new Menultem(” 灌篮高手”);Menultem nor= new Menultem(” 默认");Men ultem eye=new Men ultem(” eyes on me");Menultem about =new Menultem(” 关于推箱子.");mainF rame()super("推箱子
17、v2.0");setSize(720,700);setVisible(true); setResizable(false);setLocati on (150,10);setDefaultCloseOperatio n(JFrame.EXIT_ON_CLOSE);Container con t=getC onten tPa ne();con t.setLayout (n ull);con t.setBackgro un d(Color.black);Menu choice=new Menu("选项");choice.add(re new);choice.add(l
18、ast);choice.add( next);choice.add(choose);choice.add(back);choice.addSeparator(); choice.add(exit);ren ew.addActio nListe ner(this); last.addAct ion Liste ner(this);n ext.addAct ion Liste ner(this); choose.addAct ion Liste ner(this); exit.addAct ion Liste ner(this); back.addAct ion Liste ner(this);M
19、enu setmuc= new Menu(” 设置音乐");setmuc.add( nor);setmuc.add( qin);setmuc.add(po);setmuc.add(gua ng);setmuc.add(eye);n or.addActio nListe ner(this); qin. addAct ion Liste ner(this); po.addAct ion Liste ner(this); gua ng.addActi on Liste ner(this); eye.addActi on Liste ner(this); Menu help=new Menu
20、("帮助"); help.add(about);about.addAct ion Liste ner(this);Men uBar bar=new Men uBar();bar.add(choice); bar.add(setmuc);bar.add(help);setMe nuBar(bar);n or.setE nabled(false);lb=new JLabel("推箱子",SwingConstants.CENTER);lb2=new JLabel("更换音乐",SwingConstants.CENTER); add(lb);
21、add(lb2);lb.setBou nds(100,20,400,20); lb.setForegro un d(Color.white);lb2.setBou nds(625,500,55,20); lb2.setForegro un d(Color.white); btnrenew=new JButton(” 重来"); btnback =new JButton(” 悔一步"); btnlast= new JButton("上一关"); btnnext= new JButton("下一关"); btnchoose=new JBu
22、tton(” 选关"); btnfirst=new JButton("第关"); btnover= new JButton("最终关");沈阳大学课程设计说明书No.13btnmuc=new JButton(” 音乐关"); add(bt nren ew); add(bt nlast); add(bt nn ext); add(bt nchoose);add(bt nfirst); add(bt nover); add(bt nmuc); add(bt nback);btnren ew.setBou nds(625,100,80,30
23、); btnren ew.addActio nListe ner(this); btn back.setBou nds(625,150,80,30); btn back.addAct ion Liste ner(this); btn first.setBou nds(625,200,80,30); btn first.addAct ion Liste ner(this); btnl ast.setBou nds(625,250,80,30); btnl ast.addAct ion Liste ner(this); btnn ext.setBou nds(625,300,80,30); btn
24、n ext.addAct ion Liste ner(this); btno ver.setBou nds(625,350,80,30); btno ver.addAct ion Liste ner(this); btn choose.setBou nds(625,400,80,30); btn choose.addAct ion Liste ner(this); btnm uc.setBou nds(625,450,80,30); btnm uc.addAct ion Liste ner(this); jc.setBou nds(625,530,80,20); jc.addltem(” 默认
25、"); jc.addltem(” 琴萧合奏"); jc.addItem("泡泡堂");-* jc.addltem(” 灌篮高手"); jc.addltem("eyes on me"); jc.addItemListe ner(this);con t.add(jc); sound=new Soun d(); sound。adSo un d(); panel=new mainpan el(); add(pa nel);pan el.Tuixia ngzi(pa nel.level); pan el.requestFocus();
26、 validate();(2) 音乐调用代码如下:class SoundStri ng path=new Strin g("musics");String file=new Strin g(" nor.mid");Seque nee seq;Seque ncer midi;boolea n sig n;void loadSo un d()try seq=MidiSystem.getSeque nce(new File(path+file);midi=MidiSystem.getSeque ncer();midi.ope n();midi.setSeque
27、 nce(seq);midi.start();midi.setLoopCou nt(Seque ncer.LOOP_CONTINUOUSLY);catch (Excepti on ex)ex.pri ntStackTrace();sig n=true;void mystop()midi.stop();midi.close();sig n=false;boolea n isplay()return sig n;void setMusic(Stri ng e)file=e;(3) 规则代码如下:public void createWall() for (int i = 5; i < 12;
28、i+) Node walls = new Node(i, 5);wallList.add(walls);for (int i = 11; i < 14; i+) Node walls = new Node(i, 6);wallList.add(walls);wallList.add(new Node(13, 7);wallList.add(new Node(13, 8);wallList.add(new Node(13, 9);wallList.add(new Node(12, 9);wallList.add(new Node(12, 10);for (int i = 12; i >
29、; 4; i-) Node walls = new Node(i, 11); wallList.add(walls);wallList.add(new Node(5, 10);wallList.add(new Node(4, 10);wallList.add(new Node(4, 9);wallList.add(new Node(4, 8);wallList.add(new Node(4, 8);wallList.add(new Node(4, 7);wallList.add( new Node(5, 7);wallList.add( new Node(5, 6);wallList.add(
30、new Node(7, 7);wallList.add( new Node(8, 7);wallList.add( new Node(9, 7);wallList.add(new Node(8, 9);wallList.add(new Node(8, 10);/将墙壁的对象置为truefor (int i = 0; i < wallList.size(); i+) Node n = (Node) wallList.get(i);a n. x n.y = true;public void moveDisable(Node n, int d1, int d2) switch (directi
31、 on) case 4:n.x -= d1; break;case 1:n.y -= d2; break;沈阳大学课程设计说明书N0.17case 2:n.x -= d1;break;case 3:n.y -= d2;break;/public void moveDisable(Node n1, Node n2, int d1, int d2) switch (directi on) case 4:n 1.x -=d1;n 2.x -=d1;break;case 1:n 1.y -=d2;n2.y -=d2;break;case 2:n 1.x -=d1;n 2.x -=d1;break;ca
32、se 3:n 1.y -=d2;n2.y -=d2;break;(4) 物移动代码:void moveup()if(mapma nY-1ma nX=2|mapma nY-1ma nX=4)if(maptmpma nYma nX=4|maptmpma nYma nX=9) mapma nY ma nX=4;elsemapma nY ma nX=2;mapma nY -1ma nX=8;repai nt();manY-;mystack.push(IO);else if(mapma nY -1ma nX=3)if(mapma nY-2ma nX=4)if(maptmpma nY ma nX=4|ma
33、ptmpma nY ma nX=9)mapma nY ma nX=4;elsemapma nY ma nX=2;mapma nY-1ma nX=8;mapma nY-2ma nX=9;repa in t();manY-;mystack.push(11);else if(mapma nY-2ma nX=2)if(maptmpma nY ma nX=4|maptmpma nY ma nX=9)mapma nY ma nX=4;elsemapma nY ma nX=2;mapma nY-1ma nX=8;mapma nY-2ma nX=3;repa in t();manY-;mystack.push
34、(11);elsemapma nY ma nX=8;repa in t();else if(mapma nY -1ma nX=9)if(mapma nY-2ma nX=4)if(maptmpma nY ma nX=4|maptmpma nY ma nX=9)mapma nY ma nX=4;elsemapma nY ma nX=2;mapma nY-1ma nX=8;mapma nY-2ma nX=9;repa in t();manY-;mystack.push(ll);else if(mapma nY-2ma nX=2)if(maptmpma nY ma nX=4|maptmpma nY m
35、a nX=9) mapma nY ma nX=4;elsemapma nY ma nX=2;mapma nY-1ma nX=8;mapma nY-2ma nX=3;repa in t();manY-;mystack.push(11);elsemapma nY ma nX=8;repa in t();if(mapma nY-1ma nX=1)mapma nY ma nX=8;repai nt();else if(e.getSource()=bt nback|e.getSource()=back)if(pa nel.isMystackEmpty()JOptionPane.showMessageDi
36、alog(this,"您还未移动! ! !"); elseswitch(pa nel.back()case 10:pan el.backup(10);break;case 11:pan el.backup(11);break;沈阳大学课程设计说明书No.19case 20:pan el.backdow n( 20); break;case 21:pan el.backdow n( 21); break;case 30:pa nel.backleft(30); break;case 31:pa nel.backleft(31); break;case 40:pan el.backright(40); break;case 41:pan el.backright(41); break;pan el.requestFocus();else if(e.getSource ()=nor)jc.setSel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年四川营山化育中学初三二诊模拟化学试题含解析
- 河北省石家庄市长安区重点达标名校2026年初三第一次调研考试(一模)化学试题含解析
- 2026年浙江省杭州下城区五校联考初三学年3.7网络模拟考试生物试题含解析
- 仓库奖惩制度规定
- 企业保安奖惩制度
- 伙房员工奖惩制度
- 住户奖惩制度
- 供应链货期奖惩制度
- 保安岗亭奖惩制度
- 信誉奖惩制度
- MT/T 1213-2024矿用蓄电池齿轨卡轨车
- 《史记》上册注音版
- 新大象版四年级下册科学第二单元《自然界的水》课件(共4课)
- 彩钢板屋面拆除、更换屋面板施工方案(改)
- 污水处理厂生物除臭技术方案
- GB/T 20671.2-2006非金属垫片材料分类体系及试验方法第2部分:垫片材料压缩率回弹率试验方法
- 门诊医疗质量管理课件
- 初三数学总复习教学策略课件
- 第三讲-就业信息的收集与处理课件
- 天津大学讲义-工程成本管理概述
- 环境与可持续发展ppt课件(完整版)
评论
0/150
提交评论