《java程序设计课程设计-坦克大战游戏设计》由会员分享,可在线阅读,更多相关《java程序设计课程设计-坦克大战游戏设计(28页珍藏版)》请在金锄头文库上搜索。
1、 辽 宁 工 业 大 学 Java 程序设计 课程设计(论文)题目: 坦克大战游戏设计院 (系): 管理学院 专业班级: 电子商务 091 学 号: 学生姓名: 指导教师: 教师职称: 讲师 起止时间: 2011.12.26-2012.01.06 课程设计(论文)任务及评语院(系):管理学院 教研室:电子商务教研室学 号 学生姓名 任宝琪 专业班级 电子商务 091课程设计(论文)题目坦克大战游戏设计课程设计(论文)任务1掌握 Java 编程、面向对象的基础知识。2较熟练地编写 Java 应用程序 Application。3做好充分的准备之后,按照面向对象的设计思想,根据坦克大战游戏的实际需求
2、设计相关的类与接口,实现多态、重载等开发工作。4按时、按要求完成课程设计说明书的编写,字数为 4000 字以上。5按时上交课程设计说明书打印稿、电子稿和相应的应用系统。6依据你的课程设计内容,准备课程设计答辩。指导教师评语及成绩成绩: 指导教师签字: 2012 年 1 月 7 日辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)目 录第 1 章 课程设计的目的与要求 .11.1 课程设计目的 .11.2 课程设计的实验环境 .11.3 课程设计的预备知识 .11.4 课程设计主要内容 .1第 2 章 课程设计内容 .22.1 需求分析 .22.2 程序具体 设计 .22.3 类的介绍
3、 .62.3.1 Direction 类 .62.3.2 River 类 .62.3.3 Home 类 .62.3.4 Tree 类 .72.3.5 Bullets 类 .72.3.6 GetBlood 类 .82.3.7 CommonWall 类 .92.3.8 MetalWall 类 .92.3.9 BombTank 类 .102.3.10 Tank 类 .102.3.11 TankClient 类 .122.3.12 主要方法和变量 .122.4 程序流程逻辑图 .13第 3 章 系统的功能测试与调整 .143.1 菜单项测试 .143.2 游戏信息测试 .163.3 快捷键的测试 .1
4、93.4 游戏级别的设置 .22参考文献 .24辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)1第 1 章 课程设计的目的与要求1.1 课程设计目的JAVA 面性对象程序设计是电子商务专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完JAVA 面性对象程序设计课程后,进行的一次全面的综合训练,JAVA 程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。1.2 课程设计的实验环境硬件要求能运行 Windows 9
5、.X 操作系统的微机系统。JAVA 程序设计语言及相应的集成开发环境,J2SDK 和 ECLIPSE 开发工具。1.3 课程设计的预备知识熟悉 JAVA 语言以及 ECLIPSE 开发工具。1.4 课程设计主要内容坦克大战游戏是在 Eclipse 环境下编程的游戏,其中包括对主战坦克的编写、坦克的初始位置的编写、坦克的移动方向的编写、坦克的速度的编写、坦克的子弹速度的编写、敌军的子弹速度的编写、设置游戏难度的编写、子弹的编写、敌军坦克的编写、构造函数的编写等等。通过上下左右键进行对坦克的移动,通过空格发射子弹,其他坦克可以随机移动。构造主窗口中所需要的类,并将坦克加到窗口中,实现坦克的四个方向
6、的移动并创建炮弹类,并让屏幕中的坦克能发射炮弹,让坦克可以朝对方开火,并将对方击毙。辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)2第 2 章 课程设计内容2.1 需求分析设计一个图形用户界面,将所有游戏的元素都能在此用于界面上表现出来,界面能够接受用户的操作,具有人机交互功能。用户可以选择重新开始游戏,退出游戏,暂停游戏和查找游戏帮助。界面中包含坦克,树,河流,阻挡墙和游戏用户所要保护的“家” 。坦克:坦克分为两种,敌方坦克和用户控制的坦克。用户方和敌方坦克均可以发射子弹,可以改变路径的行走,且在行走过程中遇到墙等阻碍物和游戏边界时要改变方向,而不能一直顶着障碍物不放。坦克之间
7、不能穿越,碰撞到后自动调换方向。树:界面中要包括树林,作为遮掩物体和修饰物体,以便增加游戏的元素,使得游戏更加贴切人性化。树的数目不限,以游戏整体界面清晰美观来决定数目。河流:界面中要包括河流,河流作用与树林相同,同样河流的数目不限,以游戏界面整体美观度来决定数目。墙:墙体分为两种,普通的墙和铁墙,普通的墙在受到子弹袭击时会损坏,而铁墙可以阻碍子弹的穿越。两方的坦克均不能穿越两种墙体,但都可以摧毁普通墙体。普通墙体的数目配合其他元素合理安排,铁墙则不宜过多,不然游戏难度太低甚至因为坦克不能穿越铁墙而使得游戏无法进行下去。“家”:用户方除了有一辆自己的坦克外还有一个要保护的家,家由普通墙体包围,
8、家受到子弹攻击后游戏立即结束,用户方则输了本局游戏。子弹:子弹可以由敌方和用户方发射,且发射出去的子弹可以直线移动,直到碰到障碍物就消失,子弹可以穿越树林和河流。敌方坦克受到一颗子弹攻击会爆炸从而导致死亡,死亡后坦克消失。用户方受到子弹攻击后会减少寿命,且受到四次攻击则死亡,此时如还有敌方坦克存在,则用户方输掉本次游戏。爆炸:当子弹射击到坦克身上时,要产生爆炸效果。方向:坦克和子弹都有方向,可以选择上下左右四个方向,且子弹的方向从属于坦克的方向。2.2 程序具体设计以下的论述均根据上面需求分析的顺序来安排:辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)3图形用户界面需要用到抽象窗
9、口工具即 AWT 和 Swing 来设计实现,由于游戏需要有功能按键来控制游戏的重新开始,退出,暂停,帮助等,所以在实现过程中,设计菜单项。坦克,河流,树,家,墙等都是调用各自类里面的 draw 函数来画出来,最后 new 一个图形面板出来,把所有的元素都 add 进面板就可以了。界面的构造在程序中由TankClient 类的构造方法来完成,即没构造一个用户类都会产生这样一个包含各种游戏元素在内的界面。由于画面是静止的,而我们游戏的画面要求是动态的,游戏中的坦克和子弹都是在不断的动,可穿透的普通墙体也在“ 动” ,所以对于画面,必须要不断的更新,重画才能产生动态的效果。界面中的元素都是在构造界
10、面的时候用界面实例对象的 add 方法加入进去的,且“动”的元素要不断更新。坦克主要由 Tank 类来实现。坦克的属性:速度(有 X 轴和 Y 轴的速度之分) ,坦克大小,坦克所在新的位置(X 坐标和 Y 坐标) ,坦克是否还活着,行动方向等。所有的这些属性都有一个初始化值,从而在游戏一开始就可以运行。在设计过程中,坦克出现的位置由坐标而定。用户之后的位置由键盘监听方向,按指定方向以恒定的速度前进此速度为全局静态变量,当没有接受到键盘的控制时,则保持静止。敌方的坦克则是根据随机数来控制随机的方向和路径的,当敌方坦克撞到阻碍物时,会转回到前一步的位置,从而解决了坦克撞到阻碍物不回头的问题,这个功
11、能由 Tank 类里的 changToOldDir()方法实现。坦克的方向和子弹发射以及游戏的重新开始都是由键盘来控制的,所以在 Tank 类里面必须要实现这些功能。Tank 类的 keyPressed()方法用于接受键盘的按键监听,接收到相应的键盘信息后,如接收到 F,则表示发射子弹,所以此时要调用 Tank 类里的 fire()方法,fire()方法不带传递参数,因为子弹的方向总是从属于坦克的方向和位置。 由于坦克在碰到墙,界面边界和“家” 等阻碍物时要改变方向,所以在 Tank 里面必须对于每一种阻碍物要设计一个方法来作为应对策略,当然解决方法是把下一步的位置调整到上一步的位置。用户方 Tank 还可以吃红心来增加自己的生命值,得到一个红心,增加 100 生命值。所以在程序中坦克必