Java雷电游戏项目报告模板.doc

上传人:jian****018 文档编号:9171240 上传时间:2020-04-03 格式:DOC 页数:18 大小:43KB
返回 下载 相关 举报
Java雷电游戏项目报告模板.doc_第1页
第1页 / 共18页
Java雷电游戏项目报告模板.doc_第2页
第2页 / 共18页
Java雷电游戏项目报告模板.doc_第3页
第3页 / 共18页
点击查看更多>>
资源描述
北京青年政治学院小学期达内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 = (enemyFlight.getWidth()/2+heroFlight.getWidth()/2)*(enemyFlight.getWidth()/2+heroFlight.getWidth()/2);if(xy_sumheroFire.getX() & xheroFire.getY()& y=(heroFire.getY() + heroFire.getHeight()return true;return false;五、系统设计总结六、 参考文献
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


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

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


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