坦克大战设计.docx

上传人:豆**** 文档编号:33428699 上传时间:2022-08-11 格式:DOCX 页数:36 大小:43.49KB
返回 下载 相关 举报
坦克大战设计.docx_第1页
第1页 / 共36页
坦克大战设计.docx_第2页
第2页 / 共36页
点击查看更多>>
资源描述

《坦克大战设计.docx》由会员分享,可在线阅读,更多相关《坦克大战设计.docx(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品文档,仅供学习与交流,如有侵权请联系网站删除湖 北 大 学JAVA课程设计论文题 目 坦克大战游戏 姓 名 张诚 学 号 2014221119200156姓 名 柳谦 学 号 2014221119200091专业年级 计算机科学与技术1401 指导教师 王雷春 职 称 副教授 2016年 5月目录绪论41背景42课程设计目标及目的52.1课程设计的目标52.2课程设计的目的52.3可行性分析52.3.1技术可行性52.3.2经济可行性分析63概要设计64详细设计64.1项目与类的结构图64.2 各类实现的功能概要64.2.1 barrier包64.2.2 lightButton包74.2.

2、3 Tankwar包74.2.4 mapediter包74.3 主要类的的UML图及主要成员变量和函数说明74.3.1 Barrier类74.3.2 LightButton类104.3.3 Mapediter类124.3.4 Main类144.3.5 Boom类174.3.6 Item类194.3.7 Missle类224.3.8 PanelShow类224.3.9 Tank类224.3.10 TankWar 类225运行结果226总结297参考文献298附录30坦克大战摘要坦克大战是一款最初由日本南梦宫Namco游戏公司1985年在任天堂FC平台上,推出的一款多方位平面射击游戏。一经推出,人

3、气十分高涨,然后又陆续推出了GB,PC等版本,玩法也大大扩充,由最初的单人2D过关演变到如今的多人3D联网对战游戏,我们小时候应该都体验过,之前C#课程中已经了解过有关信息,如今就想同样以Java为载体编写一款坦克大战。本课题展示了如何使用Java编写出能够实际运行的单人版坦克大战游戏。课题介绍了项目的功能、类的设计和逻辑难点等重要点。通过本课题,你可以了解到有关Java开发在实际运用中的基础知识、并对应用游戏开发有一定的新的认识。绪论Java是由Sun Microsystems公司推出的Java面向对象程序设计语言。Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的

4、Java 开发公司被要求所设计的 Java软件必须相互兼容。其官方定义是:“Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。”。其一经推出,就获得了众多程序员的青睐,发展至今已有21年的历史,仍然是当今最受追捧得的变成语言之一。 我们已经初步了解了Java的有关知识,想切身体验一下Java编程语言的特点,同时老师也要求我们完成课程设计,加上回想起小时候玩过的坦克大战游戏,于是就有了此设想。1背景2015年11月编程语言排行榜中,Java语言仍然在持续上涨,其份额已经达到了20%占据榜首。加上基于java开发的安卓手机系统是当今无可

5、置疑的市场第一位,同时互联网也发展迅速,而在web开发领域,java也处于领导地位,当前很长一段时间之内,java编程语言的前途十分光明,我们很有必要掌握这门技术。同时人们对游戏的热情经久不衰,而其中坦克大战作为一个推出已有10余年的游戏,其活力仍不减当年,至今仍有各种各样版本的坦克大战在各大平台上运行。于是我们便想运用java开发一个简单的坦克大战游戏。2课程设计目标及目的2.1课程设计的目标 运用Java编程语言,编写出能够实际运行的单人坦克大战游戏2.2课程设计的目的1.了解Java应用游戏的开发基础2.获取有关Java编程开发的实际知识3.锻炼自身动手实践能力4.切身体验Java编程开

6、发步骤5.于动手操作过程中验证所学知识2.3可行性分析2.3.1技术可行性我们设计的坦克大战入门版并没有什么高深的技术难题,尚未涉及到联网等事件,经查阅资料,我们认定,补充部分课堂外的知识,自身完全能够制作一个简单的坦克大战。2.3.2经济可行性分析 本组制作的坦克大战为入门版游戏,网上资源比较丰富,书籍图书馆也有收藏,除需花费一定时间外,无需其他经济支出,故较容易实现3概要设计坦克大战入门板本程序是一个有趣且富有挑战性的2D单人游戏。本游戏为彩色界面,有主菜单,选择菜单等功能,其中主菜单包含有Start,Map,Help,Abort,Exit五个选项。游戏过程中,玩家操纵己方坦克摧毁敌方坦克

7、保卫己方家园以获得分数奖励。坦克大战游戏逻辑实现界面显示游戏对象图形绘制开火逻辑坦克绘制玩家坦克主界面子弹绘制碰撞检测敌人坦克关于界面帮助界面道具绘制背景绘制升级游戏道具设置界面4详细设计4.1项目与类的结构图barrierTankwarmapediterlightButton4.2 各类实现的功能概要 4.2.1 barrier包Barrierlei类:描述素材的基本属性及排布方法EnemyBorn类:描述敌人出生点Gold类:描述金块障碍物Home类:描述基地Iron类:描述铁块障碍物SelfBorn类:描述自身出生点Wall类:描述砖块障碍物4.2.2 lightButton包Light

8、Button类:实现初始界面的按钮动态点击效果,按下有下凹质感且亮度变化4.2.3 Tankwar包Help类:主界面help按钮呼出文本显示框Boom类:爆炸判定,效果显示Item类:随机掉落物品奖励Main类:游戏主界面Missle类:炮弹运行PanelShow类:右边统计栏信息Tank类:坦克基本属性,行动方式Tankwar类:游戏运行主界面4.2.4 mapediter包 Mapediter类:查看地图,编辑新地图并检验地图是否合乎规则,保存地图。4.3 主要类的的UML图及主要成员变量和函数说明4.3.1 Barrier类BarrierSIZE:intx:inty:inthp:int

9、face:ImageIconBarrier(int,int)draw(Graphics):voidgetFace():ImagegetHp():intgetX():intgetY():intsetFace(Image):voidsetHp(int):voidsetX(int):voidsetY(int):void主要成员变量含义SIZE:int障碍物方块大小 x:int障碍物x坐标 y:int障碍物y坐标hp:int障碍物的血量face:Image障碍物贴图主要成员函数含义Barrier(int,int)障碍物的坐标draw(Graphics):void素材绘制 getFace():Image

10、返回贴图getHp():int返回血量值getX():int返回x坐标getY():int返回y坐标setFace(Image):void插入贴图setHp(int):void赋予血量值setX(int):void赋予x坐标setY(int):void赋予y坐标4.3.2 LightButton类LightButtonshadowOffsetX:floatshadowOffsetY:floatshadowColor:colorshadowDirection:intnormalButton:ImagenormalButtonPressed:ImagebuttonHighlight:Imagesh

11、adowDistance:intsourceInsets:InsetsbuttonDimension:DimensionbuttonForeground:colorbuttonForeground:fontLightButton(string)LightButton(int,int,int,int,string)LightButton(Action)LightButton()loadImage(String):ImagecomputeShadow():voidgetImage(boolean):ImagepaintComponent(Graphics):voidtileStretchPaint

12、(Graphics, JComponent, BufferedImage, Insets):void主要成员变量含义shadowOffsetX : float阴影向x偏移量shadowOffsetY : float阴影向y偏移量shadowColor : Color按钮背景颜色shadowDirection : int投影方向normalButton : Image原始图片normalButtonPressed : Image过度图片buttonHighlight : Image修改后图片shadowDistance : int阴影距离sourceInsets : Insets透明度butto

13、nDimension : Dimension高度及宽度buttonForeground : Color按钮文字颜色buttonFont : Font字体主要成员函数含义LightButton(String)构建按钮LightButton(int, int, int, int, String)按钮参数设置LightButton(Action)定义变化LightButton()加载动态效果tileStretchPaint(Graphics, JComponent, BufferedImage, Insets):void绘制动态效果4.3.3 Mapediter类2. dit 类MapEditCOL

14、S:intROWS : intf : JDialogp : JPanelbut : ButtonXimage : Imagepp : JPanelbutLoad : JButtonbutSave : JButtonbutExit : JButtonfs : FileNameExtensionFilterfc : JFileChooserm : MainMapEdit(Main) actionPerformed(ActionEvent):void主要成员变量含义COLS : int地图行数ROWS : int地图列数f : JDialog对话框p : JPanel面板容器 地图载体but : B

15、uttonX更改处的方块image : Image素材图片pp : JPanel面板容器 对话框载体butLoad : JButton原地图按钮butSave : JButton保存按钮butExit : JButton退出按钮m : Main新地图主要成员函数含义MapEdit(Main)主函数 构建地图actionPerformed(ActionEvent):void检验新地图是否合乎规则,否则输出提示框4.3.4 Main类Mainf : JFramep : PanelXbutStart : LightButtonbutEdit : LightButtonbutHelp : LightB

16、uttonbutAbort : LightButtonbutExit : LightButtonwidth : intheight : intset : JDialoghelp : Helpabout : Abortmap : Stringmax : intstyle : intMain()main(String):voidover():voidactionPerformed(ActionEvent):voiddialog():voidsetF(JFrame):voidgetF():JFrame主要成员变量含义f : JFrame开始界面框架butStart : LightButton开始游戏

17、按钮butEdit : LightButton编辑地图按钮butHelp : LightButton帮助栏按钮butAbort : LightButton关于信息栏按钮butExit : LightButton退出按钮width : int界面长度height : int界面宽度help : HelpHelp信息栏主要成员函数含义Main()构造开始界面主方法main(String):void构造界面over():void界面渐大效果actionPerformed(ActionEvent):void鼠标监听 确定程序走向dialog():void构造游戏开始前设置界面4.3.5 Boom类Bo

18、omy : intx : intcount : intboom : ImageIconlive : booleanBoom(int, int)drawBoom(Graphics):voidrun():voidisLive():boolean主要成员变量含义y : int爆炸位置横坐标x : int爆炸位置纵坐标count : int爆炸效果演变计数boom : ImageIcon图片live : boolean爆炸是否进行主要成员函数含义Boom(int, int)位置drawBoom(Graphics):void绘制爆炸效果run():void控制变化过程向后进行isLive():void判

19、定是否爆炸4.3.6 Item类Itemr : Randomx : inty : intstyle : intface : Imagelive : booleanflash : booleantanks : ArrayListbooms : ArrayListhome : Homeirons : ArrayListItem(ArrayList, ArrayList, ArrayList, Home)draw(Graphics)run():voiduse(Tank):voidhomeP(int, int):voidsetLive(boolean):voidisLive():boolean主要成员

20、变量含义r : Random随机生成数x : int横坐标y : int纵坐标face : Image游戏素材图片live : boolean是否存在tanks : ArrayList坦克booms : ArrayList爆炸home : Home基地irons : ArrayList添加素材图片主要成员函数含义Item(ArrayList, ArrayList, ArrayList, Home)添加素材draw(Graphics):void绘制效果run():void判断是否被坦克吃掉use(Tank):void为坦克添加效果homeP(int, int):void4.3.7 Missle类

21、Misslex : inty : intspeed : intdir : Directionlive : booleanSIZE : intself : booleanallTanks : ArrayListbooms : ArrayListwalls : ArrayListirons : ArrayListgolds : ArrayListhome : Homepower : intMissle(int, int, Tank, ArrayList, ArrayList, ArrayList, ArrayList, Home, ArrayList, ArrayList)run():voidse

22、tLive(boolean):voidisLive():booleandrawMissle(Graphics):voidgetX():intgetY():int主要成员变量含义x : int横坐标y : int纵坐标speed : int移动速度dir : Direction移动方向live : boolean是否存活SIZE : int大小allTanks : ArrayList坦克booms : ArrayList爆炸walls : ArrayList砖块障碍物irons : ArrayList铁块障碍物golds : ArrayList金块障碍物home : Home基地power :

23、int攻击力主要成员函数含义Missle(int, int, Tank, ArrayList, ArrayList, ArrayList, ArrayList, ArrayList, ArrayList, ArrayList)添加元素run():void运动方法setLive(boolean):void炮弹出现isLive():boolean是否存活drawMissle(Graphics):void绘制炮弹4.3.8 PanelShow类PanelShowscore : intselfCount : intenemyCount : intenemy : ImageIconself : Imag

24、eIconbg : ImageIconsetScore(int):voidsetSelfCount(int):voidsetEnemyCount(int):voidpaintComponent(Graphics):void主要成员变量含义score : int分数selfCount : int己方坦克剩余数量enemyCount : int敌方坦克剩余数量enemy : ImageIcon敌方坦克贴图self : ImageIcon己方坦克贴图bg : ImageIcon背景贴图主要成员函数含义setScore(int):void计算分数setSelfCount(int):void计算己方剩余

25、坦克setEnemyCount(int):void计算敌方剩余坦克paintComponent(Graphics):void显示界面4.3.9 Tank类TankSIZE : inthpMax : intx : inty : inthp : intlevel : intstyle : intpower : intspeed : intdir : DirectionmyPlane_U : ImageIconmyPlane_R : ImageIconmyPlane_D : ImageIconmyPlane_L : ImageIconup : booleanleft : booleanright :

26、 booleandown : booleanself : booleanlive : booleanallTank : ArrayListwalls : ArrayListirons : ArrayListgolds : ArrayListhome : Homemissles : ArrayListnoFire : longbooms : ArrayListfireTime : longisProtect : booleangetDir()DirectionTank(int, int, boolean, ArrayList, ArrayList, ArrayList, ArrayList, A

27、rrayList, Home, ArrayList, int)re():voiddrawTank(Graphics):voidmove():voidkeyPress(KeyEvent):voidkeyReleased(KeyEvent):voidnoMove(int, int):booleanfire():voidprotect():voidsetUp(boolean):voidsetLeft(boolean):voidsetRight(boolean):voidsetDown(boolean):voidsetDir(Direction):voidgetX():intgetY():intisS

28、elf():booleansetHp(int):voidgetHp():intsetLive(boolean):voidisLive():booleansetX(int):voidsetY(int):voidsetNoFire(long):voidgetNoFire():longgetPower():intgetLevel():intsetLevel(int):voidsetProtect(boolean):voidisProtect():boolean主要成员变量含义SIZE : int大小hpMax : int生命值x : int横坐标y : int纵坐标hp : int当前生命level

29、 : int等级style : int坦克种类power : int火力speed : int攻击速度dir : Direction方向myPlane_U : ImageIcon上行坦克贴图myPlane_R : ImageIcon右行坦克贴图myPlane_D : ImageIcon下行坦克贴图myPlane_L : ImageIcon左行坦克贴图live : boolean是否存活allTank : ArrayList所有坦克walls : ArrayList砖块障碍物irons : ArrayList铁块障碍物golds : ArrayList金块障碍物home : Home基地miss

30、les : ArrayList炮弹booms : ArrayList爆炸fireTime : long攻击速度isProtect : boolean是否无敌主要成员函数含义getDir()获得行进方向Tank(int, int, boolean, ArrayList, ArrayList, ArrayList, ArrayList, ArrayList, ArrayList , ArrayList, int)添加对象re():void重新开始游戏drawTank(Graphics):void绘制坦克move():void坦克移动keyPress(KeyEvent):void按键按下keyRel

31、eased(KeyEvent):void按键复位noMove(int, int):boolean是否fire():void开火protect():void无敌道具生效setUp(boolean):void上行setLeft(boolean):void左行setRight(boolean):void右行setDown(boolean):void上行setDir(Direction):void坦克的移动方向设置getX():int得到坦克的游戏坐标XgetY():int得到坦克的游戏坐标yisSelf():boolean在对象集合中判断是否是玩家setHp(int):void赋予hp值getHp(

32、):int获得hp值setLive(boolean):void设置坦克的生命值isLive():boolean判断坦克是否存在setX(int):void设置坦克的游戏坐标XsetY(int):void设置坦克的游戏坐标YsetNoFire(long):void设置坦克开火的冷却时间getNoFire():long得到坦克开火的冷却时间getPower():int得到火力数值getLevel():int得到等级数值setLevel(int):void设置坦克的等级setProtect(boolean):void坦克获得无敌状态isProtect():boolean判断坦克是否处于无敌状态4.3

33、.10 TankWar类TankWarTIMEOUT : booleanf : JFramegamePanel : JPanelmessgePanel : PanelShowp : myPanelmyTank : TankAREA_WIDTH : intAREA_HEIGHT : intmissles : ArrayListallTanks : ArrayListbooms : ArrayListwalls : ArrayListirons : ArrayListgolds : ArrayListitems : ArrayListenemyBorns : ArrayListselfBorn :

34、 SelfBornhome : HomeenemyTank : Tankr : RandombackGround : ImageIconmap : StringtankMax : intover : booleanselfMax : intwin : booleanflash : booleantw : TankWarSCORE : intmainF : JFramestyle : intTankWar(String, int, JFrame, int)init():voidkeyTyped(KeyEvent):voidkeyPressed(KeyEvent):voidkeyReleased(

35、KeyEvent):voidaI(Tank):voidinitMap(File):voidaddTank():voidaddMyTankLives():voidover():voiddrawOver(Graphics):void主要成员变量含义TIMEOUT : boolean超时检测f : JFrame游戏主界面gamePanel : JPanel游戏界面messgePanel : PanelShow右边信息栏界面myTank : Tank己方坦克AREA_WIDTH : int场景宽度AREA_HEIGHT : int场景高度missles : ArrayList炮弹allTanks :

36、ArrayList所有坦克booms : ArrayList爆炸效果walls : ArrayList砖块障碍物irons : ArrayList铁块障碍物golds : ArrayList金块障碍物items : ArrayList随机补给enemyBorns:ArrayList敌方出生点selfBorn : SelfBorn自身出生点home : Home基地enemyTank : Tank敌方坦克r : Random随机数控制敌方坦克行动backGround : ImageIcon背景图片map : String地图tankMax : int敌方数量over : boolean游戏是否结

37、束selfMax : int自身生命数量win : boolean是否胜利SCORE : int分数mainF : JFrame游戏界面主要成员函数含义TankWar(String, int, JFrame, int)构成游戏运行界面init():void初始化keyTyped(KeyEvent):void键盘输入keyPressed(KeyEvent):void键盘按下keyReleased(KeyEvent):void键盘复位aI(Tank):void敌方坦克行动模式 initMap(File):void地图读取 addTank():void增加场上坦克数量addMyTankLives()

38、:void加血设定over():void游戏结束判定drawOver(Graphics):void游戏结束画面5运行结果主界面开始运行结果Start复选界面地图制作界面Help信息栏界面:Abort信息栏界面:游戏进行界面:游戏结束界面6总结在开发的过程中,本小组遇到了不少问题,各种开发包的缺少,严谨的各种参数合理的设置,解决开发中遇到的bug等等,但是经过上网搜索和自己尝试,终于解决了问题。在这个过程中,不仅积累了知识,学会了团结合作,更重要的是学会了寻找信息的方法,对于日后的学习大有帮助。由于能力不足,尚有很多设想未能实现,比如过关的游戏模式,boss的加入等等,我们将继续深入学习java

39、,不断完善游戏的模式。7参考文献1.Java 2 实用教程 清华大学出版社 20112.Java游戏编程 科学出版社 20043.Java游戏编程原理与实践教程 人民邮电出版社 20134.韩顺平_循序渐进学java_从入门到精通_课件_笔记_坦克大战全过程 5.参考网站: 6图片出自:8附录1. 小组分工.docx2. 代码文件:tankedanzhan1srcbarrierBarrier.javatankedanzhan1srcbarrierEnemyBorn.javatankedanzhan1srcbarrierGold.javatankedanzhan1srcbarrierHome.j

40、avatankedanzhan1srcbarrierIron.javatankedanzhan1srcbarrierSelfBorn.javatankedanzhan1srcbarrierWall.javatankedanzhan1srclightButtonLightButton.javatankedanzhan1srcmapediterMapEdit.javatankedanzhan1srctankwarAbort.javatankedanzhan1srctankwarBoom.javatankedanzhan1srctankwarHelp.javatankedanzhan1srctankwarItem.javatankedanzhan1srctankwarMain.javatankedanzhan1srctankwarMissle.javatankedanzhan1srctankwarPanelShow.javatankedanzhan1srctankwarPanelShow.javatankedanzhan1srctankwarTank.javatankedanzhan1srctankwarTankWar.java【精品文档】第 36 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