JAVA关于坦克大战的课程设计报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主函数,启动整个程序
用户类主要是综合调用各个类来协作完成游戏的设计。
2.3 游戏主窗口
游戏主窗口是人机交互的窗口,对玩家而言,他们只和游戏主窗口打交道, 并不关心游戏内部是如何实现的,所以游戏主窗口部分最重要的便是游戏数据 的输入、输出。
类里面惯例有个构造方法,用来默认传递位置和方向,当然这里用到了同 构,另外一个构造函数来取得子弹的状态和界面。darw()方法和 move()方法来 控制画子弹和移动子弹。
接下来就是要考虑到子弹打到个=各元素上的反应,敌方的子弹打到敌方
6
时,不会杀死自己人,所以这里只要直接 return true 就可以了,不用移除子弹 碰到的坦克,更不用调用爆炸来显示爆炸效果。
五.设计体会与小结………………………………………………………… 六.附录………………………………………………………………………
1Hale Waihona Puke Baidu
一.程设计的目的与要求 1.1 课程设计目的
《JAVA 面性对象程序设计》是电子商务专业的必修专业基础课程,其实践 性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设 计专题实际是计算机相关专业学生学习完《JAVA 面性对象程序设计》课程后, 进行的一次全面的综合训练,JAVA 程序设计的设计目的是加深对理论教学内容 的理解和掌握,使学生综合运用所学知识,利用软件工程为基础进行软件开发、 并在实践应用方面打下一定基础。
在设计过程中,坦克出现的位置由坐标而定。用户之后的位置由键盘监听 方向,按指定方向以恒定的速度前进——此速度为全局静态变量,当没有接受 到键盘的控制时,则保持静止。敌方的坦克则是根据随机数来控制随机的方向 和路径的,当敌方坦克撞到阻碍物时,会转回到前一步的位置,从而解决了坦 克撞到阻碍物不回头的问题,这个功能由 Tank 类里的 changToOldDir()方法 实现。
子弹打到其他坦克上时用 hitTank(Tank t) 方法,子弹打到墙上时 hitWall(CommonWall w)方法,打到金属墙上 hitWall(MetalWall w),打到家 hitHome(),当然在这些方法里,都要作相应的操作来表示接受到子弹的后果,: 还有,当子弹射击到对方(用户方对敌方)时,当敌方射击到用户方,用户方 要减少生命值,没接受一枪,就执行
3
2.3 工作流程图
4
三.课程设计内容 3.1 程序具体设计
图形用户界面需要用到抽象窗口工具即 AWT 和 Swing 来设计实现,由于 游戏需要有功能按键来控制游戏的重新开始,退出,暂停,帮助等,所以在实 现过程中,设计菜单项。
5
坦克都是调用各自类里面的 draw 函数来画出来,最后 new 一个图形面板 出来,把所有的元素都 add 进面板就可以了。界面的构造在程序中由 MyPanel 类的构造方法来完成,即没构造一个用户类都会产生这样一个包含各种游戏元 素在内的界面。由于画面是静止的,而我们游戏的画面要求是动态的,游戏中 的坦克和子弹都是在不断的动,可穿透的普通墙体也在“动”,所以对于画面, 必须要不断的更新,重画才能产生动态的效果。
1.2 课程设计的实验环境
硬件要求能运行 Windows 9.X 操作系统的微机系统。JAVA 程序设计语言及 相应的集成开发环境,J2SDK 和 ECLIPSE 开发工具。
1.3 课程设计的预备知识
熟悉 JAVA 语言以及 ECLIPSE 开发工具。
1.4 课程设计主要内容
坦克大战游戏是在 Eclipse 环境下编程的游戏,其中包括对主战坦克的编 写、坦克的初始位置的编写、坦克的移动方向的编写、坦克的速度的编写、 坦克的子弹速度的编写、敌军的子弹速度的编写、设置游戏难度的编写、 子弹的编写、敌军坦克的编写、构造函数的编写等等。游戏主要实现的功 能有: (1).坦克可以上下左右移动 (2).坦克可以发子弹(可以连发) (3).我的坦克击中敌人坦克时,敌人就消失(显示爆炸效果) (4).我被击中后显示爆炸效果 (5).防止敌人坦克重叠运动 (6).玩游戏时可以暂停和继续 (7).记录玩家的成绩
2.2 需求分析
设计一个图形用户界面,将所有游戏的元素都能在此用于界面上表现出来, 界面能够接受用户的操作,具有人机交互功能。用户可以选择重新开始游戏, 退出游戏,暂停游戏游戏帮助。
界面中包含我方坦克,和敌人坦克以及坦克发出的子弹和爆炸后的效果。 坦克:坦克分为两种,敌方坦克和用户控制的坦克。用户方和敌方坦克均 可以发射子弹,可以改变路径的行走,且在行走过程中遇到墙等阻碍物和游戏 边界时要改变方向,而不能一直顶着障碍物不放。坦克之间不能穿越,碰撞到 后自动调换方向。 墙:游戏中的边界王家的坦克和敌人的坦克都不能越过,坦克的子弹也不 能穿过。 子弹:子弹可以由敌方和用户方发射,且发射出去的子弹可以直线移动, 直到碰到障碍物就消失,子弹可以穿越树林和河流。敌方坦克受到一颗子弹攻 击会爆炸从而导致死亡,死亡后坦克消失。用户方受到子弹攻击后会减少寿命, 且受到四次攻击则死亡,此时如还有敌方坦克存在,则用户方输掉本次游戏。 爆炸:当子弹射击到坦克身上时,要产生爆炸效果。 方向:坦克和子弹都有方向,可以选择上下左右四个方向,且子弹的方向 从属于坦克的方向。
参考文献、资料索引
序号
文献、资料名称
编著者
出版单位
(1)Java 语言实用教程(第 2 版)
丁振凡
北京邮电大学出 版社.
(2)Java 语言实用教程实验指导(第 2 版) 丁振凡 北京邮电出版社
2
目录
一.课程设计的目的与要求 1.1 课程设计目的………………………………………………………………. 1.2 课程设计的实验环境……………………………………………………… 1.3 课程设计的预备知识……………………………………………………… 1.4 课程设计主要内容…………………………………………………………
由于坦克在碰到墙,界面边界和“家”等阻碍物时要改变方向,所以在 Tank 里面必须对于每一种阻碍物要设计一个方法来作为应对策略,当然解决方法是 把下一步的位置调整到上一步的位置。
子弹的属性:子弹前进的 X 轴和 Y 轴的速度——初始速度都为 10,子弹 的长度和宽度——初始的长宽都为 10,子弹的位置,子弹的方向,子弹是否 live 等。由于不同方向的子弹其实是图片,所以这里要考虑不同图片的选择用对应 的方向来指定,所以要建立 Map 键值对,用 String 属性的方向来指定不同的图 片。如:imgs.put(“L”, bulletImages[0]);
坦克的方向和子弹发射以及游戏的重新开始都是由键盘来控制的,所以在 Tank 类里面必须要实现这些功能。
Tank 类的 keyPressed()方法用于接受键盘的按键监听,接收到相应的键盘信 息后,如接收到 F,则表示发射子弹,所以此时要调用 Tank 类里的 fire()方法, fire()方法不带传递参数,因为子弹的方向总是从属于坦克的方向和位置。
菜单功能包括游戏的重新开始,暂停,退出等。这些功能的用户界面放在了 MyPanel 的构造方法里,用到的是面板类和相应的监听功能,实现出来很简单。
3.2 主要方法和变量
属性 int Fram_width
int Fram_length
游戏用户界面的全局静态变量 宽度,初始化为600 游戏用户界面的全局静态变量
2
二.系统分析 2.1 可行性分析
2.1.1 技术可行性 软件使用 swing、GUI、Socket、面向对象设计等技术实现,这些技术
均已是非常成熟的技术,之前已有相当多使用这些技术的成功案例,故现 使用这些技术是可行的。 2.1.2 经济可行性
本软件为免费软件,将免费提供软件的下载、运行和维护服务,软件 暂无收入,待公布之后随着使用者越来越多,将添加相应的广告、服务, 从而增加收入,若使用者寥寥无几,将再次分析是否重新策划软件或者放 弃开发,以减少损失。
本课程设计主要目的有: 掌握 Java 编程、面向对象的基础知识,编写坦克大战游戏。 较熟练地编写 Java 应用程序 Application。 做好充分的准备之后,按照面向对象的设计思想,根据坦克大战游戏的实 际需求设计相关的类与接口,实现多态、重载等开发工作。
指导教师签字:
、
指导教师评语
日期:
成绩:
二.系统分析 2.1 可行性分析…………………………………………………………………. 2.2 需求分析…………………………………………………………………….. 2.3 工作流程图………………………………………………………………….
三.课程设计内容 3.1 程序具体设计………………………………………………………………. 3.2 主要方法和变量…………………………………………………………… 3.3 游戏主窗口………………………………………………………………….
四.系统的功能测试与调整 4.1 菜单项测试…………………………………………………………………. 4.2 游戏运行测试……………………………………………………………… 4.3 坦克爆炸测试……………………………………………………………… 4.4 保存游戏信息测试………………………………………………………… 4.5 帮助功能测试……………………………………………………………….
界面中的元素都是在构造界面的时候用界面实例对象的 add 方法加入进去 的,且“动”的元素要不断更新。
坦克主要由 Tank 类来实现。坦克的属性:速度(有 X 轴和 Y 轴的速度之 分),坦克大小,坦克所在新的位置(X 坐标和 Y 坐标),坦克是否还活着,行 动方向等。所有的这些属性都有一个初始化值,从而在游戏一开始就可以运行。
枣庄学院 信息科学与工程学院
课程设计任务书
题目:
学 号: 姓 名: 专 业: 课 程: 指导教师:
职称:
完成时间: 20 年 月----20 年 月
枣庄学院信息科学与工程学院制
课程设计任务书及成绩评定
课程设计的任务和具体要求 本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA 语言程
序设计》课程后,进行的一次全面的综合训练,JAVA 程序设计的设计目的是 加深对理论教学内容的理解和掌握,使学生综合运用所学知识,利用软件工程 为基础进行软件开发、并在实践应用方面打下一定基础。
具体代码: public boolean hitTanks(List<Tank> tanks) { //当子弹打到坦克时 for (int i = 0; i < tanks.size(); i++) { if (hitTank(tanks.get(i))) { //对每一个坦克,调用 hitTank return true; } } return false; }
指导教师签字:
日期:
课程设计所需软件、硬件等 硬件要求能运行 Windows 9.X 操作系统的微机系统。JAVA 程序设计语言及相应的集
成开发环境,J2SDK 和 ECLIPSE 开发工具。
起至日期 2012.11
2012.12
课程设计进度计划
工作内容 程序设计构思,查阅资料
备注
程序设计实现,课程任务书
7
长度,初始化为500
void update(Graphics g)
图形用户界面的更新方法
void framPaint(Graphics g)
画图形用户界面的方法,需要重
画的界面元素都在这个方法里
面
void actionPerformed(ActionEvent e)
监听菜单项的方法
static void main(String[] args)
t.setLife(t.getLife() - 50); // 受一粒子弹寿命减少 50 接受 4 枪就死,总生命值 200,当然方法里面还要做其他很多的判断,如生 命值是否小于 0,如果是的话就执行 t.setLive(false);从而结束游戏。 坦克的爆炸效果独立出来用一个类来描述,爆炸的属性:位置和存活状态, 另外,画爆炸效果的时候要取得用户界面控制,所以要定义 private static Toolkit tk = Toolkit.getDefaultToolkit();其他的方法只能的大同小异。