java课程设计报告39577.docx

上传人:b****4 文档编号:13938716 上传时间:2023-06-19 格式:DOCX 页数:49 大小:521.26KB
下载 相关 举报
java课程设计报告39577.docx_第1页
第1页 / 共49页
java课程设计报告39577.docx_第2页
第2页 / 共49页
java课程设计报告39577.docx_第3页
第3页 / 共49页
java课程设计报告39577.docx_第4页
第4页 / 共49页
java课程设计报告39577.docx_第5页
第5页 / 共49页
java课程设计报告39577.docx_第6页
第6页 / 共49页
java课程设计报告39577.docx_第7页
第7页 / 共49页
java课程设计报告39577.docx_第8页
第8页 / 共49页
java课程设计报告39577.docx_第9页
第9页 / 共49页
java课程设计报告39577.docx_第10页
第10页 / 共49页
java课程设计报告39577.docx_第11页
第11页 / 共49页
java课程设计报告39577.docx_第12页
第12页 / 共49页
java课程设计报告39577.docx_第13页
第13页 / 共49页
java课程设计报告39577.docx_第14页
第14页 / 共49页
java课程设计报告39577.docx_第15页
第15页 / 共49页
java课程设计报告39577.docx_第16页
第16页 / 共49页
java课程设计报告39577.docx_第17页
第17页 / 共49页
java课程设计报告39577.docx_第18页
第18页 / 共49页
java课程设计报告39577.docx_第19页
第19页 / 共49页
java课程设计报告39577.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java课程设计报告39577.docx

《java课程设计报告39577.docx》由会员分享,可在线阅读,更多相关《java课程设计报告39577.docx(49页珍藏版)》请在冰点文库上搜索。

java课程设计报告39577.docx

java课程设计报告39577

学院

Java课程设计报告

题目風云J-20

 

所在院系计科学院

学生仁华

专业计算机科学与技术

班级09计本1班

学号2009406010

 

2011年12月15日

一、游戏项目分析与设计

1、游戏项目功能分析

本游戏通过玩家飞机(J-20)发射子弹攻击敌机,当敌机被飞机子弹打中的时候飞发生爆炸,使得敌机消失,并且同时播放效果音乐以及爆炸效果。

本游戏中的角色J-20、敌机、B-2等均能发射子弹攻击对方,其中B-2能够发射导弹。

当敌机子弹打中J-20时J-20的生命值J-20_HP会相应的减少,当B-2的子弹或者导弹击中J-20时J-20的HP也相应的减少。

当飞机与敌机相撞的时候,敌机爆炸(同时播放效果),J-20_HP减少,J-20与B-2相撞的时候J-20发生爆炸且游戏结束。

当J-20_HP为0时,游戏结束,当J-20的子弹打中B-2时B-2_HP减少,当减少到0的时候B-2死亡,游戏胜利即游戏通关。

2、本系统共包括六个Java源文件

类之间的关系如图1.1所示。

图1.1类之间的关系

 

3、Java源文件及其功能如表1.1所示。

表1.1文件清单

序号

文件名

主要功能

备注

1

StartGame.java

主窗体类

含main方法

2

FeiJi.java

定义飞机类

3

ZiDan.java

定义飞机的子弹类

4

DiJi.java

定义敌机类

5

DiJiZiDan.java

定义敌机子弹类

6

Boss.java

定义Boss类(B-2)

7

BossZiDan.java

定义Boss子弹类

8

BossDaoDan.java

定义BossDaodan类

9

GuanBi.java

定义关闭游戏窗口类

10

BeiJing.java

定义游戏背景类

11

GameSound.java

定义播放背景音乐类

二、系统实现

1、主类StartGame(其中有一个部类(线程类))

(1)成员变量如表2.1所示

表2.1成员变量

成员变量描述

变量类型

成员变量名

工具包

Toolkit

Tool

缓冲图片

Image

Hc_img

游戏状态

int

Game_type

敌机数量

int

DJNum

子弹坐标

int

zd_y

飞机对象

FeiJi

