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

上传人:b****2 文档编号:2688327 上传时间:2023-05-04 格式:DOCX 页数:15 大小:18.59KB
下载 相关 举报
Java雷电游戏项目报告模板.docx_第1页
第1页 / 共15页
Java雷电游戏项目报告模板.docx_第2页
第2页 / 共15页
Java雷电游戏项目报告模板.docx_第3页
第3页 / 共15页
Java雷电游戏项目报告模板.docx_第4页
第4页 / 共15页
Java雷电游戏项目报告模板.docx_第5页
第5页 / 共15页
Java雷电游戏项目报告模板.docx_第6页
第6页 / 共15页
Java雷电游戏项目报告模板.docx_第7页
第7页 / 共15页
Java雷电游戏项目报告模板.docx_第8页
第8页 / 共15页
Java雷电游戏项目报告模板.docx_第9页
第9页 / 共15页
Java雷电游戏项目报告模板.docx_第10页
第10页 / 共15页
Java雷电游戏项目报告模板.docx_第11页
第11页 / 共15页
Java雷电游戏项目报告模板.docx_第12页
第12页 / 共15页
Java雷电游戏项目报告模板.docx_第13页
第13页 / 共15页
Java雷电游戏项目报告模板.docx_第14页
第14页 / 共15页
Java雷电游戏项目报告模板.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《Java雷电游戏项目报告模板.docx》由会员分享,可在线阅读,更多相关《Java雷电游戏项目报告模板.docx(15页珍藏版)》请在冰点文库上搜索。

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

Java雷电游戏项目报告模板

 

北京青年政治学院小学期

 

达内JAVA课程项目报告

 

项目题目:

雷电游戏的设计与实现

专业班级:

学生姓名:

学生学号:

指导教师姓名:

 

目录

一、系统目标X

二、系统设计思路X

三、系统详细设计X

四、系统实现X

五、系统设计总结XX

六、参考文献XX

 

1、系统目标

通过本游戏的设计,综合自己在校期间所学的理论知识,设计开发雷电游戏,使自己熟应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,进一步巩固和加强自身对J2SE基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。

通过本游戏的开发,主要实现游戏的可操作性及美观性,同时使自己对JAVA语言的了解更进一层,为将来的实际工作打下坚实的基础。

二、系统设计思路

1、定义窗口的属性

2、分别设置背景图片,英雄飞机图片,敌机图片,子弹图片,爆炸的图片

3、分别设置敌机和英雄飞机的运动轨迹

4、写出判断敌机是否与英雄飞机相撞,子弹是否击中敌机的代码

5、设置一些丰富游戏的细致属性,例:

绘制积分情况和血量图,子弹发射的频率等

3、系统详细设计

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;

privateListheroFires;

//定义存储敌机的数组

privateFlight[]flights;

//初始化敌机为10架

privateintnum=10;

//创建一个生成随机数的Random对象

privateRandomran=newRandom();

//定义一个统计积分的属性

privateintscore;

//定义一个存放爆炸图片的集合

privateListbomPics;

//创建面板的构造器,对属性进初始化

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

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

FireheroFire=heroFires.get(i);

heroFire.drawFire(g);

}

//绘制英雄飞机

heroFlight.drawFlight(g);

//绘制敌机

for(inti=0;i

flights[i].drawFlight(g);

}

//绘制爆炸图片

for(inti=0;i

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);

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);

}

@Override

