Java课程设计小游戏

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《高级语言程序设计》课程设计报告1、程序设计说明书【设计题目】雷霆行动游戏程序【问题描述】雷霆行动是一款供大家休闲娱乐的小游戏,游戏通过鼠标控制我方飞机hero的移动,达到躲闪敌机的目的;利用鼠标键发射子弹和导弹,达到击毁敌机的目的,摧毁敌机有积分。此游戏为闯关积分类小游戏。【软件功能】1.按鼠标左键,游戏开始。2.利用鼠标移动控制hero自由移动,闪躲敌方子弹。3.利用鼠标左键发射子弹,实现打中敌方飞机的功能;利用鼠标右键释放导弹,实现摧毁大量敌机的功能,击中一个敌方飞机积一分。4.hero碰到对方子弹会消耗生命,消耗生命的多少,依据子弹的不同而不同。5.一关之后会进入下一关。6.游戏右上角红色的进度条表示hero的生命,当红色全部消失之后,游戏结束,显示死亡。7.游戏结束后,可重新开始,同1。【算法思想】1.创建游戏主界面,确定窗口的坐标。2.设计游戏开始界面显示信息及信息坐标。3.设置游戏进行中的信息,hero的移动、释放子弹和导弹,达到击毁敌机的目的。4.处理游戏进行中的子弹、大爆、爆炸、敌机消失和存在的条件。5.设置进入下一关的条件。6.设计游戏结束界面显示信息及信息坐标。7.处理游戏重新开始满足的条件。8.装载图像。9.对游戏进行调试和改进,使这个游戏更加完善。【类的设计】本程序共有七个类:1.MainPanel属性:BBv为子弹数组,EEv为敌机数组,BOMBv为爆炸数组,EBv为敌机子弹数组,DBv为大爆数组,E-num为敌机数量,E-max敌机最大数,E-vel为敌机速度,E-mov为敌机横移几率,E-hit为敌机开火几率,Sum为击毁敌机数量,hero-hp为hero生命,back至db-2均为图片,tracker为媒体跟踪器,y为背景滚动变量,seq为hero的动画变量,isfire为hero开火,isblast为是否发爆,blastnum为大爆的数量,blastc为控制大爆,f、ff、s、ss均为游戏界面上显示的信息;方法:MainPanel(Game)构造方法,paint(Graphics)建立游戏开始界面如显示的文字,run()控制对象移动,BBmove(int,int)子弹的移动方法,DBmove(int,int)大爆的移动方法,mouseDragged(MouseEvent)鼠标的拖拽用来保证hero不出界,mouseMoved(MouseEvent)鼠标的移动用来控制hero移动,mousePressed(MouseEvent)鼠标按键在组件上按下时调用,重新开始游戏,mouseClicked(MouseEvent)鼠标按键在组件上单击(按下并释放)时调用,释放子弹,mouseReleased(MouseEvent)鼠标按钮在组件上释放时调用,mouseEntered(MouseEvent)鼠标进入组件上调用,mouseExited(MouseEvent)鼠标离开组件时调用;功能:游戏的开始、运行、结束与重新开始。2.Game继承JFrame属性:x为游戏主界面的横坐标,y为游戏主界面的纵坐标,pl为hero的子弹;方法:Game()创建游戏主界面,main(String[])主方法;功能:创建出游戏的主界面。3.Blast(大爆)属性:x为大爆的横坐标,y为大爆的纵坐标,cont为数量,islive为hero存活;方法:Blast(int,int)建立大爆的坐标,grow()构造方法;功能:构造一个大爆(导弹爆炸)的类。4.Bomb(爆炸)属性:x为爆炸的横坐标,y为爆炸的纵坐标,cont为数量,islive为hero存活;方法:Bomb(int,int)建立爆炸的坐标,grow()构造方法;功能:构造一个爆炸(子弹击中敌机)的类。5.Enemy(敌机)属性:x为敌机的横坐标,y为敌机的纵坐标,vx敌机数组的横坐标,vy为敌机数组的纵坐标,r为敌机横移几率,f为敌机开火几率,toleft为向左移动敌机,toright为向右移动敌机;方法:Enemy(int,int,int,int)建立敌机的坐标,move(int)实现敌机的移动,tofire()敌机释放子弹,hit(int,int)敌机的子弹攻击hero,hitblast(int,int)子弹产生爆炸;功能:构造一个敌机的类,实现敌机的移动。6.EnemyBullet(敌机子弹)属性:x、y为敌机子弹的坐标,vx、vy为敌机子弹数组的坐标;方法:move()实现敌机子弹的移动,hit(int,int)敌机子弹攻击hero;功能:构造一个敌机子弹的类,实现敌机子弹的移动和攻击。7.PlayerBullet(hero子弹)属性:x、y为hero子弹的坐标,v为hero子弹的速度;方法:move()实现hero子弹的移动,hit(int,int)hero子弹攻击敌机;功能:构造一个hero子弹的类,实现hero子弹的移动和攻击。【用户界面】游戏开始界面游戏进行中界面游戏结束界面【程序技巧】1.建立一个主类,其余六个类均通过这个主类来调用2.响应鼠标事件3.用户界面采用图形用户界面4.利用媒体跟踪器监测图像的装载5.无效的子弹和被摧毁的敌机能及时处理,未被摧毁的敌机与子弹可以保留6.游戏失败可以重新开始【模块划分及调用关系】【模块流程图】游戏界面主框架模块:Game:游戏主界面模块MainPanel:游戏主要运行步骤模块Blast:大爆(导弹爆炸)模块Bomb:爆炸(子弹击中)模块Enemy:敌机模块EnemyBullet:敌军子弹模块PlayerBullet:hero子弹模块创建MainPanel游戏运行模块创建Game游戏主界面模块装载图片,加载显示信息创建EnemyBullet模块,处理敌机子弹创建PlayerBullet模块,处理hero子弹创建Blast模块,处理大爆创建Bomb模块,处理子弹爆炸创建Enemy模块,处理敌机处理hero游戏操作模块:【运行说明】按鼠标左键开始游戏,鼠标移动控制hero的移动,按鼠标左键打出子弹,攻击敌机,每打死一个敌机积一分,按鼠标右键放导弹,实现摧毁大量敌机的功能,本游戏共三关,若游戏中途失败,可以重新开始。2、程序上机调试报告【语法错误及其排除】1.无法更改导弹数量。解决方法:添加Blastnum=10语句,即有十个导弹;2.个别图片运行不出来。解决方法:将图片格式与程序中相匹配;3.文字在程序中写出,但在游戏过程中不显示。解决方法:将文字的坐标调试好。【算法错误及其排除】1.点击鼠标右键无法实现大爆。解决方法:mouseReleased(MouseEvente)2.hero的子弹打中敌机后敌机没有消失。解决方法:EBv.remove(i);游戏开始是hero出现于屏幕下方中央按鼠标左键发射子弹Hero被敌机或子弹击中减少相应生命值击毁敌方飞机增加分数生命是否为零否是游戏开始游戏结束3、程序测试结果【测试数据】我方飞机的移动,是否能打出子弹,导弹的释放,能否摧毁敌方飞机,是否可以积分。【输出结果】游戏初始化子弹爆炸情况大爆(导弹爆炸)、飞机移动【收获及体会】本来以为课程设计是个很简单的事情,但是随着程序的编写,发现这是一个非常不容易的过程,通过去图书馆和上网查找资料,我发现我还有很多不足,并通过查JDK手册我也学习了很多知识,我意识到JDK手册是非常好的一种学习Java的工具,Java在生活中有很重要的应用性,这提高了我的学习兴趣。编写程序的过程中我也遇到了很多困难,当程序出现错误运行不出来时,我非常着急,在冷静地分析、调通程序之后,我意识到有耐心、有恒心是多么重要啊!在今后的学习生活中,我会更加努力,认真、耐心、细心地处理事情,相信我会逐步提高自己的能力。4、源程序代码(Java语言,要求有尽可能多的注释语句)packagelightning;importjava.awt.*;importjava.awt.Image;importjava.awt.Toolkit;importjava.awt.MediaTracker;importjavax.swing.*;importjava.awt.event.*;importjava.util.EventListener;importjava.util.Vector;importlightning.*;publicclassMainPanelextendsJPanelimplementsRunnable,MouseMotionListener,MouseListener{Gamea;VectorBBv=newVector();//子弹数组VectorEEv=newVector();//敌机数组VectorBOMBv=newVector();//爆炸数组VectorEBv=newVector();//敌机子弹数组VectorDBv=newVector();//大爆数组intE_num;intE_max;//敌机最大数intE_vel;//敌机速度intE_mov;//敌机横移几率intE_hit;//敌机开火几率intSum;//击坠敌机数量,击坠一个敌机积一分inthero_hp;//hero生命Imageback=null;//背景图片Imagehero=null;//hero图片Imagefire=null;//hero子弹图片Imagefire_l=null;//hero子弹2图片Imageel_0=null;//敌机图片Imageel_0_l=null;//敌机left图片Imageel_0_r=null;//敌机right图片Imageel_bb=null;//敌机子弹图片Imageel_bb_0=null;//敌机子弹2图片Imagebomb_0=null;//敌机爆炸0图片Imagebomb_1=null;//敌机爆炸1图片Imagebomb_2=null;//敌机爆炸2图片Imagebomb_3=null;//敌机爆炸3图片Imagedb_1=null;//大爆1图片Imagedb_2=null;//大爆2图片MediaTrackertracker=null;//媒体跟踪器,用来监测图像的装载ThreadGame_star;inty;//背景滚动变量inthero_oldx,hero_oldy;//hero的旧x,y坐标inthero_x,hero_y;//hero的新x,y坐标intseq;//hero的动画变量booleanisfire;//hero开火booleanisblast;//是否发爆intBBx,BBy;//子弹的横纵坐标intDBx,DBy;//大爆的横纵坐标intblastnum;//大爆的数量booleanblastc;//控制大爆Fontf=newFont(黑体,Font.BOLD,30);Fontff=newFont(黑体,Font.BOLD,90);FontS=newFont(幼圆,Font.BOLD,15);FontSS=newFont(幼圆,Font.BOLD,25);MainPanel(Gamea){this.a=a;tracker=newMediaTracker(this);//将以下图片加到媒体跟踪器中back=Toolkit.getDefaultToolkit().getImage(MainPanel.class.getResource(back3.jpg));tracker.addImage(back,0);hero=Toolkit.getDefaultToolkit().getImage(MainPanel.class.getResource(hero.jpg));tracker.addImage(hero,1);fire=Toolkit.getDefaultToolkit().getImage(MainPanel.class.getResource(herozidan.jpg));tracker.addImage(fire,2);fire_l=Toolkit.getDefaultT

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功