已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京青年政治学院小学期达内JAVA课程项目报告项目题目:雷电游戏的设计与实现专业班级:学生姓名:学生学号:指导教师姓名:目 录一、系统目标X二、系统设计思路X三、系统详细设计X四、系统实现X五、系统设计总结XX六、参考文献XX1、 系统目标通过本游戏的设计,综合自己在校期间所学的理论知识,设计开发雷电游戏,使自己熟应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,进一步巩固和加强自身对J2SE基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。通过本游戏的开发,主要实现游戏的可操作性及美观性,同时使自己对JAVA语言的了解更进一层,为将来的实际工作打下坚实的基础。二、系统设计思路1、定义窗口的属性2、分别设置背景图片,英雄飞机图片,敌机图片,子弹图片,爆炸的图片 3、分别设置敌机和英雄飞机的运动轨迹4、写出判断敌机是否与英雄飞机相撞,子弹是否击中敌机的代码5、设置一些丰富游戏的细致属性,例:绘制积分情况和血量图,子弹发射的频率等3、 系统详细设计1、定义窗口属性(1)创建一个窗体对象(2)设置窗体的标题(3)设置窗体的大小(4)关闭窗口时退出程序(5)设置窗体在屏幕当中显示的位置(6)设置窗体的显示注:游戏面板应做到1、继承JPanel 2、实现相应的接口 线程和鼠标监听事件2、定义并设置游戏中的主要元素(1)定义一个英雄飞机并对其属性进行设置(2)定义一个存放英雄机子弹的集合(3)定义存储敌机的数组,敌机初始化值为10并将其放入到数组当中(4)创建一个生成随机数的Random对象(5)定义一个存放爆炸图片的集合(6)设置敌机的属性,并将创建好的敌机添加到数组当中(7)绘制图片。分别绘制英雄机的子弹,英雄飞机,敌机,爆炸图片(8)对子弹的设置。将创建的子弹添加到存放子弹的集合当中,控制子弹的发射频率,让子弹飞,得到集合中的每一个子弹,当鼠标的某一个键按下时,发射子弹,英雄机子弹自动移动等。(9)写出鼠标点击,释放,拖拽时调用的方法代码3、做判断时所用的代码编写(1)判断子弹是否击中敌机获取敌机的中心坐标判断是否击中敌机的心脏(2)判断敌机是否与英雄机相撞等4、丰富游戏的设置绘制得分情况,绘制英雄飞机血量图和游戏结束等字体四、系统实现(游戏代码展示)import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.util.ArrayList;import java.util.List;import java.util.Random;import javax.swing.ImageIcon;import javax.swing.JPanel;public class GamePanel extends JPanel implements Runnable, MouseListener,MouseMotionListener private Flight heroFlight;private List heroFires;/定义存储敌机的数组private Flight flights;/初始化敌机为10架private int num = 10;/创建一个生成随机数的Random对象private Random ran = new Random();/定义一个统计积分的属性private int score;/定义一个存放爆炸图片的集合private List bomPics;/ 创建面板的构造器,对属性进初始化public GamePanel() /创建存放爆炸图片集合的对象bomPics = new ArrayList();/ 创建英雄飞机的对象,并对其属性进行设置heroFlight = new Flight();heroFlight.setWidth(80);heroFlight.setHeight(80);heroFlight.setX(200);heroFlight.setY(300);heroFlight.setDirection(Flight.UP);heroFlight.setImage(new ImageIcon(src/images/hero.gif).getImage();heroFlight.setPanel(this);heroFlight.setSpeed(3);heroFlight.setWasFire(false);heroFlight.setBload(100);/创建存储英雄子弹的集合对象heroFires = new ArrayList();/对存放敌机的数组进行创建并进行元素的初始化flights = new Flightnum;/创建敌机并将其放入到数组当中for(int i=0;i0) /绘制英雄机的子弹for (int i = 0; i heroFires.size(); i+) Fire heroFire = heroFires.get(i);heroFire.drawFire(g);/绘制英雄飞机heroFlight.drawFlight(g);/绘制敌机for (int i = 0; i flights.length; i+) flightsi.drawFlight(g);/绘制爆炸图片for(int i=0;ibomPics.size();i+)BomPic bomPic = bomPics.get(i);bomPic.drawBom(g);/-bomPics.remove(bomPic);elseg.setColor(Color.RED);g.setFont(new Font(宋体,Font.BOLD+Font.ITALIC,30);g.drawString(游戏结束, 200, 260);/绘制积分情况可血量图 g.setColor(Color.RED);g.setFont(new Font(宋体,Font.BOLD,20);g.drawString(积分:+score+分, 370, 30);g.drawString(生命, 20, 30);g.setColor(Color.WHITE);g.drawRect(65, 17, 100, 10);g.setColor(Color.RED);g.fillRect(65, 17, heroFlight.getBload(), 11);Overridepublic void run() /用于控制子弹发射的频率int count = 0;while(true)/敌机运动for(int i=0;ithis.getHeight()flightsi.setY(-ran.nextInt(500);flightsi.setX(ran.nextInt(500);if(heroFlight.isWasFire() & count % 10=0)/说明发射子弹,创建子弹对象Fire heroFire = new Fire();heroFire.setWidth(40);heroFire.setHeight(40);heroFire.setX(heroFlight.getX() + heroFire.getWidth()/2);heroFire.setY(heroFlight.getY();heroFire.setDirection(Fire.UP);heroFire.setSpeed(5);heroFire.setImage(new ImageIcon(src/images/fire.gif).getImage();heroFire.setPanel(this);/将创建的子弹添加到存放子弹的集合当中heroFires.add(heroFire);/让子弹飞for(int i=0;iheroFires.size();i+)/得到集合当中的每一个子弹Fire heroFire = heroFires.get(i);heroFire.fireMove();if(heroFire.getY()0)heroFires.remove(heroFire);/判断子弹是否能够击中敌机for(int i=0;iheroFires.size();i+)/英雄机的子弹Fire heroFire = heroFires.get(i);for(int j=0;j0) /判断敌机是否撞击英雄机for (int i = 0; i flights.length; i+) Flight enemyFlight = flightsi;if (isHit(enemyFlight, heroFlight) heroFlight.setBload(heroFlight.getBload() - 1);enemyFlight.setY(-ran.nextInt(500);enemyFlight.setX(ran.nextInt(500);try /让线程休息一会Thread.sleep(15);/刷新输出新的界面,自动调用paint方法repaint();count+; catch (InterruptedException e) e.printStackTrace();/* * 判断敌机是否与英雄机相撞 * param enemyFlight * param heroFlight2 * return */private boolean isHit(Flight enemyFlight, Flight heroFlight) int xx = (enemyFlight.getX()+enemyFlight.getWidth()/2)-(heroFlight.getX() + heroFlight.getWidth()/2);int yy = (enemyFlight.getY()+enemyFlight.getHeight()/2)-(heroFlight.getY() + heroFlight.getHeight()/2);int xy_sum = xx*xx + yy * yy;int r_sum =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁路信号设备标准化-洞察及研究
- 淄博市中医院感染科护理管理考核
- 淄博市人民医院病案首页填写规范考核
- 抚州市中医院术中超声在胃肠手术中应用考核
- 舟山市人民医院Galeazzi骨折复位固定技术考核
- 吉安市人民医院特殊血液净化并发症处理
- 青岛市人民医院药品库存控制考核
- 宁波市中医院敷料库存管理考核
- 吉安市人民医院调强放疗IMRT计划优化与评估笔试试卷
- 徐州市中医院护理团队评估考核
- GB/T 31771-2024家政服务母婴护理服务质量规范
- 《两次战争比较》课件
- 家庭治疗之一:家庭概述与理论流派课件
- 安徽省卓越县中联盟天一大联考2024-2025学年高一上学期11月期中考试化学试题(无答案)
- DL T596《电力设备预防性实验规程》知识培训
- 国开药物化学(本)形考3
- 花城版六年级下册音乐全册教案
- 古诗词诵读《江城子+乙卯正月二十日夜记梦》课件+2024-2025学年统编版高中语文选择性必修上册
- DZ∕T 0148-2014 水文水井地质钻探规程(正式版)
- MOOC 研究生英语科技论文写作-北京科技大学 中国大学慕课答案
- 乳腺癌分型及治疗
评论
0/150
提交评论