publicvoidrun(){

//用于控制子弹发射的频率

intcount=0;

while(true){

//敌机运动

for(inti=0;i

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").getImage());

heroFire.setPanel(this);

//将创建的子弹添加到存放子弹的集合当中

heroFires.add(heroFire);

}

//让子弹飞

for(inti=0;i

//得到集合当中的每一个子弹

FireheroFire=heroFires.get(i);

heroFire.fireMove();

if(heroFire.getY()<0){

heroFires.remove(heroFire);

}

}

//判断子弹是否能够击中敌机

for(inti=0;i

//英雄机的子弹

FireheroFire=heroFires.get(i);

for(intj=0;j

//敌机

FlightenemyFlight=flights[j];

//判断是否击中

if(isHit(heroFire,enemyFlight)){

score++;

/**创建爆炸效果的图片对象,

*将图片对象添加到集合当中

**/

//创建图片对象

BomPicbomPic=newBomPic();

bomPic.setWidth(50);

bomPic.setHeight(50);

bomPic.setX(enemyFlight.getX());

bomPic.setY(enemyFlight.getY());

bomPic.setImage(

newImageIcon("src/images/bomb_0.gif").getImage());

bomPic.setPanel(this);

//将图片对象添加到集合当中

bomPics.add(bomPic);

//说明子弹击中敌机

//将子弹从集合当中移除

heroFires.remove(heroFire);

//将敌机的坐标再次随机设置

enemyFlight.setY(-ran.nextInt(500));

enemyFlight.setX(ran.nextInt(500));

i--;

j--;

break;

}

}

}

if(heroFlight.getBload()>0){

//判断敌机是否撞击英雄机

for(inti=0;i

FlightenemyFlight=flights[i];

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(InterruptedExceptione){

e.printStackTrace();

}

}

}

/**

*判断敌机是否与英雄机相撞

*@paramenemyFlight

*@paramheroFlight2

*@return

*/

privatebooleanisHit(FlightenemyFlight,FlightheroFlight){

intxx=(enemyFlight.getX()+enemyFlight.getWidth()/2)

-(heroFlight.getX()+heroFlight.getWidth()/2);

intyy=(enemyFlight.getY()+enemyFlight.getHeight()/2)

-(heroFlight.getY()+heroFlight.getHeight()/2);

intxy_sum=xx*xx+yy*yy;

intr_sum=

(enemyFlight.getWidth()/2

+heroFlight.getWidth()/2)

*(enemyFlight.getWidth()/2+heroFlight.getWidth()/2);

if(xy_sum<=r_sum){

returntrue;

}

returnfalse;

}

@Override

publicvoidmouseClicked(MouseEvente){

//鼠标点击时调用的方法

}

@Override

publicvoidmouseEntered(MouseEvente){

//鼠标进入面板时调用的方法

}

@Override

publicvoidmouseExited(MouseEvente){

//鼠标退出面板时调用的方法

}

@Override

publicvoidmousePressed(MouseEvente){

heroFlight.setWasFire(true);

}

@Override

publicvoidmouseReleased(MouseEvente){

//鼠标释放时调用的方法

heroFlight.setWasFire(false);

}

@Override

publicvoidmouseDragged(MouseEvente){

//鼠标拖拽时调用的方法

heroFlight.setX(e.getX()-heroFlight.getWidth()/2);

heroFlight.setY(e.getY()-heroFlight.getHeight());

//刷新输出面板调用paint方法

repaint();

}

@Override

publicvoidmouseMoved(MouseEvente){

//鼠标移动时调用的方法

heroFlight.setX(e.getX()-heroFlight.getWidth()/2);

heroFlight.setY(e.getY()-heroFlight.getHeight());

//刷新输出面板调用paint方法

repaint();

}

/**

*判断子弹是否击中敌机的方法

*/

privatebooleanisHit(FireheroFire,FlightenemyFlight){

//获取敌机的中心坐标

intx=enemyFlight.getX()+

enemyFlight.getWidth()/2;

inty=enemyFlight.getY()+

enemyFlight.getHeight()/2;

//判断是否击中敌机的心脏

if(x>heroFire.getX()

&&x<=(heroFire.getX()+heroFire.getWidth())

&&y>heroFire.getY()

&&y<=(heroFire.getY()+heroFire.getHeight())){

returntrue;

}

returnfalse;

}

}

五、系统设计总结

六、参考文献

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2