1、 目 录 摘 要 . 错误 !未定义书签。 ABSTRACT . 错误 !未定义书签。 错误 !未定义书签。 第一章 绪论 . 1 1.1 课题研究的背景 . 1 1.2 课题 研究的任 务 . 1 第二章 系统分析 . 2 2.1 课题的可行性分析 . 2 2.2 需求分析 . 2 第三章 系统总体设计 . 3 3.1 游戏总体流程设计 . 3 3.2 游戏界面设计 . 4 第四章 游戏详细设计 . 6 4.1 各个类的实现 . 6 4.2 程序的详细设计 . 7 第五章 测试 . 9 5.1 软件测试说明 . 9 5.1.1 软件测试的目标 . 9 5.1.2 软件测试的原则 . 9 5.
2、2 测试计划 . 10 5.2.1 进行通过测试 . 10 5.2.2 进行有效类测试 . 10 5.3 测试用例 . 10 总 结 . 10 参考文献 . 11 致谢 . 12 附录 一 坦克大战中的类 . 15 附录 二 坦克大战程序 . 31 第一章 绪论 1.1 课题研究的背景 如今我们的生活节奏越来越快,每个人的生活压力也在不断变大,长期紧绷着神经容易产生心理和生理上的双重伤害,人们需要在工作和学习之外放松自己,玩玩游戏正是放松自己的方式之一。 坦克大战,一个众所周知的小游戏,曾经在红白机时代风靡一时。其界面简单,耐玩,关卡多,可玩性高,没有局限的年龄层。 Java 是现在全球最时髦
3、的开发工具之一,它拥有庞大且完善的类库,内置了其他语言需要靠库甚至是操作系统才能支持的功能, 拥有一个虚拟机,总之, Java的出现,确实给整个程序界带来了巨大的冲击,也许现在还无法准确评估 Java 为整个 IT 业带来的影响,但是有一点毋庸置疑 Java 将不可避免的影响一带程序员。 使用 Java 作为开发工具,来做坦克大战这个小游戏,是一种很理性的选择。Java 游戏可以在本地桌面系统下运行,也可以在 Web 浏览器下运行。 我在大学四年中学到了很多计算机的知识, JAVA 语言,软件工程,数据结构,软件工程等课程。如今我将用我所学的知识来完成一个坦克大战游戏,来锻炼自己的动手能力,独
4、立作出一个小程序。 1.2 课题研究的任务 本文中所做的主要工作如下: ( 1) 介绍了制作坦克大战游戏的意义和目的。 ( 2) 设计坦克大战游戏各个类,实现各类效果和目标。 ( 3) 分析并解决游戏中的若干技术问题。 ( 4) 完成坦克大战游戏,进行测试并分析结果 . 2 第二章 系统分析 2.1 课题的可行性分析 1、课题要求 ( 1)与实践活动和相关的文件和资料由教师提供。 ( 2)本课题要求学生有熟练的 Java 开发能力,有较强的自学能力。 ( 3)具体问题再做详细调查研究并与指导老师面谈。 2、 可行性分析 技术可行性:游戏对机器没有多大要求,现在无论什么电脑,只要能安装J2SDK
5、,就能在电脑上开发这款游戏。制作出来的游戏可以在本地桌面运行,也可在 WEB 上运行,现在 JAVA 语言非常成熟,完全能够完成这个游戏。 经济可行性:开发这个游戏除了耗费自己的时间和精力以外,不需要其他的资金问题,完成后放到网上开放下载,无需任何费用,有兴趣的人可以自己下载来玩。 2.2 需求分析 在游戏中需要实现的功能: ( 1)能够通过键盘自由控制坦克移动和发射子弹; ( 2)敌方坦克能够随机移动和随机发射子弹; ( 3)子弹和不同阵营坦克碰撞后会产生爆炸; ( 4)消灭敌方坦克后会有个计分板记录玩家得分 ( 5)游戏进行到一半时可以暂停退出,下次打开游戏时选继续游戏可以继续之前的游戏。
6、 3 第三章 系统总体设计 3.1 游戏总体流程设计 开始新游戏时,先进行初始化,然后调用敌方坦克类和我方坦克类,实现键盘监听功能,战场显示所有坦克的移动,发射子弹。判断子弹和敌方坦克的碰撞,调用爆炸类,调用记录类,修改玩家总得分。 图 3.1 总体流程图 4 3.2 游戏界面设计 ( 1)开始菜单 界面左上角设置个游戏菜单,里面含有“开始新游戏 ” 、“继续游戏 ” 、“存盘退出 ” 、“退出游戏”这几个下拉选项,玩家可通过这些选项控制游戏的开始,存盘,与结束。 图 3.2 开始菜单 ( 2)战场 窗口中间是坦克大战的战场,里面显示敌我双方坦克,以及各自发出的子弹,坦克的一切行为都会显示在战
7、场上。 图 3.3 战场 ( 3)坦克剩余数 战场正下方显示我方坦克剩余生命和敌方坦克剩余数量。 图 3.4 坦克剩余数 5 ( 4)玩家总成绩 战场右边显示玩家击毁敌方坦克所得到的的总成绩。 图 3.5 玩家总成绩 6 第四章 游戏详细设计 4.1 各个类的设计 (1) 坦克类是系统中最主要的一个类,坦克的属性:速度( X 轴和 Y 轴速度),坦克的大小,坦克所在坐标,坦克的方向,坦克存活与否。这些属性都有一个初始化值,游戏一开始就可以运行。 设计过程中,坦克出现的位置是由坦克的坐标而定。玩家的位置由键盘监听方向,按照指定方向以 一定的速度前进 这个速度是全局静态变量,当没有键盘控制的时候,
8、坦克就会保持静止。敌方的坦克是用随机数来控制方向和路径的。通过 TouchotherEnemy()来判断是否碰撞到别的敌方坦克。 我方坦克的方向和子弹发射都是由键盘来控制,所以在坦克类里用keypressed()方法来接受键盘的按键监听,接受到相应的信息后,例如接到 X,则表示发射子弹,此时就要调用坦克类里的 fire()方法。接受到方向键,则会对坦克坐标做出相应的变化。 图 3.1 坦克类 图 3.2 红色我方坦克 黄色敌方坦克 ( 2) 子弹类需要依附坦克类,每个坦克都可以发射子弹,子弹的方向和速度都在子弹类里。当子弹碰到敌方坦克或跑出战场后,子弹线程便会结束。 7 图 3.3 子弹类 图
9、 3.4 红色我方子弹 黄色敌方子弹 ( 3)爆炸类是取决子弹类。每当子弹碰到敌方坦克时,子弹线程结束,并调用爆炸类, 爆炸类会读取坦克即时的坐标,并用连续的三张图片显示出爆炸效果。 图 3.5 爆炸类 4.2 程序的其他设计 ( 1)图形用户界面要用抽象窗口工具 AWT 和 Swing 来实现,在选择开始新游戏前,实现屏幕中央关数的闪屏效果。 class StartPanel extends JPanel implements Runnable int time=0; public void paint(Graphics g) super.paint(g); g.fillRect(0, 0,
10、 900, 600); if(time%2=0) g.setColor(Color.yellow); 8 g.setFont(new Font(“宋体 “,Font.BOLD,30); g.drawString(“stage:1“, 400, 250); Override public void run() / TODO Auto-generated method stub while(true) try Thread.sleep(100); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace(); time+; /重画 this.repaint(); ( 2)游戏开始时播放经典坦克大战的游戏音。 AePlayWave apw=new AePlayWave(“111.wav“); apw.start();