java推箱子课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程设计说明书NO.1沈阳大学推箱子趣味游戏1.课程设计的目的随着科学技术的发展,人们的生活水平越来越繁忙,在充满竞争的社会条件下,压力往往带给人们很多烦恼,所以合理的解压方式称为现代人的共同心愿.为了给大家提供一个合理的解压平台,我们在本次课程设计中为大家开发了一款适合休闲娱乐的小游戏,本次课程设计是配合JAVA程序设计课程,深入学习掌握JAVA语言,熟练运用Java工具对系统的编写.通过课程设计各个项目的综合训练,培养学生实际分析问题,编程和动手能力,提高学生的综合素质.2.设计方案论证2.1概要设计2.1.1系统功能描述2.1.2系统开发环境(1)硬件环境CPU:PentiumIII600以上内存要求:600MB以上内存剩余资源:128MB以上(2)软件环境JDK1.6及其以上版本2.2详细设计2.2.1程序流程图推箱子游戏主要分为初始化模块,画图模块,移动箱子模块,移动小人模块,功能控制模块.推箱子游戏功能模块图如图3.1所示.课程设计说明书NO.2沈阳大学图3.1功能模块图2.2.2程序中自定义类说明(1)重来:重新开始当前关;(2)悔一步:返回上一移动状态(可以连续返回多步);(3)第一关:游戏系统默认开始关为第一关,此按钮可以将关从其它关跳跃到第一关.(4)上一关:返回到当前关的上一关;(5)下一关:返回到当前关的下一关;(6)最终关:跳跃到最后一关,即第五十关;(7)选关:选择想要玩的关;(8)音乐关(开):默认为开,点击自动关闭音乐和开启音乐.(9)更换音乐:从不同的音乐中选取适合玩家的音乐.2.2.3程序中主要方法说明(1)界面框架与按钮设计界面设计中包括了,所有你所直观见到的图形界面,窗体的大小,下拉菜单中的功能菜单,使得玩家能够很直观的见到所有游戏中的功能.界面中有菜单,包括:选项设置音乐帮助,,.按钮包括:重来悔一步第一关,,,上一关下一关最终关选关音乐,,,,.详细代码:(2)地图的绘制形成地图以二维数组的形式进行存储的,不同的数字有着不同的含义.在地图当中不同的数字代表不同的含义我当时是将0~9解读成为不同的图形与图像.①0代表地图以内的空位;②1代表地图中的边缘;③2代表地图以内的空位非点位;④3代表地图中的箱子;⑤4代表点位;⑥5代表小人面部朝下;⑦6代表小人面部朝左;课程设计说明书NO.3沈阳大学⑧7代表小人面部朝右;⑨8代表小人面部朝上;⑩9代表箱子已经到达点位。(3)推箱子游戏的游戏性其主要功能是给用户一个友好的游戏界面,游戏中包括50关的地图,推箱子这个游戏的50个地图是事先完成的,将所有地图上面的信息以数字的形式储存在一个20*20的二维数组当中;然后,每一关都按照数组重新绘制地图,这样就拥有了50张地图(4)小人与箱子移动的算法移动中包括正移动,与悔一步的负移动.正移动:小人上下左右的移动是由本组咸英智组员所做,归结起来上下左右是一个判断的算法,判断都是通过判断小人前面是否是空位箱子或者是墙,如果没有,就移动;有的话,据判断箱子是否可以移动,最后讨论箱子推过的,小人移动,以及被遮挡住点的图形变化,重新绘制地图,算法判断完毕.传出数据记录在,一个栈当中,以备悔一步使用.负移动:通过记录在栈中的数据判断,前一步是的移动方向以及移动使用过的算法,逆向将代码重新运行,同时绘制地图以达到前一步的状态.(5)移动的代码在本游戏系统中,给人的视觉感受应该是能感受都动作的变化,逼真的人物动作会使系统更有效.通过控制人物,箱子,空地,障碍物在数组中的位置的改变来控制移动动作.(6)栈的应用推箱子中的数据存储是很重要的,不然无法进行悔一步的操作.本系统采用栈的存储方式来存储并控制人物,箱子的移动和地图的变换.悔一步操作让玩家有了反悔的一步,这节省玩家的时间,避免因错位导致重新开始3.设计结果与分析3.1程序运行结果程序的运行结果如下图所示:课程设计说明书NO.4沈阳大学图二推箱子游戏第一关界面图三推箱子游戏第一关界面3.2尚需解决的问题游戏的背景音乐比较单一,可以通过在“选项”模式中添加“背景音乐导入”模块,导入玩家自己喜欢的音乐3.3程序部分代码(1)界面框架与按钮设计课程设计说明书NO.5沈阳大学classmainFrameextendsJFrameimplementsActionListener,ItemListener{privatestaticfinallongserialVersionUID=1L;JLabellb;JLabellb2;JButtonbtnrenew,btnlast,btnnext,btnchoose,btnfirst,btnover,btnmuc,btnback;mainpanelpanel;Soundsound;JComboBoxjc=newJComboBox();MenuItemrenew=newMenuItem(重新开始);MenuItemback=newMenuItem(悔一步);MenuItemlast=newMenuItem(上一关);MenuItemnext=newMenuItem(下一关);MenuItemchoose=newMenuItem(选关);MenuItemexit=newMenuItem(退出);MenuItemqin=newMenuItem(琴萧合奏);MenuItempo=newMenuItem(泡泡堂);MenuItemguang=newMenuItem(灌篮高手);MenuItemnor=newMenuItem(默认);MenuItemeye=newMenuItem(eyesonme);MenuItemabout=newMenuItem(关于推箱子...);mainFrame(){super(推箱子v2.0);setSize(720,700);setVisible(true);setResizable(false);setLocation(150,10);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Containercont=getContentPane();cont.setLayout(null);cont.setBackground(Color.black);Menuchoice=newMenu(选项);choice.add(renew);choice.add(last);choice.add(next);choice.add(choose);choice.add(back);课程设计说明书NO.6沈阳大学choice.addSeparator();choice.add(exit);renew.addActionListener(this);last.addActionListener(this);next.addActionListener(this);choose.addActionListener(this);exit.addActionListener(this);back.addActionListener(this);Menusetmuc=newMenu(设置音乐);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);Menuhelp=newMenu(帮助);help.add(about);about.addActionListener(this);MenuBarbar=newMenuBar();bar.add(choice);bar.add(setmuc);bar.add(help);setMenuBar(bar);nor.setEnabled(false);lb=newJLabel(推箱子,SwingConstants.CENTER);lb2=newJLabel(更换音乐,SwingConstants.CENTER);add(lb);add(lb2);lb.setBounds(100,20,400,20);lb.setForeground(Color.white);lb2.setBounds(625,500,55,20);lb2.setForeground(Color.white);btnrenew=newJButton(重来);btnback=newJButton(悔一步);课程设计说明书NO.7沈阳大学btnlast=newJButton(上一关);btnnext=newJButton(下一关);btnchoose=newJButton(选关);btnfirst=newJButton(第1关);btnover=newJButton(最终关);btnmuc=newJButton(音乐关);add(btnrenew);add(btnlast);add(btnnext);add(btnchoose);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.addActionListener(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,80,20);jc.addItem(默认);jc.addItem(琴萧合奏);jc.addItem(泡泡堂);-*jc.addItem(灌篮高手);jc.addItem(eyesonme);jc.addItemListener(this);cont.add(jc);课程设计说明书NO.8沈阳大学sound=newSound();sound.loadSound();panel=newmainpanel();add(panel);panel.Tuixiangzi(panel.level);panel.requestFocus();validate();4.设计体会通过这次课程设计我充分了解了理论与课程设计相结合的重要性,理论基础上必须有实际上的应用,在实际的应用中才能发现个种问题,再灵活的应用理论知识去解决它们.在这一周的学习过程中,我不仅能够把以前所学知识联系起来,并且还学会了一些新的知识.在此期间通过对JAVA设计的系统训练,使我基本上达到了这周的课程设计目的,并且懂得了要想学好课,除了要有扎实的基础知识的功底深厚外,还需要有一定的实践动手能力,操作能力.我们要学习别人的长处,改掉自己的缺点,要懂得用网络,现在的网络包括的知识很多,就是看你能不能把握住,有没有那个心.在网络上要善于讨论,在论坛里向

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功