Fj

Boss对象

Boss

Bs

背景对象

BeiJing

bj

子弹集合

ArrayList

zd_List

敌机集合

ArrayList

dj_List

敌机子弹集合

ArrayList

djzd_List

Boss导弹集合

ArrayList

bsdd_List

Boss子弹集合

ArrayList

bszd_List

Boss子弹集合

ArrayList

bszd01_List

爆炸集合

ArrayList

bz_List

爆炸图片数组

Image

bz_img[15]

媒体跟踪器对象

MediaTracker

mt

声音对象

GameSound

music

计数器

int

num

(2)方法如表2.2所示

表2.2方法

名称

功能

备注

showWindow()

创建主窗口

addKeyListener()

添加键盘监听

update(Graphicsg)

创建缓冲图片

paint(Graphicsg)

画图片方法

main(String[]args)

主方法

(3)源文件StartGame.java代码如下给出。

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.Frame;

importjava.awt.Graphics;

importjava.awt.Image;

importjava.awt.MediaTracker;

importjava.awt.Toolkit;

importjava.awt.event.KeyAdapter;

importjava.awt.event.KeyEvent;

importjava.util.ArrayList;

publicclassStartGameextendsFrame{

//Toolkit.getDefaultToolkit()→获取默认工具包

publicToolkittool=Toolkit.getDefaultToolkit();

Imagehc_img=null;

//设置游戏状态0初始1进行中2胜利3失败4暂停

intgame_type=0;

//敌机死亡数量

intDJNum=0;

intzd_y;

//创建一个飞机类对象

FeiJifj=null;

//创建一个Boss对象

Bossbs=null;

//创建一个背景对象

BeiJingbj=null;

//创建一个子弹集合,

ArrayListzd_List=newArrayList();

//创建一个敌机集合,

ArrayListdj_List=newArrayList();

//创建敌机子弹集合

ArrayListdjzd_List=newArrayList();

//创建Boss子弹集合

ArrayListbosszd_List=newArrayList();

ArrayListbosszd01_List=newArrayList();

//创建Boss导弹集合

ArrayListbossdd_List=newArrayList();

//创建一个子弹爆炸集合

ArrayListbz_List=newArrayList();

//定义一个爆炸图片数组

Image[]bz_img=newImage[15];

//定义一个媒体跟踪器

MediaTrackermt=newMediaTracker(this);

//创建一个声音类对象

GameSoundmusic=newGameSound();

//创建一个计数器

publicintnum=0;

//创建一个线程类

publicvoidshowWindow(){

//把爆炸图片存到图片数组中

for(inti=0;i

Imageimg=tool.getImage(StartGame.class

.getResource("Images/largeBurst"+i+".png"));

bz_img[i]=img;

mt.addImage(img,0);

}

try{

mt.waitForID(0);

}catch(InterruptedExceptione1){

e1.printStackTrace();

}

//播放音乐

music.playBgSound("go.mp3");

//设置窗体的标题

setTitle("風云J-20I");

//获取屏幕的x,y坐标

intx=tool.getScreenSize().width;

inty=tool.getScreenSize().height;

//设置窗体的大小

setSize(600,700);

//创建一个飞机对象

fj=newFeiJi(getWidth()/2-30,getHeight()-80,this);

//创建一个线程对象

MyThreadmy=newMyThread();

//启动线程

my.start();

//创建一个背景对象

bj=newBeiJing(this);

//创建一个Boss对象

bs=newBoss(getWidth()/2-120,this);

//设置窗体的初始位置设置居中.屏幕x坐标的一半减去组件x坐标的一半,屏幕y坐标的一半减去组件y坐标的一半.

setLocation(x/2-getWidth()/2,y/2-getHeight()/2);

//是否允许用户改变窗体大小

setResizable(false);

//设置窗体是否可见

setVisible(true);

//调用提供关闭的方法

Guanbigb=newGuanbi();

addWindowListener(gb);

//添加键盘监听器

addKeyListener(newKeyAdapter(){

publicvoidkeyPressed(KeyEvente){

//游戏状态必须为0,同时必须按下enter键

if(e.getKeyCode()==10&&game_type==0){

game_type=1;

//播放游戏开始的music

music.playBgSound("BGM_0001.mp3");

}

//当游戏失败的时候按Enter键初始化游戏状态

if(e.getKeyCode()==10&&game_type==3){//游戏状态为3,同时必须按下enter键

game_type=1;

//播放游戏开始的music

music.playBgSound("BGM_0001.mp3");

m.fj.hp=120;//玩家HP

fj=newFeiJi(getWidth()/2-30,getHeight()-80,m);//飞机返回初始坐标

zd_List.removeAll(zd_List);//移除所有的子弹集合

bz_List.removeAll(bz_List);//移除所有的爆炸集合

bosszd_List.removeAll(bosszd_List);//移除Boss子弹集合

bosszd01_List.removeAll(bosszd01_List);//移除Boss子弹集合

bossdd_List.removeAll(bossdd_List);//移除Boss导弹集合

}

//飞机移动

fj.moveFeiJi(e);

}

});

}

//创建一个窗体对象

StartGamem=this;

//定义一个计数器,用于记住子弹打死敌机的个数

intdjNum=0;

classMyThreadextendsThread{

//重写Thread类的run()

publicvoidrun(){

while(true){

try{

Thread.sleep(30);

num++;

if(num==80){

DiJidj=newDiJi(m);

dj_List.add(dj);

num=0;

djNum++;

}

}catch(InterruptedExceptione){

e.printStackTrace();

}

repaint();

}

}

}

//创建图片缓冲区

publicvoidupdate(Graphicsg){

if(hc_img==null){

//创建缓冲图片

hc_img=createImage(getWidth(),getHeight());

}

//得到缓冲图片的画笔

Graphicshc_g=hc_img.getGraphics();

//把窗体图片画在缓冲图片上

paint(hc_g);

//把缓冲图片画到窗体上

g.drawImage(hc_img,0,0,getWidth(),getHeight(),this);

}

//重写paint方法

publicvoidpaint(Graphicsg){

if(game_type==0){

bj.paintBJ(g);

}elseif(game_type==1){

bj.paintStartingBJ(g);

//画一个飞机

fj.paintFeiJi(g);

//从子弹集合中取出子弹

for(inti=0;i

ZiDanzd=(ZiDan)zd_List.get(i);

//画子弹

zd.paintZiDan(g);

}

//如果打死的敌机数超过10,这画Boss

if(djNum>=10){

//画Boss

bs.paintBoss(g);

}

//从敌机集合里面讲敌机取出来

for(intj=0;j

DiJidj=(DiJi)dj_List.get(j);

//画敌机

dj.paintDiJi(g);

//如果Boss出现则移除所有的敌机

if(bs.boss_y>=0){

dj_List.removeAll(dj_List);

}

}

//从敌机子弹集合里面将敌机子弹取出来

for(intk=0;k

DiJiZiDandjzd=(DiJiZiDan)djzd_List.get(k);

//画敌机子弹

djzd.paintDiJiZiDan(g);

//如果Boss出现则移除所有的敌机

if(bs.boss_y>=0){

djzd_List.removeAll(djzd_List);

}

}

//从Boss子弹集合里面将Boss子弹取出来

for(intk=0;k

BossZiDanbosszd=(BossZiDan)bosszd_List.get(k);

//画敌机子弹

bosszd.paintBossZiDan(g);

}

//从Boss子弹集合里面将Boss子弹取出来

for(intk=0;k

BossZiDanbosszd01=(BossZiDan)bosszd01_List.get(k);

//画敌机子弹

bosszd01.paintBossZiDan(g);

}

//从Boss导弹集合里面将Boss导弹取出来

for(intk=0;k

BossZiDanbossdd=(BossZiDan)bossdd_List.get(k);

//画敌机子弹

bossdd.paintBossDaoDan(g);

}

//画子弹打中目标时的爆炸

for(intj=0;j

BaoZhabz=(BaoZha)bz_List.get(j);

//画敌机子弹

bz.paintBaoZha(g);

}

}elseif(game_type==2){//游戏胜利

//画一个游戏胜利的图片

bj.paintStartingBJ(g);

//设置画笔颜色

g.setColor(Color.RED);

//设置画笔字体大小和类型

g.setFont(newFont("华文行楷",Font.BOLD,40));

//在窗体上打印“GameOver!

g.drawString("GameWin!

",getWidth()/2-100,getHeight()/2);

g.drawString("Youaresogreat!

",getWidth()/2-150,

getHeight()/2+50);

}elseif(game_type==3){//游戏失败

//画一个游戏失败的图片

bj.paintStartingBJ(g);

//设置画笔颜色

g.setColor(Color.RED);

//设置画笔字体大小和类型

g.setFont(newFont("华文行楷",Font.BOLD,40));

//在窗体上打印“GameOver!

g.drawString("GameOver!

",getWidth()/2-100,getHeight()/2);

g.drawString("按Enter键继续游戏!

",getWidth()/2-,

getHeight()/2+50);

}

}

//主方法

publicstaticvoidmain(String[]args){

StartGamem=newStartGame();

m.showWindow();

}

}

2、类FeiJi

(1)成员变量如表2.3所示

表2.3成员变量

成员变量描述

变量类型

成员变量名

飞机坐标

int

fj_x,fj_y

飞机生命值

int

Hp

窗体对象

StartGame

m

工具包

Toolkit

Tool

飞机图片

Imge

fj_img

(2)方法如表2.4所示

表2.4方法

名称

功能

备注

FeiJi(intx,inty,inthp)

初始化fj_x,fj_y,hp

构造方法

paintFeiJi(Graphicsg)

画飞机图片

getRect()

话矩形框

套住飞机

moveFeiJi(keyEvente)

移动飞机

(3)源文件FeiJi.java如下列出。

importjava.awt.Color;

importjava.awt.Font;

importjava.awt.Graphics;

importjava.awt.Image;

importjava.awt.Rectangle;

importjava.awt.Toolkit;

importjava.awt.event.KeyEvent;

publicclassFeiJi{

publicintfj_x;

publicintfj_y;

finalintA=60;

//Boss的生命值

publicinthp=120;

//创建一个窗体对象

StartGamem=null;

//Toolkit.getDefaultToolkit()→获取默认工具包

publicToolkittool=Toolkit.getDefaultToolkit();

//得到一个飞机图片

Imagefj_img=tool.getImage(FeiJi.class.getResource("Images/J-20a.png"));

//通过构造方法实例化StartGame对象和为飞机设置初始位置

publicFeiJi(intfj_x,intfj_y,StartGamem){

this.fj_x=fj_x;

this.fj_y=fj_y;

this.m=m;

}

//一个画飞机的方法

publicvoidpaintFeiJi(Graphicsg){

g.drawImage(fj_img,fj_x,fj_y,A,A,m);

g.setColor(Color.red);//画笔颜色为红色

g.setFont(newFont("隶书",Font.BOLD,15));

//在窗体上打印fj的生命值hp

g.drawString("J-20hp",m.getWidth()-590,m.getHeight()-25);

g.drawRect(10,685,120,5);//画一个矩形边框

g.fillRect(10,685,hp*1,5);//画一个矩形实体框

//判断飞机是否与敌机相撞

for(intk=0;k

//取出单个敌机

DiJidj=(DiJi)m.dj_List.get(k);

//判断飞机是否与敌机相撞

booleanbool=this.getRect().intersects(dj.getRect());

if(bool){

//如果飞机与敌机相撞则移除敌机

m.dj_List.remove(dj);

BaoZhabz=newBaoZha(dj.dj_x,dj.dj_y,m,m.bz_img);

m.bz_List.add(bz);

//飞机生命值减少

this.hp-=30;

//播放音乐

m.music.playSound("bz.mp3");

}

}

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

当前位置:首页 > 经管营销 > 公共行政管理

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

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