没有合适的资源?快使用搜索试试~ 我知道了~
坦克大战游戏_java课设_含可运行程序.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 50 浏览量
2022-06-11
13:08:25
上传
评论
收藏 404KB DOC 举报
温馨提示
试读
29页
坦克大战游戏_java课设_含可运行程序
资源推荐
资源详情
资源评论
课程设计说明书 NO.1
坦克大战游戏
1.课程设计目的
在当今时代,人们越来越多依靠计算机来解决各种各样的难题。计算机已成为人
们生活工作中必不可少的元素。同时,计算机技术处于高速发展的阶段,各类新式的
计算机技术层出不穷,不断面世。因此在当今,学习好计算机信息技术已是我们学习
中的重中之重。
JAVA 是实践性很强的课程。课程设计是加强实践能力的一个强有力手段。通过
课程设计可以掌握 JAVA 的应用、编写、上机调试的基本方法。课程设计要求在完成程
序设计的同时能够写出比较规范的设计报告,严格实施课程设计这一环节,对于基本
程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
坦克大战小游戏在人们生活中再平常不过了,更是孩子生活中不可缺少的游戏。
制作好一个优秀的坦克大战游戏软件,与编写者的智慧、胆量与坚持是密不可分的。
坦克大战小游戏是一个优秀的游戏,可以为大多数小孩子提供快乐。因此,编写好一
个比较优秀的简单的坦克大战程序对于一个新手阶段的编程者来说是一个很好的挑
战。
本次课程设计介绍了坦克大战的基本构建方法、java 的相关技术及本程序的结构
分析和具体功能的实现。游戏是在 Eclipse3.2 环境下编程。
2.设计方案论证
2.1 设计思路
2.1.1 游戏规则介绍
玩家控制主坦克(上方有血条的)的移动以及炮弹的发射。若玩家将敌方坦克全
部打掉并保证自己的老家不被打掉则视为玩家获胜;若期间由玩家控制的主坦克被打
掉,或者自己的老家被打掉则视为玩家失败。游戏中有金属墙,普通墙,河水等障碍
物,玩家无法穿越它们;但是玩家可以将普通墙打掉。游戏中的森林可以将坦克隐
身,药箱可以将坦克的血加满。
2.1.2 游戏界面和操作方式
主坦克的方向键
沈 阳 大 学
课程设计说明书 NO.2
前移:W 或键盘方向键向上 后移: S 或方向键向下
左移:A 或键盘方向键向下 右移: D 或方向键向右
普通开火键 J
超级开火键 K
游戏重新开始键 F2
2.1.3 程序的主要设计过程
第一步 在主类中构造一个主 Frame 框架,设置它的大小和位置,并将其显
示。
第二步 构造主窗口中所需要的 Tank 类,并将坦克加到窗口中,实现坦克的四
个方向的移动
第四步 创建炮弹类,并让屏幕中的坦克能发射炮弹
第五步 构造方法,让坦克可以朝对方开火,并将对方击毙
第六部 加入爆炸图片,实现爆炸效果
第六部 添加药箱 BloodBox,实现加血功能
第六部 添加 Home
第七部 添加障碍物 墙,河
第七部 将墙分为金属墙和普通墙,金属墙不可以打掉,普通墙可以打掉。
第八步 添加森林类
第十步 用图片替换程序中的各对象
2.2 设计方法
在 设 计 坦 克 大 战 游 戏 时 , 运 用
TankClient.java,Missile.java,Tank.java,MetalWall.java,Direction.java,
Home.java,Blood.java,Explode.java,River.jaba,Tree.java,OrdinaryWal
l.java 11 个类。
2.2.1 构建游戏主类
在主类中编写一段代码,构造一个窗口。并添加窗口关闭的处理事件,将窗口设
置成打小不可变。
主要代码
this.addWindowListener(new WindowAdapter() {
沈 阳 大 学
课程设计说明书 NO.3
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setResizable(false);
2.2.2 构建坦克类 Tank
创建一个坦克类,用画图工具构造出简单的图形代表坦克,并将坦克加入到主窗口
当中。
主要代码实现
public class Tank {
……
public void draw(Graphics g) {
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 30, 30);
g.setColor(c);
}
}
public class TankClient extends Frame{
……
public void paint(Graphics g) {
myTank.draw(g);
}
}
让坦克朝四个方向运动起来,在主类 TankClient 中启用多线程机制,让系统不断
的进行重画。并在 Tank 类中建立处理按键的方法,实现坦克的手动移动;根据坦克类
修改 TankClient 主类,在主类中注册事件监听器,并调用 Tank 类中的方法。主类
TankClient 中使用双缓冲机制消除坦克的闪烁现象。
Tank 类当中添加的按键方法
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
沈 阳 大 学
课程设计说明书 NO.4
switch(key) {
case KeyEvent.VK_LEFT :
bL = true;
break;
……
}
locateDirection();
}
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
switch(key) {
case KeyEvent.VK_LEFT :
bL = false;
break;
……
}
locateDirection();
}
TankClient 类中的多线程机制的主要代码
new Thread(new PaintThread()).start();
……
private class PaintThread implements Runnable {
public void run() {
while(true) {
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
沈 阳 大 学
课程设计说明书 NO.5
}
}
2.2.3 添加炮弹 Missile 类
在 Missile 类当中添加 x,y,dir 等属性以及常量。在 Missile 类当中添加构造方
法 , draw 方 法 等 必 要 方 法 。 根 据 不 同 的 方 向 , 子 弹 要 进 行 不 同 的 运 动 。 在
TankClient 当中 new 一颗子弹出来。
2.2.4 实现坦克的互相攻击
2.2.4.1 让主战坦克打出炮弹
1) 在 Tank 类当中增加对 J 键的处理,使每按下 J 键的时候,坦克打出一发炮
弹。
case KeyEvent.VK_J :
fire();
break;
2) 根据 “ 坦 克 打 出炮弹” 这 句 话 ,确定 Tank 当 中 的 -re 方 法 , 其 返 回值为
Missile。
public Missile fire() {
……
Missile m = new Missile(x, y, ptDir);
return m;
}
3) 为了解决坦克停下来也能开火的问题——给坦克加一炮筒,根据炮筒方向和
位置设定子弹的方向和位置并 new 出来,然后返回。每次 move 之后根据 Tank
的新方向确定炮筒的方向。
if(this.dir != Direction.STOP) {
this.ptDir = this.dir;
}
4) 为了能够打出多发炮弹,使用容器填装多发炮弹,每当抬起 J 键的时候就往
容器中加入新的炮弹
List<Missile> missiles = new ArrayList<Missile>();
5) 解决炮弹不消亡的问题,加入控制炮弹生死的量 live(Missle),当炮弹已经死
沈 阳 大 学
剩余28页未读,继续阅读
资源评论
omyligaga
- 粉丝: 54
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 优先编码器除法电微分运算电路 全加器函数发生电路等电路经典Multisim仿真实验源文件合集(25个).zip
- 2331308JS课堂案例.zip
- STM32H750VBT6单片机最小系统开发板AD设计硬件(原理图+PCB+3D封装库)工程文件.zip
- 基于74LS161+ 74LS192芯片实现倒计时定时器Multisim仿真源文件,Multisim10以上版本可打开运行
- 科大讯飞语音引擎 jar包 demo,科大讯飞语音合成引擎3.0,支持4.0系统以上,文字转语音输出.zip
- Java架构面试笔试专题资料及经验(含答案)SpringBoot面试Linux面试专题及答案 合集.zip
- 头歌c语言实验答案tion-model-for-ne开发笔记
- docker配置使用-model-for-networK开发demo
- docker配置使用vaWeb-mas笔记
- c语言连接两个字符串-mas开发笔记
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功