java推箱子课程设计(共15页)

上传人:20****08 文档编号:52061573 上传时间:2022-02-07 格式:DOC 页数:15 大小:297.50KB
收藏 版权申诉 举报 下载
java推箱子课程设计(共15页)_第1页
第1页 / 共15页
java推箱子课程设计(共15页)_第2页
第2页 / 共15页
java推箱子课程设计(共15页)_第3页
第3页 / 共15页
资源描述:

《java推箱子课程设计(共15页)》由会员分享,可在线阅读,更多相关《java推箱子课程设计(共15页)(15页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上推箱子趣味游戏1. 课程设计的目的随着科学技术的发展,人们的生活水平越来越繁忙,在充满竞争的社会条件下,压力往往带给人们很多烦恼,所以合理的解压方式称为现代人的共同心愿. 为了给大家提供一个合理的解压平台, 我们在本次课程设计中为大家开发了一款适合休闲娱乐的小游戏, 本次课程设计是配合 JAVA 程序设计课程,深入学习掌握 JAVA 语言,熟练 运用 Java 工具对系统的编写.通过课程设计各个项目的综合训练,培养学生实 际分析问题,编程和动手能力,提高学生的综合素质.2. 设计方案论证2.1概要设计2.1.1 系统功能描述2.1.2 系统开发环境(1) 硬件环境CP

2、U:PentiumIII 600 以上内存要求:600MB 以上 内存剩余资源:128MB 以上(2) 软件环境JDK 1.6 及其以上版本2.2详细设计2.2.1 程序流程图推箱子游戏主要分为初始化模块, 画图模块, 移动箱子模块, 移动小人模块, 功能控制模块.推箱子游戏功能模块图如图 3.1 所示.图 3.1 功能模块图2.2.2程序中自定义类说明(1)重来:重新开始当前关; (2)悔一步:返回上一移动状态(可以连续返回多步) ;(3)第一关:游戏系统默认开始关为第一关,此按钮可以将关从其它关跳跃到第一关. (4)上一关:返回到当前关的上一关; (5)下一关:返回到当前关的下一关; (6

3、)最终关:跳跃到最后一关,即第五十关;(7)选关:选择想要玩的关; (8)音乐关(开) :默认为开,点击自动关闭音乐和开启音乐. (9)更换音乐:从不同的音乐中选取适合玩家的音乐. 2.2.3程序中主要方法说明(1)界面框架与按钮设计界面设计中包括了,所有你所直观见到的图形界面,窗体的大小,下拉菜单 中的功能菜单,使得玩家能够很直观的见到所有游戏中的功能.界面中有菜单, 包括:选项设置音乐帮助, , .按钮包括:重来悔一步第一关, , ,上一关下一关最终关选关音乐, , , , . 详细代码:(2)地图的绘制形成地图以二维数组的形式进行存储的,不同的数字有着不同的含义.在地图当中不同的数字代表

4、不同的含义我当时是将 09 解读成为不同的图形与图像.0代表地图以内的空位;1代表地图中的边缘;2代表地图以内的空位非点位;3代表地图中的箱子;4代表点位;5代表小人面部朝下;6代表小人面部朝左;7代表小人面部朝右;8代表小人面部朝上;9代表箱子已经到达点位。(3)推箱子游戏的游戏性其主要功能是给用户一个友好的游戏界面,游戏中包括 50 关的地图,推箱 子这个游戏的 50 个地图是事先完成的,将所有地图上面的信息以数字的形式储 存在一个 20*20 的二维数组当中;然后,每一关都按照数组重新绘制地图,这样 就拥有了 50 张地图(4)小人与箱子移动的算法 移动中包括正移动,与悔一步的负移动.

5、正移动:小人上下左右的移动是由本组咸英智组员所做,归结起来上下左右是一个判断的算法,判断都是通过判断小人前面是否是空位箱子或者是墙,如果 没有,就移动;有的话,据判断箱子是否可以移动,最后讨论箱子推过的,小人 移动,以及被遮挡住点的图形变化,重新绘制地图,算法判断完毕.传出数据记 录在,一个栈当中,以备悔一步使用. 负移动:通过记录在栈中的数据判断,前一步是的移动方向以及移动使用过 的算法,逆向将代码重新运行,同时绘制地图以达到前一步的状态.(5)移动的代码 在本游戏系统中,给人的视觉感受应该是能感受都动作的变化,逼真的人物 动作会使系统更有效.通过控制人物,箱子,空地,障碍物在数组中的位置的

6、改 变来控制移动动作.(6)栈的应用 推箱子中的数据存储是很重要的,不然无法进行悔一步的操作.本系统 采用栈的存储方式来存储并控制人物,箱子的移动和地图的变换.悔一步操作让 玩家有了反悔的一步,这节省玩家的时间,避免因错位导致重新开始3. 设计结果与分析3.1 程序运行结果程序的运行结果如下图所示:图二 推箱子游戏第一关界面图三 推箱子游戏第一关界面3.2 尚需解决的问题游戏的背景音乐比较单一,可以通过在“选项”模式中添加“背景音乐导入”模块,导入玩家自己喜欢的音乐3.3 程序部分代码(1)界面框架与按钮设计class mainFrame extends JFrame implements A

7、ctionListener,ItemListenerprivate static final long serialVersionUID = 1L;JLabel lb;JLabel lb2;JButton btnrenew,btnlast,btnnext,btnchoose,btnfirst,btnover,btnmuc,btnback;mainpanel panel;Sound sound;JComboBox jc=new JComboBox();MenuItem renew=new MenuItem( 重新开始);MenuItem back=new MenuItem( 悔一步);MenuI

8、tem last=new MenuItem( 上一关);MenuItem next=new MenuItem( 下一关);MenuItem choose=new MenuItem( 选关);MenuItem exit=new MenuItem( 退出);MenuItem qin=new MenuItem( 琴萧合奏);MenuItem po=new MenuItem( 泡泡堂);MenuItem guang=new MenuItem( 灌篮高手);MenuItem nor=new MenuItem( 默认);MenuItem eye=new MenuItem( eyes on me);Menu

9、Item about=new MenuItem( 关于推箱子.);mainFrame()super(推箱子v2.0);setSize(720,700);setVisible(true);setResizable(false);setLocation(150,10);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Container cont=getContentPane();cont.setLayout(null);cont.setBackground(Color.black);Menu choice=new Menu( 选项);choice.ad

10、d(renew);choice.add(last);choice.add(next);choice.add(choose);choice.add(back);choice.addSeparator();choice.add(exit);renew.addActionListener(this);last.addActionListener(this);next.addActionListener(this);choose.addActionListener(this);exit.addActionListener(this);back.addActionListener(this);Menu

11、setmuc=new Menu( 设置音乐);setmuc.add(nor);setmuc.add(qin);setmuc.add(po);setmuc.add(guang);setmuc.add(eye);nor.addActionListener(this);qin.addActionListener(this);po.addActionListener(this);guang.addActionListener(this);eye.addActionListener(this);Menu help=new Menu( 帮助);help.add(about);about.addAction

12、Listener(this);MenuBar bar=new MenuBar();bar.add(choice);bar.add(setmuc);bar.add(help);setMenuBar(bar); nor.setEnabled(false);lb=new JLabel(推箱子,SwingConstants.CENTER);lb2=new JLabel(更换音乐,SwingConstants.CENTER);add(lb);add(lb2);lb.setBounds(100,20,400,20);lb.setForeground(Color.white);lb2.setBounds(6

13、25,500,55,20);lb2.setForeground(Color.white);btnrenew=new JButton(重来);btnback=new JButton(悔一步);btnlast=new JButton(上一关);btnnext=new JButton(下一关);btnchoose=new JButton(选关);btnfirst=new JButton(第关);btnover=new JButton(最终关);btnmuc=new JButton(音乐关);add(btnrenew);add(btnlast);add(btnnext);add(btnchoose);

14、add(btnfirst);add(btnover);add(btnmuc);add(btnback);btnrenew.setBounds(625,100,80,30);btnrenew.addActionListener(this);btnback.setBounds(625,150,80,30);btnback.addActionListener(this);btnfirst.setBounds(625,200,80,30);btnfirst.addActionListener(this);btnlast.setBounds(625,250,80,30);btnlast.addActio

15、nListener(this);btnnext.setBounds(625,300,80,30);btnnext.addActionListener(this);btnover.setBounds(625,350,80,30);btnover.addActionListener(this);btnchoose.setBounds(625,400,80,30);btnchoose.addActionListener(this);btnmuc.setBounds(625,450,80,30);btnmuc.addActionListener(this);jc.setBounds(625,530,8

16、0,20);jc.addItem(默认);jc.addItem(琴萧合奏);jc.addItem(泡泡堂);-*jc.addItem(灌篮高手);jc.addItem(eyes on me);jc.addItemListener(this);cont.add(jc);sound=new Sound();sound.loadSound();panel=new mainpanel();add(panel);panel.Tuixiangzi(panel.level);panel.requestFocus();validate();4. 设计体会通过这次课程设计我充分了解了理论与课程设计相结合的重要性

17、, 理论基础上必须有实际上的应用,在实际的应用中才能发现个种问题,再灵活的应用理论知识去解决它们.在这一周的学习过程中,我不仅能够把以前所学知识联系起来,并且还学会了一些新的知识. 在此期间通过对 JAVA 设计的系统训练,使我基本上达到了这周的课程设计 目的,并且懂得了要想学好课,除了要有扎实的基础知识的功底深厚外,还需要 有一定的实践动手能力,操作能力.我们要学习别人的长处,改掉自己的缺点, 要懂得用网络,现在的网络包括的知识很多,就是看你能不能把握住,有没有那个心.在网络上要善于讨论,在论坛里向那些高人学习,学习他们学习的方法和思想. 虽然课程设计已经完事,可是我们觉得应该继续努力,自己

18、做点东西,增加自己的学习经历和学习经验,不断的深入,了解它的内部,借助它创造财富.课程设计之所以进行的如此顺利,得力于老师的信任和支持,得力于同学们的真诚配合和勤勉不断的努力!为此,我们深深地感恩!感谢老师谆谆教导,感恩同学们间的互帮互助.5. 参考文献1 马朝晖(译).JAVA教程(第4版).北京:人民邮电出版社,20072 王国辉等.JAVA程序设计自学手册.北京:人民邮电出版社,20083 耿祥义.JAVA2 实用教程.北京:清华大学出版社,20064 朱仲杰.JAVA2 全方位学习.北京:机械工业出版社,2006 5 张思民.JAVA程序设计实践教程.北京:清华大学出版社,20066

19、汤一平.Java 语言程序设计.北京:科学出版社,20067 刘艺.Java 程序设计大学教程. 北京:机械工业出版社,20068 耿祥义.Java课程设计.北京:清华大学出版社,20039 Sharon Zakhour. Java教程. 北京:人民邮电出版社,20076. 附录程序具体代码:(1)音乐调用代码如下:class SoundString path=new String(musics);String file=new String(nor.mid);Sequence seq;Sequencer midi;boolean sign;void loadSound()try seq=Mi

20、diSystem.getSequence(new File(path+file);midi=MidiSystem.getSequencer();midi.open();midi.setSequence(seq);midi.start();midi.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);catch (Exception ex) ex.printStackTrace();sign=true;void mystop()midi.stop();midi.close();sign=false;boolean isplay()return sign;void

21、setMusic(String e)file=e;(2)物移动代码:void moveup()if(mapmanY-1manX=2|mapmanY-1manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;repaint();manY-;mystack.push(10);else if(mapmanY-1manX=3)if(mapmanY-2manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else

22、mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=9;repaint();manY-;mystack.push(11);else if(mapmanY-2manX=2)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=3;repaint();manY-;mystack.push(11);else mapmanYmanX=8;repaint();else if(mapmanY-1manX=9)if(mapman

23、Y-2manX=4)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=9;repaint();manY-;mystack.push(11);else if(mapmanY-2manX=2)if(maptmpmanYmanX=4|maptmpmanYmanX=9)mapmanYmanX=4;else mapmanYmanX=2;mapmanY-1manX=8;mapmanY-2manX=3;repaint();manY-;mystack.push(

24、11);else mapmanYmanX=8;repaint();if(mapmanY-1manX=1)mapmanYmanX=8;repaint();else if(e.getSource()=btnback|e.getSource()=back)if(panel.isMystackEmpty()JOptionPane.showMessageDialog(this, 您还未移动!);elseswitch(panel.back()case 10:panel.backup(10);break;case 11:panel.backup(11);break;case 20:panel.backdow

25、n(20);break;case 21:panel.backdown(21);break;case 30:panel.backleft(30);break;case 31:panel.backleft(31);break;case 40:panel.backright(40);break;case 41:panel.backright(41);break;panel.requestFocus();else if(e.getSource()=nor)jc.setSelectedIndex(0);else if(e.getSource()=qin)jc.setSelectedIndex(1);el

26、se if(e.getSource()=guang)jc.setSelectedIndex(3);else if(e.getSource()=eye)jc.setSelectedIndex(4);else if(e.getSource()=po)jc.setSelectedIndex(2);boolean isMystackEmpty()return mystack.isEmpty();int back()return (Integer)mystack.pop();void remove()mystack.removeAllElements();(3)栈的代码如下所示:else if(e.ge

27、tSource()=btnback|e.getSource()=back)if(panel.isMystackEmpty()JOptionPane.showMessageDialog(this, 您还未移动!);elseswitch(panel.back()case 10:panel.backup(10);break;case 11:panel.backup(11);break;case 20:panel.backdown(20);break;case 21:panel.backdown(21);break;case 30:panel.backleft(30);break;case 31:pa

28、nel.backleft(31);break;case 40:panel.backright(40);break;case 41:panel.backright(41);break;panel.requestFocus();else if(e.getSource()=nor)jc.setSelectedIndex(0);else if(e.getSource()=qin)jc.setSelectedIndex(1);else if(e.getSource()=guang)jc.setSelectedIndex(3);else if(e.getSource()=eye)jc.setSelectedIndex(4);else if(e.getSource()=po)jc.setSelectedIndex(2);boolean isMystackEmpty()return mystack.isEmpty();int back()return (Integer)mystack.pop();void remove()mystack.removeAllElements();专心-专注-专业

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!