java开发坦克大战小游戏
注:这是马老师讲的坦克大战的具体功能及其实现步骤,非常适合初学者刚学完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开发坦克大战小游戏相关推荐
- JAVA开发坦克大战小游戏个人实战笔记
1.认识frame类 a.这是一个窗口类 b.常用方法 setSize();## 标题//设置大小 setVisible();//显示窗口 setTitle();//设置标题 setResizable ...
- 【JAVA程序设计】基于JAVA的坦克大战小游戏--入门级小游戏
基于JAVA的坦克大战小游戏--入门级小游戏 零.项目获取 一.项目简介 二.开发环境 三.游戏玩法 四.运行截图 零.项目获取 获取方式(点击下载):是云猿实战 项目经过多人测试运行,可以确保100 ...
- Java实现的经典坦克大战小游戏
Java实现的经典坦克大战小游戏 先看一下游戏结构: 有点多,没有耐心的可以不用看,这里先给出链接吧! 云链接:经典坦克大战 提取码:s9ai 这里就不介绍功能了,贴了一张游戏运行的截图,具体的功能自 ...
- 【180930】坦克大战小游戏源码
坦克大战小游戏源码程序实现了小霸王游戏机上坦克大战的功能,主要功能是开火.移动.3种不同的敌方坦克.用户自制地图等,缺点是有些小细节还处理的不好,感觉画面不够好,还没实现自动的下一关功能(主要是嫌做默 ...
- 用Java开发贪食蛇小游戏
用Java开发贪食蛇小游戏 一.实验内容 1.实现贪吃蛇游戏基本功能,屏幕上随机出现一个"食物",称为豆子,上下左右控制"蛇"的移动,吃到"豆子&qu ...
- 【Java】Java基础飞机大战小游戏完整代码
Java基础飞机大战小游戏完整代码 先来展示一下代码实现结果图 主函数ShootGame 初始化游戏原始背景图片,游戏人物图片,游戏开始结束图片:构建产生敌人算法:产生英雄机算法:发射子弹算法:判断是 ...
- Java开发贪吃蛇小游戏
Java开发贪吃蛇小游戏 文章目录 Java开发贪吃蛇小游戏 一.开发思路 二.具体开发过程 1.绘制静态游戏窗口 2.导入素材图标 3.绘制游戏面板 4.绘制一条静态的小蛇 5.让小蛇动起来 ①监听 ...
- java开发的俄罗斯方块小游戏,可下载,2021-06-22
java开发的俄罗斯方块小游戏,可下载 文章目录 java开发的俄罗斯方块小游戏,可下载 游戏操作介绍 游戏压缩包下载 最近在老师要求下组队,一起使用eclipse编写了Java游戏代码,导入sqli ...
- 基于JavaSwing开发潜艇大战小游戏 课程设计 大作业源码
基于JavaSwing开发潜艇大战小游戏: (大作业) 开发环境: Windows操作系统 开发工具: Eclipse+Jdk 运行效果图: 基于JavaSwing开发潜艇大战小游戏: (大作业) ...
- html实现经典坦克大战小游戏
文章目录 1.设计来源 1.1 游戏主界面 1.2 游戏界面 2.效果和源码 2.1 动态效果 2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/w ...
最新文章
- ajax.beginform onfailure,如何使用Ajax.BeginForm OnSuccess和OnFailure方法?
- Hlg 1407 【最小点权覆盖】.cpp
- 怎么查看端口占用情况?
- 重学深度学习系列-回归
- C语言实现字符串匹配的Rabin-Karp算法(附完整源码)
- 用函数计算工龄_还在加班熬夜求年龄,算工龄,学会这招让你分分钟钟搞定这些!...
- Android双机(网络和USB)调试及其完美ROOT
- 233. 数字 1 的个数
- 七、深度学习中的正则化
- linux系统下将php和mysql命令加入到环境变量中的方法
- 【大数据课程设计】出租车轨迹数据分析
- 百度初级认证考试知识点
- 谷歌gmail注册入口_Gmail样式的侧面板即将用于Google文档和Google日历
- 服务器单核性能天梯图,台式机cpu性能排行(cpu单核性能天梯图)
- prisma 连接不上Postgres
- 一张图片告诉你win10各版本之间的主要区别
- 《教父II:西西里人》 shbp--3
- 解决 git 文件夹不显示绿色图标和红色图标的问题
- Windows11系统下Edge如何兼容IE浏览器
- AD拼版工具 Embedded board array 进行PCB拼版注意事项