ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:258.55KB ,
资源ID:18232874      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18232874.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(推箱子Java课设材料文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

推箱子Java课设材料文档格式.docx

1、2.2.2系统功能模块划分在该系统中总共划分了三个模块(1)初始化模块,对游戏界面进行初始化操作,对各个按钮的功能进行操作使之当动作发生时有一定的反应及相应。(2)移动箱子模块,在推箱子游戏中最主要的模块,用户可以移动箱子到界面中的各个地方,以完成游戏设定的任务。(3)移动小人模块,通过对工人的操作使之能上下左右移动,能够操作木块到各个位置。2.2.3系统设计(1)Swing 中的基本控件本项目中会分别使用JFrame、JPanel、JLabel、JOptionPane 四种控件,含义如下:JFrame:代表窗体对象,Windows 操作系统中的一个窗体都可以看做一个JFrame 对象。JFr

2、ame 常见的操作有设置标题(setTitle)、设置窗口大小(setBounds)、设置是否显示(setVisible)等。JPanel:即面板,面板中可以包含各种Swing 控件。JPanel 常见的操作有设置背景色(setBackground)、添加控件(add)、设置布局(setLayout)等。JLabel:即标签,可以用来显示文字或图片。JLabel 常见的操作有设置图片(setIcon)、设置位置(setBounds)等。JOptionPane:通常使用JOptionPane 的showMessageDialog 方法弹出对话框。(2)GameFrame类中的方法图表方法继承关系

3、作用实现的功能GameFrameextends JFrame定义所有成员,箱子,工人等等。主类,包含了所有的功能。keyPressed没有响应工人和箱子的移动以及工人、箱子、墙之间的碰撞检测。keyReleased完成定义表1 GameFrame类中2.2.3代码实现简介主类:GameFrame 用于初始化各种对象. JPanel panel = new JPanel();JLabel worker int SPEED = 12;int pos = new intJLabel wallsJLabel boxJLabel goal方法 GameFrame 用于完善信息.然后再进行动作事件的监听.

4、主要的监听对象为:判断 工人的移动方向是否会出界worker.setBounds(worker.getX() + xSpeed, worker.getY() + ySpeed, worker.getWidth(), worker.getHeight();使工人可以推动箱子在步骤2.7 的代码后继续输入如下代码使工人可以推劢箱子:f (worker.getBounds().intersects(box.getBounds() box.setBounds(box.getX() + xSpeed, box.getY() + ySpeed,box.getWidth(), box.getHeight()

5、;判断箱子是否撞到墙壁在步骤3.2 的if 语句结束前继续输入如下代码判断箱子是否撞到墙壁:for (int i = 0; i walls.length; i+) if (box.getBounds().intersects(wallsi.getBounds() worker.setBounds(worker.getX() - xSpeed, worker.getY() - ySpeed,worker.getWidth(), worker.getHeight();box.setBounds(box.getX() - xSpeed, box.getY() - ySpeed,判断是否胜利在步骤3.

6、3 的语句后继续输入如下代码判断是否胜利:if (box.getX()=goal.getX() & box.getY()=goal.getY() JOptionPane.showMessageDialog(null, 您赢啦!);2.2.4关键技术及算法本程序主要利用窗体来加载游戏,用面板来装入所有成员,墙用数组来设定它的位置,箱子、工人、墙和胜利的标志的图片均用JLabel来装载,在主类里添加键盘监听器,监听器里添加了keyPressed、keyReleased、keyTyped方法,其中keyPressed方法里实现了工人的移动,箱子的移动,箱子与工人、墙之间的碰撞检测,游戏的胜利,key

7、Released、keyTyped均设置为空。 3.设计结果与分析游戏运行时可以通键盘上的“上”、“下”、“左”、“右”按键移动工人,并且推动箱子。下图3为游戏运行界面。图3 游戏开始界面 当箱子与所给定的目标物重合时,游戏胜利,弹出窗口,显示“你赢了!”的字样,此时游戏结束。下图4为游戏胜利界面。 图4 游戏胜利界面4.设计体会通过编写本次毕业设计程序,我完成了基于JAVA的推箱子小游戏的软件开发任务。在些其间,我遇到了许多问题,如地图文件的制作与读取、游戏界面过大或者过小、游戏图形的大小问题、工人与箱子的移动算法等等。不过,最终我都一一解决了相关问题,对其中比较主要的几点体会总结如下:第一

8、,为了熟悉推箱子小游戏的相关运作,我经常在电脑游戏上运用推箱子游戏,一步步地发现它所有的功能,然后再思考与查阅资料进行分析,最后经过逐步的设计与反复的修改论证,才完成了整个小游戏的开发。第二,完成了从“小到全”,从“全到精”的转变。在设计的过程中,我经常会遇到一些困难,我也借此机会学会如何通过反复思考和测试找出自己的错误并加以改正,再进行下一个步骤的设计。本程序就是这样一点一点的完成的,在这之后再来优化整个程序。第三,本次设计也让我得到一个不断学习新鲜事物的机会,从设计初的诸多不懂到最后能够顺利完成,期间我体会到在实践中学习的重要性,这对于将来我走上工作岗位具有重要意义。 第四,通过毕业设计使

9、我对Java这门课程加深了解,也对我今后的就业之路奠定了一定的基础。经过这些日子的不断努力,本次的毕业设计程序基本上完成了。回顾整个设计过程,我学到了许多书本上没有学到的知识。通过这次自己制作的软件,丰富了自己的实践技能,扩展了本专业的知识面,不仅使我受益匪浅,同时也体验到了开发软件开发的难度与不断更新自己的重要性。我感觉学习java应该是循环渐进,有始有终,按部就班,脚踏实地.java是一门有着阶梯性的一们语言,如果要学习它.我觉得最好还是按照java的学习体系,先学习什么,在学习什么,只有这样,我们在学习中才会遇到更少的麻烦.java是一门更倾向于网络的语言.不要上来就学习android,

10、这样不好,因为这没有基础.在以后的学习中很可能遇到很多的麻烦,这就不好了.信心,恒心,毅力是最重要的.这是我们必须具备的心理素质.要是学习这门语言开始的时候很有兴趣,遇到苦难就退缩,这样最终会放弃学习java,没有经历风雨怎么见彩虹.编程就是有的时候就是那么这么人.会遇到很多的困惑.但是一旦你弄懂了,或者是你把问题解决了,你会感到很兴奋,编程的快乐就在此了。5.参考文献1 张思民.JAVA开发技术与工程实践M.北京:清华大学出版社,2010.2 耿祥义.JAVA2实用教程M.北京:机械工业出版社,2006.3 汤一平.JAVA语言程序设计M.北京:科学出版社,2006.4 张思民.JAVA程序

11、设计实践教程M.北京:清华大学出版社,2006.5 王薇.JAVA程序设计习题精编M.北京:清华大学出版社,2011.6 朱仲杰.JAVA2全方位学习M.北京:7 毕广吉.JAVA程序设计实例教程M.北京:冶金工业出版社,2007.8 刘腾红,孙细明.信息系统分析与设计M.北京:科学出版社,2003.9 Sharon Zakhour.JAVA教程M.北京:人民邮电出版社,2007.10 王保罗.JAVA面向对象程序设计M.北京:清华大学出版社,2003.附录import javax.swing.JFrame;import java.awt.Color;import java.awt.event

12、.KeyEvent;import java.awt.event.KeyListener;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.ImageIcon;import javax.swing.JLabel;public class GameFrame extends JFrame /2.3 加入工人JLabel worker = new JLabel(new ImageIcon(workerLeft.png);public static final int SPEED = 12;/2.6

13、加入围墙int pos = new int0,0, 1,0, 2,0, 3,0, 4,0, 5,0, 6,0, 7,0, 8,0, 9,0, 10,0, 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7, 0,8, 0,9, 0,10, 0,11, 0,12, 1,12, 2,12, 3,12, 4,12, 5,12, 6,12, 7,12, 8,12, 9,12, 10,12, 10,1, 10,2, 10,3, 10,4, 10,5, 10,6, 10,7, 10,8, 10,9, 10,10, 10,11, 10,12, 1,3, 2,3, 3,3, 4,3, 5,3,

14、 6,3, 5,8, 6,8, 7,8, 8,8, 9,8, 10,8 ,11,8 ;JLabel walls = new JLabelpos.length/2;/3.1 加入箱子与胜利标志JLabel box = new JLabel(new ImageIcon(box.pngJLabel goal = new JLabel(new ImageIcon(goal.pngpublic GameFrame() /2.2 完善窗体 this.setTitle(趣味推箱子 this.setBounds(200, 60, 535, 650); this.setContentPane(panel); p

15、anel.setLayout(null); panel.setBackground(Color.black); /2.3 加入工人 panel.add(worker); worker.setBounds(240, 240, 48, 48); /2.6 加入围墙 for (int i = 0; wallsi = new JLabel(new ImageIcon(wall.png panel.add(wallsi); wallsi.setBounds(posi * 2 * 48, posi * 2 + 1 * 48, 48 , 48); /3.1 加入箱子与胜利标志 panel.add(box);

16、 panel.add(goal); box.setBounds(240, 96, 48, 48); goal.setBounds(336, 432, 48, 48); this.setVisible(true); /2.4 监听键盘事件 this.addKeyListener(new KeyListener() /键盘按下事件 public void keyPressed(KeyEvent e) /2.5 使工人可以移动 int xSpeed = 0, ySpeed = 0; switch (e.getKeyCode() case KeyEvent.VK_LEFT : xSpeed = -SP

17、EED; worker.setIcon(new ImageIcon( break; case KeyEvent.VK_RIGHT : xSpeed = SPEED;workerRight.png case KeyEvent.VK_UP : ySpeed = -SPEED;workerUp.png case KeyEvent.VK_DOWN : ySpeed = SPEED;workerDown.png default: return; worker.setBounds(worker.getX() + xSpeed, worker.getY() + ySpeed, worker.getWidth

18、(), worker.getHeight(); /2.7 判断工人是否撞到墙壁 if (worker.getBounds().intersects(wallsi.getBounds() worker.setBounds(worker.getX() - xSpeed, worker.getY() - ySpeed, worker.getWidth(), worker.getHeight(); /3.2 使工人可以推动箱子 if (worker.getBounds().intersects(box.getBounds() box.setBounds(box.getX() + xSpeed, box

19、.getY() + ySpeed, box.getWidth(), box.getHeight(); /3.3 判断箱子是否撞到墙壁 if (box.getBounds().intersects(wallsi.getBounds() box.setBounds(box.getX() - xSpeed, box.getY() - ySpeed, box.getWidth(), box.getHeight(); /3.4 判断是否胜利 if (box.getX()=goal.getX() & JOptionPane.showMessageDialog(null, public void keyReleased(KeyEvent e) public void keyTyped(KeyEvent e) );public static void main(String args) /2.1创建窗体 new GameFrame();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1