Java雷电游戏项目报告参考模板Word下载.docx
《Java雷电游戏项目报告参考模板Word下载.docx》由会员分享,可在线阅读,更多相关《Java雷电游戏项目报告参考模板Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
三、系统详细设计
1、定义窗口属性
(1)创建一个窗体对象
(2)设置窗体的标题
(3)设置窗体的大小
(4)关闭窗口时退出程序
(5)设置窗体在屏幕当中显示的位置
(6)设置窗体的显示
注:
游戏面板应做到1、继承JPanel2、实现相应的接口线程和鼠标监听事件
2、定义并设置游戏中的主要元素
(1)定义一个英雄飞机并对其属性进行设置
(2)定义一个存放英雄机子弹的集合
(3)定义存储敌机的数组,敌机初始化值为10并将其放入到数组当中
(4)创建一个生成随机数的Random对象
(5)定义一个存放爆炸图片的集合
(6)设置敌机的属性,并将创建好的敌机添加到数组当中
(7)绘制图片。
分别绘制英雄机的子弹,英雄飞机,敌机,爆炸图片
(8)对子弹的设置。
将创建的子弹添加到存放子弹的集合当中,控制子弹的发射频率,让子弹飞,得到集合中的每一个子弹,当鼠标的某一个键按下时,发射子弹,英雄机子弹自动移动等。
(9)写出鼠标点击,释放,拖拽时调用的方法代码
3、做判断时所用的代码编写
(1)判断子弹是否击中敌机
获取敌机的中心坐标
判断是否击中敌机的心脏
(2)判断敌机是否与英雄机相撞等
4、丰富游戏的设置
绘制得分情况,绘制英雄飞机血量图和游戏结束等字体
四、系统实现(游戏代码展示)
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.awt.event.MouseMotionListener;
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Random;
importjavax.swing.ImageIcon;
importjavax.swing.JPanel;
publicclassGamePanelextendsJPanelimplementsRunnable,MouseListener,
MouseMotionListener{
privateFlightheroFlight;
privateList<
Fire>
heroFires;
//定义存储敌机的数组
privateFlight[]flights;
//初始化敌机为10架
privateintnum=10;
//创建一个生成随机数的Random对象
privateRandomran=newRandom();
//定义一个统计积分的属性
privateintscore;
//定义一个存放爆炸图片的集合
privateList<
BomPic>
bomPics;
//创建面板的构造器,对属性进初始化
publicGamePanel(){
//创建存放爆炸图片集合的对象
bomPics=newArrayList<
();
//创建英雄飞机的对象,并对其属性进行设置
heroFlight=newFlight();
heroFlight.setWidth(80);
heroFlight.setHeight(80);
heroFlight.setX(200);
heroFlight.setY(300);
heroFlight.setDirection(Flight.UP);
heroFlight.setImage(newImageIcon("
src/images/hero.gif"
).getImage());
heroFlight.setPanel(this);
heroFlight.setSpeed(3);
heroFlight.setWasFire(false);
heroFlight.setBload(100);
//创建存储英雄子弹的集合对象
heroFires=newArrayList<
//对存放敌机的数组进行创建并进行元素的初始化
flights=newFlight[num];
//创建敌机并将其放入到数组当中
for(inti=0;
i<
flights.length;
i++){
FlightenemyFlight=newFlight();
//设置敌机的属性
enemyFlight.setWidth(40);
enemyFlight.setHeight(40);
enemyFlight.setX(ran.nextInt(500));
enemyFlight.setY(-ran.nextInt(600));
enemyFlight.setDirection(ran.nextInt(100)%3);
enemyFlight.setSpeed(ran.nextInt(3)+2);
enemyFlight.setImage(
newImageIcon("
src/images/enemyPlane.gif"
)
.getImage());
enemyFlight.setPanel(this);
enemyFlight.setWasFire(false);
//将创建好的敌机添加到数组当中
flights[i]=enemyFlight;
}
}
//绘制图片
@Override
publicvoidpaint(Graphicsg){
super.paint(g);
this.setBackground(Color.BLACK);
g.drawImage(
newImageIcon("
src/images/back3.gif"
).getImage(),
0,0,500,600,this);
if(heroFlight.getBload()>
0){
//绘制英雄机的子弹
for(inti=0;
i<
heroFires.size();
i++){
FireheroFire=heroFires.get(i);
heroFire.drawFire(g);
}
//绘制英雄飞机
heroFlight.drawFlight(g);
//绘制敌机
flights.length;
flights[i].drawFlight(g);
//绘制爆炸图片
for(inti=0;
bomPics.size();
BomPicbomPic=bomPics.get(i);
bomPic.drawBom(g);
//--------------
bomPics.remove(bomPic);
}else{
g.setColor(Color.RED);
g.setFont(newFont("
宋体"
Font.BOLD+Font.ITALIC,30));
g.drawString("
游戏结束"
200,260);
//绘制积分情况可血量图
g.setColor(Color.RED);
g.setFont(newFont("
Font.BOLD,20));
g.drawString("
积分:
"
+score+"
分"
370,30);
生命"
20,30);
g.setColor(Color.WHITE);
g.drawRect(65,17,100,10);
g.fillRect(65,17,heroFlight.getBload(),11);
publicvoidrun(){
//用于控制子弹发射的频率
intcount=0;
while(true){
//敌机运动
flights[i].flightMove();
if(flights[i].getY()>
this.getHeight()){
flights[i].setY(-ran.nextInt(500));
flights[i].setX(ran.nextInt(500));
}
if(heroFlight.isWasFire()&
&
count%10==0){
//说明发射子弹,创建子弹对象
FireheroFire=newFire();
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(
newImageIcon("
src/images/fire.gif"
heroFire.setPanel(this);
//将创建的子弹添加到存放子弹的集合当中
heroFires.add(heroFire);
//让子弹飞
heroFires.size();
//得到集合当中的每一个子弹
FireheroFire=