资源描述:
《TAVA课程设计 坦克大战》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《Java语言程序设计》课程设计报告题目:坦克大战专业:学号:姓名:指导教师:成绩:2010年12月28日1.课程设计研究背景及意义开发一个基于J2SE的游戏,坦克大战2.课程设计题目描述和要求坦克游戏要求:i.需要有图形游戏界面,让用户能看到游戏给出的反馈ii.有人机交互功能,使用户能操作指定的游戏元素iii.不同队伍的坦克,须显示不同外观,已分辨敌我iv.坦克能够开火,攻击敌方,但不能攻击队友v.需要有不可被子弹穿透的墙,且墙有可摧毁和不可摧毁两种vi.坦克有生命值,并非被击中一次就会爆炸vii.坦克爆炸后将
2、产生道具,拾到道具的坦克可加满生命值3.课程设计报告内容3.1题目求解的理论依据及算法解题原理:1)游戏基本元素:坦克,炮管,子弹,墙壁,地雷2)按住w,s,a,d或上,下,左,右箭头键,坦克向上下左右移动3)按鼠标左键,坦克开火,产生子弹,子弹与另一个坦克相碰,子弹3.2数据结构:窗口:主窗口TankClient游戏元素:子弹shot,坦克tank,墙壁wall,血条HitPoint,炸弹Bomb,涨炸弹的道具ShotsItem,涨血的道具HitPointItem3.3主要事件处理:1、按下鼠标左键发射普通子弹
3、。2、按下鼠标右键发射散弹。3、子弹爆炸的效果,普通子弹和散弹的效果。3.4简要的设计流程:3.5、源代码:packagecn.hnist.Joshua;importjava.awt.*;/***抽象子弹类*@authorbebebird@hotmail.com*/abstractclassShot{intshotSpeed;//子弹移动速度intshotRadius;//子弹大小(半径)intshotPower;//子弹威力intox,oy,sx,sy;//o表示Tank的中心坐标,s表示炮弹坐标(初始时为炮筒
4、端点)intlengthX,lengthY;//子弹每次移动的步长booleanisLive;booleanisBomb;//死时是否产生爆炸TankClienttc=null;Tanktk=null;ShotBombshotBomb=null;publicstaticfinalToolkitTLK=Toolkit.getDefaultToolkit();publicShot(intox,intoy,intsx,intsy,Tanktk){this.ox=ox;this.oy=oy;this.sx=sx;this
5、.sy=sy;this.tc=tk.tc;this.tk=tk;this.isLive=true;}publicShot(Tanktk){this.ox=tk.x;this.oy=tk.y;this.sx=tk.turretDirx;this.sy=tk.turretDiry;this.tc=tk.tc;this.tk=tk;this.isLive=true;}abstractvoiddraw(Graphicsg);abstractvoidmove();abstractvoiddead();publicboole
6、anisOutOfWindow()//检查子弹是否跃出边界{if(sx>TankClient.WIN_WIDTH
7、
8、sx<0
9、
10、sy>TankClient.WIN_HEIGHT
11、
12、sy<0){this.isBomb=false;returntrue;}else{returnfalse;}}publicRectanglegetRect()//碰撞检测时用于判断{returnnewRectangle(sx-shotRadius,sy-shotRadius,shotRadius*2,shotRadius*2;}}/**
13、*散弹类*@authorbebebird@hotmail.com*/classHydraShotextendsShot{staticfinalImageHYDRASHOT=TLK.getImage(Shot.class.getClassLoader().getResource("Image/Shot/SUPER.png"));publicHydraShot(intox,intoy,intsx,intsy,Tanktk){super(ox,oy,sx,sy,tk);this.shotPower=1;//子弹大小(半
14、径)设置为6this.shotRadius=6;//炸弹速度设置为3this.shotSpeed=13;this.lengthX=shotSpeed*(sx-ox)/(int)Math.hypot(sx-ox,sy-oy);this.lengthY=shotSpeed*(sy-oy)/(int)Math.hypot(sx-ox,sy-oy);}publicvoiddraw