Java雷电游戏项目报告模板.docx
《Java雷电游戏项目报告模板.docx》由会员分享,可在线阅读,更多相关《Java雷电游戏项目报告模板.docx(9页珍藏版)》请在冰点文库上搜索。
Java雷电游戏项目报告模板
北京青年政治学院小学期
达内JAVA课程项目报告
项目题目:
雷电游戏的设计与实现
专业班级:
学生姓名:
学生学号:
指导教师姓名:
Notableofcontentsentriesfound.
一、系统目标
通过本游戏的设计,综合自己在校期间所学的理论知识,设计开发雷电游戏,使自己熟应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,进一步巩固和加强自身对J2SE基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。
通过本游戏的开发,主要实现游戏的可操作性及美观性,同时使自己对JAVA语言的了解更进一层,为将来的实际工作打下坚实的基础。
二、系统设计思路
1、定义窗口的属性
2、分别设置背景图片,英雄飞机图片,敌机图片,子弹图片,爆炸的图片
3、分别设置敌机和英雄飞机的运动轨迹
4、写出判断敌机是否与英雄飞机相撞,子弹是否击中敌机的代码
5、设置一些丰富游戏的细致属性,例:
绘制积分情况和血量图,子弹发射的频率等
三、系统详细设计
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、丰富游戏的设置
绘制得分情况,绘制英雄飞机血量图和游戏结束等字体
四、系统实现(游戏代码展示)
importclassGamePanelextendsJPanelimplementsRunnable,MouseListener,
MouseMotionListener{
privateFlightheroFlight;
privateListheroFires;
etImage());
(this);
(3);
(false);
(100);
etImage());
(this);
(false);
etImage(),
0,0,500,600,this);
if()>0){
rawFlight(g);
}
lightMove();
if(flights[i].getY()>()){
flights[i].setY(500));
flights[i].setX(500));
}
}
if()&&count%10==0){
etImage());
(this);
etImage());
(this);
//将图片对象添加到集合当中
(bomPic);
//说明子弹击中敌机
//将子弹从集合当中移除
(heroFire);
//将敌机的坐标再次随机设置
(500));
(500));
i--;
j--;
break;
}
}
}
if()>0){
//判断敌机是否撞击英雄机
for(inti=0;i<;i++){
FlightenemyFlight=flights[i];
if(isHit(enemyFlight,heroFlight)){
()-1);
(500));
(500));
}
}
}
try{
//让线程休息一会
(15);
//刷新输出新的界面,自动调用paint方法
repaint();
count++;
}catch(InterruptedExceptione){
();
}
}
}
/**
*判断敌机是否与英雄机相撞
*@paramenemyFlight
*@paramheroFlight2
*@return
*/
privatebooleanisHit(FlightenemyFlight,FlightheroFlight){
intxx=()+()/2)
-()+()/2);
intyy=()+()/2)
-()+()/2);
intxy_sum=xx*xx+yy*yy;
intr_sum=
()/2
+()/2)
*()/2+()/2);
if(xy_sum<=r_sum){
returntrue;
}
returnfalse;
}
@Override
publicvoidmouseClicked(MouseEvente){
//鼠标点击时调用的方法
}
@Override
publicvoidmouseEntered(MouseEvente){
//鼠标进入面板时调用的方法
}
@Override
publicvoidmouseExited(MouseEvente){
//鼠标退出面板时调用的方法
}
@Override
publicvoidmousePressed(MouseEvente){
(true);
}
@Override
publicvoidmouseReleased(MouseEvente){
//鼠标释放时调用的方法
(false);
}
@Override
publicvoidmouseDragged(MouseEvente){
//鼠标拖拽时调用的方法
()()/2);
()-());
//刷新输出面板调用paint方法
repaint();
}
@Override
publicvoidmouseMoved(MouseEvente){
//鼠标移动时调用的方法
()()/2);
()-());
//刷新输出面板调用paint方法
repaint();
}
/**
*判断子弹是否击中敌机的方法
*/
privatebooleanisHit(FireheroFire,FlightenemyFlight){
//获取敌机的中心坐标
intx=()+
()/2;
inty=()+
()/2;
//判断是否击中敌机的心脏
if(x>()
&&x<=()+())
&&y>()
&&y<=()+())){
returntrue;
}
returnfalse;
}
}
五、系统设计总结
六、参考文献