您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > java课程设计报告
凯里学院Java课程设计报告题目風云J-20所在院系计科学院学生姓名张仁华专业计算机科学与技术班级09计本1班学号20094060102011年12月15日-1-一、游戏项目分析与设计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类之间的关系-2-3、Java源文件及其功能如表1.1所示。二、系统实现1、主类StartGame(其中有一个内部类(线程类))(1)成员变量如表2.1所示表2.1成员变量成员变量描述变量类型成员变量名工具包ToolkitTool缓冲图片ImageHc_img游戏状态intGame_type敌机数量intDJNum子弹坐标intzd_y飞机对象FeiJiFjBoss对象BossBs表1.1文件清单序号文件名主要功能备注1StartGame.java主窗体类含main方法2FeiJi.java定义飞机类3ZiDan.java定义飞机的子弹类4DiJi.java定义敌机类5DiJiZiDan.java定义敌机子弹类6Boss.java定义Boss类(B-2)7BossZiDan.java定义Boss子弹类8BossDaoDan.java定义BossDaodan类9GuanBi.java定义关闭游戏窗口类10BeiJing.java定义游戏背景类11GameSound.java定义播放背景音乐类-3-背景对象BeiJingbj子弹集合ArrayListzd_List敌机集合ArrayListdj_List敌机子弹集合ArrayListdjzd_ListBoss导弹集合ArrayListbsdd_ListBoss子弹集合ArrayListbszd_ListBoss子弹集合ArrayListbszd01_List爆炸集合ArrayListbz_List爆炸图片数组Imagebz_img[15]媒体跟踪器对象MediaTrackermt声音对象GameSoundmusic计数器intnum(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;-4-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;-5-//创建一个线程类publicvoidshowWindow(){//把爆炸图片存到图片数组中for(inti=0;im.bz_img.length;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);//设置窗体是否可见-6-setVisible(true);//调用提供关闭的方法Guanbigb=newGuanbi();addWindowListener(gb);//添加键盘监听器addKeyListener(newKeyAdapter(){publicvoidkeyPressed(KeyEvente){//游戏状态必须为0,同时必须按下enter键if(e.getKeyCode()==10&&game_type==0){game_type=1;//播放游戏开始的musicmusic.playBgSound(BGM_0001.mp3);}//当游戏失败的时候按Enter键初始化游戏状态if(e.getKeyCode()==10&&game_type==3){//游戏状态为3,同时必须按下enter键game_type=1;//播放游戏开始的musicmusic.playBgSound(BGM_0001.mp3);m.fj.hp=120;//玩家HPfj=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{-7-//重写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);//画一个飞机-8-fj.paintFeiJi(g);//从子弹集合中取出子弹for(inti=0;izd_List.size();i++){ZiDanzd=(ZiDan)zd_List.get(i);//画子弹zd.paintZiDan(g);}//如果打死的敌机数超过10,这画Bossif(djNum=10){//画Bossbs.paintBoss(g);}//从敌机集合里面讲敌机取出来for(intj=0;jdj_List.size();j++){DiJidj=(DiJi)dj_List.get(j);//画敌机dj.paintDiJi(g);//如果Boss出现则移除所有的敌机if(bs.boss_y=0){dj_List.removeAll(dj_List);}}//从敌机子弹集合里面将敌机子弹取出来for(intk=0;kdjzd_List.size();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;kbosszd_List.size()
本文标题:java课程设计报告
链接地址:https://www.777doc.com/doc-5635437 .html