注:这是马老师讲的坦克大战的具体功能及其实现步骤,非常适合初学者刚学完java想根据需求练练手。

版本0

功能:

  • 创建一个指定大小的窗口

掌握:

  • 通过eclipse建立一个新的项目
  • 为新的项目指定不同的源代码和输出目录
  • 指定项目所用的版本
  • 通过eclipse建立新的类

版本0.1

功能:

  • 添加关闭窗口的事件
  • 不允许窗口大小改变

掌握:

  • 匿名类的用法(应用场合)
  • 通eclipse重写父类的方法

版本0.2

功能:

  • 画出代表坦克的实心圆

掌握:

  • 如何重写paint方法

版本0.3

功能:

  • 让坦克运动起来

步骤:

  • 将位置改变为变量;
  • 启动线程不断重复画;
  • 每次重画改变坦克位置

掌握:

  • 内部类的使用(好处,什么时候用)
  • 可以方便的访问包装类的方法;不方便公开的,只为包装类服务的类应当定义为内部类

版本0.31

功能:

  • 使用双缓冲消除闪烁现象

原因:

  • 刷新重画频率太快,paint方法还没完成
  • 逐条显示

解决:

  • 将所有东西画在虚拟图片上,一次性显示出来

版本0.4

功能:

  • 代码重构

步骤:

  • 将以后可能需要多处改变的量定义为常量
  • 一般用public static final
  • 常量名一般大写

版本0.5

功能:

  • 键盘控制坦克

步骤:

  • 键盘监听类KeyMonitor
  • 内部类
  • 注意:switch case语句的使用和break的运用

版本0.6——重要版本

功能:

  • 将坦克单独封装成为一个类

步骤:

  • 建立Tank类
  • 为Tank类天界成员变量和构造方法
  • 添加draw方法,使得Tank类可以单独控制自己的画法
  • 添加Tank类处理按键的方法
  • 根据Tank修改TankClient类

掌握:

  • 面向对象的思想
  • 细节隐藏,构建单独的类,首先考虑系统中有哪些类
  • 合适的方法应该出现在合适的类中

版本0.7——重要版本

功能:

  • 让坦克向8个方向走

步骤:

  • 添加记录按键状态的布尔量
  • 添加代表方向的量(使用枚举)
  • 根据按键状态确定Tank的方向
  • 方向进行下一步的移动(move)

版本0.8

功能:

  • 让坦克向8个方向走(2)

步骤:

  • 处理键抬起的消息
  • 修改TankClient相关代码

版本0.9

功能:

  • 添加子弹类

步骤:

  • 添加Missile类
  • 添加x,y,dir等属性以及常量
  • 添加构造方法
  • 根据不同方向,进行不同的运动
  • 在TankClient中模拟一颗子弹

注意:

  • 不一定一次写到位
  • 进行多次试验
  • 将步骤分解开来逐一进行调试

版本1.0

功能:

  • 根据主战坦克的方向和位置,打出子弹

步骤:

  • 增加对Ctrl键的按键处理
  • 根据坦克打出一发子弹这个话,来确定Tank中的方法fire,其返回值为Missle
  • 根据Tank方向和位置设定子弹的方向和位置x、y出来,然后返回fire方法的实现

版本1.1

功能:

  • 为了解决坦克停下也能打出炮弹的问题——画出炮筒

步骤:

  • Tank类增加新的属性ptDir
  • 每次move后根据Tank新的方向确定炮筒的方向
  • 将炮筒用直线的形式表示出来

版本1.2

功能:

  • 打出多发炮弹

步骤:

  • 使用容器装炮弹
  • 每当抬起ctrl键就网容器中加入新的炮弹
  • 逐一画出每一发炮弹

注意:

  • 泛型的使用
  • 将TankClient的实例传递到Tank中
  • this的运用类的初始化过程

版本1.3

功能:

  • 解决炮弹不消亡的问题
  • 解决坦克出界的问题

步骤:

  • 加入控制炮弹生死的量bLive(Missile)
  • 当炮弹已经死去就不需要对其重画
  • 当炮弹死亡就从容器炒中去除
  • 当炮弹飞出边界就死亡

Debug的运用

  • 一步一步跟踪代码
  • 为代码设置断点
  • Step into和step over的概念
  • 学会在运行过程中观察变量的值

版本1.4

功能:

  • 画一辆敌人的坦克

步骤:

  • 加入区别敌我的量good
  • 根据敌我的不同设置不同的颜色
  • 更新Tank的构造函数,加入good
  • TanClient中new出敌人的坦克并画出

版本1.5

功能:

  • 将敌人的坦克击毙

分析:

  • 一颗子弹击中敌人的坦克

步骤:

  • Missile中加入hitTank(Tank)方法,返回布尔类型
  • 碰撞检测的辅助类Rectangle
  • 为Tank和Missile都加入getRect方法
  • 当击中敌人坦克时候,坦克被打死,子弹也死去
  • 增加控制tank生死的量live
  • 如果死去就不画了

版本1.6

功能:

  • 加入爆炸的感觉

步骤:

  • 添加爆炸类(加入不同直径的圆模拟爆炸,加入live,加入位置属性,加入draw方法)
  • 爆炸应该存在于集合类中(TankClient加入集合,将集合中的爆炸逐一画出)
  • 击毙一辆坦克后应产生爆炸(hitTank是应产生爆炸,不能直接访问爆炸集合,加入TankClient引用Missile类,当new Missile时候应该指定哪里画出哪个TankClient,修改Tank类fire方法,当new Missile时候将保存好的TankClient变量传递给Missile

版本1.7

功能:

  • 添加多量坦克

步骤:

  • 用容器类来装敌人的Tank
  • 向容器中装入多辆敌人Tank
  • 画出来
  • 运行,不能打掉(添加hitTanks方法,打一系列Tank,TankClient里面每发子弹都打tanks)

版本1.8

功能:

  • 让敌方坦克更加智能

步骤:

  • 让敌方坦克动起来(构造方法中可以指定方向,new敌方坦克的时候指定敌方坦克的方向)
  • 然敌方坦克向随机方向移动(Tank是静态的,添加随机数产生器java.util.Random,move完成后如果是敌方坦克的随机产生一个数,来设定坦克的下一个方向,Direction.values();)
  • 让敌方坦克向随机方向移动随机步数(添加变量,记录随机步数,当==0时,改变方向,否则知识随机步数递减)
  • 让敌方坦克发射炮弹(我方坦克炮弹不大我方坦克,炮弹添加好坏bGood,根据好坏画不同颜色,修改炮弹的构造方法,修改Tank的fire方法,修改hitTank方法,好不能打好,坏不能打坏)
  • 敌方炮火不能太猛烈

版本1.9

功能:

  • 添加两堵墙

步骤:

  • 建立一个Wall类,建立Wall对象,画出来
  • 让每一颗子弹打击每一堵墙(hitWall()方法,子弹速度不能太快,否则容易穿过墙);
  • 让坦克不能穿过墙(记录上一次的位置oldx,oldy,修改构造函数,每次move之前记录上一次的位置,添加stay方法,记录移动前的位置,当撞到时回到移动前的位置,当碰到墙的时候stay());

版本2.0

功能:

  • 坦克不能相互穿越

步骤:

  • 当坦克撞到Tank的时候stay();

版本2.1

功能:

  • 超级炮弹

步骤:

  • 处理按键A

版本2.2

功能:

  • 主坦克的生命值

步骤:

  • 加入fire变量
  • 在窗口显示生命值

版本2.3

功能:

  • 图形化表示主战坦克的生命值

步骤:

  • 根据不同的life值进行不同的显示

版本2.4

功能:

  • 添加血块

步骤:

  • 添加blood类
  • 添加必要的方法
  • 让blood对象固定轨迹运动,并在一定时间后消失

版本2.5

功能:

  • 敌人死光了重新加入
  • 主战坦克死了按F2开始复活

java开发坦克大战小游戏相关推荐

  1. JAVA开发坦克大战小游戏个人实战笔记

    1.认识frame类 a.这是一个窗口类 b.常用方法 setSize();## 标题//设置大小 setVisible();//显示窗口 setTitle();//设置标题 setResizable ...

  2. 【JAVA程序设计】基于JAVA的坦克大战小游戏--入门级小游戏

    基于JAVA的坦克大战小游戏--入门级小游戏 零.项目获取 一.项目简介 二.开发环境 三.游戏玩法 四.运行截图 零.项目获取 获取方式(点击下载):是云猿实战 项目经过多人测试运行,可以确保100 ...

  3. Java实现的经典坦克大战小游戏

    Java实现的经典坦克大战小游戏 先看一下游戏结构: 有点多,没有耐心的可以不用看,这里先给出链接吧! 云链接:经典坦克大战 提取码:s9ai 这里就不介绍功能了,贴了一张游戏运行的截图,具体的功能自 ...

  4. 【180930】坦克大战小游戏源码

    坦克大战小游戏源码程序实现了小霸王游戏机上坦克大战的功能,主要功能是开火.移动.3种不同的敌方坦克.用户自制地图等,缺点是有些小细节还处理的不好,感觉画面不够好,还没实现自动的下一关功能(主要是嫌做默 ...

  5. 用Java开发贪食蛇小游戏

    用Java开发贪食蛇小游戏 一.实验内容 1.实现贪吃蛇游戏基本功能,屏幕上随机出现一个"食物",称为豆子,上下左右控制"蛇"的移动,吃到"豆子&qu ...

  6. 【Java】Java基础飞机大战小游戏完整代码

    Java基础飞机大战小游戏完整代码 先来展示一下代码实现结果图 主函数ShootGame 初始化游戏原始背景图片,游戏人物图片,游戏开始结束图片:构建产生敌人算法:产生英雄机算法:发射子弹算法:判断是 ...

  7. Java开发贪吃蛇小游戏

    Java开发贪吃蛇小游戏 文章目录 Java开发贪吃蛇小游戏 一.开发思路 二.具体开发过程 1.绘制静态游戏窗口 2.导入素材图标 3.绘制游戏面板 4.绘制一条静态的小蛇 5.让小蛇动起来 ①监听 ...

  8. java开发的俄罗斯方块小游戏,可下载,2021-06-22

    java开发的俄罗斯方块小游戏,可下载 文章目录 java开发的俄罗斯方块小游戏,可下载 游戏操作介绍 游戏压缩包下载 最近在老师要求下组队,一起使用eclipse编写了Java游戏代码,导入sqli ...

  9. 基于JavaSwing开发潜艇大战小游戏 课程设计 大作业源码

    基于JavaSwing开发潜艇大战小游戏:  (大作业) 开发环境: Windows操作系统 开发工具: Eclipse+Jdk 运行效果图: 基于JavaSwing开发潜艇大战小游戏:  (大作业) ...

  10. html实现经典坦克大战小游戏

    文章目录 1.设计来源 1.1 游戏主界面 1.2 游戏界面 2.效果和源码 2.1 动态效果 2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/w ...

最新文章

  1. ajax.beginform onfailure,如何使用Ajax.BeginForm OnSuccess和OnFailure方法?
  2. Hlg 1407 【最小点权覆盖】.cpp
  3. 怎么查看端口占用情况?
  4. 重学深度学习系列-回归
  5. C语言实现字符串匹配的Rabin-Karp算法(附完整源码)
  6. 用函数计算工龄_还在加班熬夜求年龄,算工龄,学会这招让你分分钟钟搞定这些!...
  7. Android双机(网络和USB)调试及其完美ROOT
  8. 233. 数字 1 的个数
  9. 七、深度学习中的正则化
  10. linux系统下将php和mysql命令加入到环境变量中的方法
  11. 【大数据课程设计】出租车轨迹数据分析
  12. 百度初级认证考试知识点
  13. 谷歌gmail注册入口_Gmail样式的侧面板即将用于Google文档和Google日历
  14. 服务器单核性能天梯图,台式机cpu性能排行(cpu单核性能天梯图)
  15. prisma 连接不上Postgres
  16. 一张图片告诉你win10各版本之间的主要区别
  17. 《教父II:西西里人》 shbp--3
  18. 解决 git 文件夹不显示绿色图标和红色图标的问题
  19. Windows11系统下Edge如何兼容IE浏览器
  20. AD拼版工具 Embedded board array 进行PCB拼版注意事项

热门文章

  1. 响应式布局基础知识详解
  2. 使用usb有线网卡u-boot无法ping通虚拟机
  3. 拍视频用30帧还是60帧更好,帧率如何设置60帧的问题
  4. vue项目结合 Element插件
  5. 免费SSL证书和付费SSL证书有什么区别?
  6. Java SimpleDateFormat 中英文时间格式化转换
  7. 一个简单的form表单登录界面
  8. 17229 Lry,你除了2还是2[C]
  9. Android日历阴阳历转换的实现(包括日期选择器)
  10. 小鸡模拟器显示无法连接服务器,小鸡模拟器安装不了怎么办