TankWar2.9.rar

  • bhsdfs
    了解作者
  • Java
    开发工具
  • 79KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2021-01-12 18:37
    上传日期
借鉴别人的东西,欢迎共享11111111111
TankWar2.9.rar
内容介绍
package cn.hzmslx; /* TankWar 2.9 * ================0.1版========================= * 显示出800*600窗口 * ================0.2版========================= * 添加窗口关闭事件,同时设置窗口大小无法改变 * ================0.3版========================= * 画出坦克身体,并将其显示在窗口里面,并在每次打开窗口时更新 * ================0.4版========================= * 添加一个线程,使坦克在窗口里面移动 * ================0.41版======================== * 利用双缓冲技术消除闪屏现象的bug * ================0.5版========================= * 为以后的改动打下了坚实的基础,把所有的不变量全部改成常量 * ================0.6版========================= * 添加了键盘监听,是坦克可以上下左右移动了 * ================0.7版========================= * 把坦克包装成了类,更加体现面向对象的思考方法,产生坦克更加容易 * ================0.8版========================= * 对坦克类做出重大修改,同时让坦克的运动方向从四个变为了八个 * ================0.9版========================= * 修正坦克移动两次就停止移动的bug * ================1.0版========================= * 给坦克添加了发射炮弹的功能,让游戏更有真实感 * ================1.1版========================= * 添加对发射炮弹键Ctrl的监听,炮弹的飞行方向由坦克的前进方向决定 * ================1.2版========================= * 修正坦克不动炮弹也不能飞出的bug,添加炮筒,坦克变得更加真实 * 炮弹的飞行方向变为炮筒的方向 * ================1.3版========================= * 添加多发炮弹机制,一次性可以打出很多发炮弹,不会像以前那样打一下 * 就会把刚才的炮弹抹掉 * ===============1.4版========================== * 解决炮弹出界不消亡问题,和坦克出界问题,杜绝了玩游戏消耗内存 * 巨大的问题 * ===============1.5版========================== * 画出了敌人的坦克,并用不同的颜色和自己的坦克进行区分 * ===============1.6版========================== * 添加一个子弹击中一个坦克,且解决再次发子弹不再次击中的问题 * ===============1.7版========================== * 对背景颜色进行了调整,添加了爆炸类 * ===============1.8版========================== * 添加坦克列表,不再只是一辆敌人坦克,而是一个列表 * ===============1.9版========================== * 添加简单的人工智能,让坦克动起来 * ===============2.0版========================== * 添加墙,自己的坦克可以穿墙,别人的坦克穿不了,不过打到墙 * 也会发生爆炸,让游戏变得更有真是感 * ===============2.1版========================== * 坦克不能再互相穿越,游戏得到进一步修正,更加具有真实感 * ===============2.2版========================== * 添加超级炮弹功能,可以向八个方向打出导弹 * A:八向导弹 * S:发射两枚穿甲弹 * ==============2.3版=========================== * 添加生命值,主战坦克不是一击就死了了 * ==============2.4版=========================== * 添加血的滑条,游戏得到了进一步的完善 * ==============2.5版 初级版===================== * 程序大概写完成了,在这个版本里面添加了按F2自己复活了敌人打 * 光了自己添加的功能,以后的版本将添加Boss功能 * ==============2.6-2.7合集===================== * 添加过关关卡,一共分为四关,每过一关坦克的攻击力都会提高 * ==============2.8版=========================== * 把爆炸的变为了图片,让整个程序更加生动 * ==============2.9版=========================== * 添加坦克的图片和炮弹图片,并对加载代码进行了高精度操作 * 添加了配置文件,管理初始的坦克数量(添加一个静态的类) * */ import java.awt.Color; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.ArrayList; import java.util.List; /** * 本类用于显示坦克大战的主窗口 * * @author hzmslx * */ public class TankClient extends Frame { public static long killTanks = 0; // 保存杀死敌人坦克数量 public static final int GAME_WIDTH = 900; // 游戏窗口的宽 public static final int GAME_HEIGHT = 650; // 游戏窗口的高 public static final int TANK_WIDTH = 30; // 坦克的宽 public static final int TANK_HEIGHT = 30; // 坦克的高 public static int killCount = 0; public static int gates = 0; //保存关数 public static int sleepTime = 25; //屏幕刷新的时间 Tank myTank = new Tank(50, 50, true, Direction.STOP, this); // 构造一个坦克 // Tank enemyTank = new Tank(40,40,false,this); List<Tank> enemyTanks = new ArrayList<Tank>(); List<Boss> bossList = new ArrayList<Boss>(); //保存boss的引用 List<Boss> goodBoss = new ArrayList<Boss>(); Wall w1 = new Wall(100, 200, 50, 300, this); Wall w2 = new Wall(300, 100, 300, 30, this); River r1 = new River(180,200,600,30,this); // Explode ex = new Explode(80,80,this); // Tank myTank2 = new Tank(70,70,true,this); List<ExplodeNew> epList = new ArrayList<ExplodeNew>(); // 保存爆炸 List<Blood> bls = new ArrayList<Blood>(); List<Missile> missileList = new ArrayList<Missile>(); // 保存炮弹的引用 Image offScreenImage = null; // 用于双缓冲,相当于是窗口背后的窗口 PaintThread pt = new PaintThread(); Thread t = new Thread(pt); // MenuBar mb = new MenuBar(); /** 默认构造方法 */ public TankClient() { } /** 构造一个有名字的窗口 */ public TankClient(String Name) { super(Name); } public static void main(String[] args) { TankClient tc = new TankClient("TankWar"); tc.loadFrame(); } public void toGate(TollGate tg) { // 通关方法 switch (tg) { case GATE_ONE: for (int i = 0; i < Integer.parseInt(PropertiesMake.getProperties("Gate_One_TanksCount")); i++) { enemyTanks.add(new Tank(60 + (35 * (i + 5)), 500, false, Direction.RIGHT, this)); Tank.randomFire = 35; // 增大炮火程度 } if (bls.size() == 0) { Blood b1 = new Blood(); bls.add(b1); } break; case GATE_TWO: for (int i = 0; i < Integer.parseInt(PropertiesMake.getProperties("Gate_Two_TanksCount")); i++) { enemyTanks.add(new Tank(60 + (35 * (i + 5)) , 500 , false, Direction.RIGHT, this)); Tank.randomFire = 30; } if (bls.size() == 0) { Blood b1 = new Blood(); bls.add(b1); } break; case GATE_THREE: for (int i = 0; i < Integer.parseInt(PropertiesMake.getProperties("Gate_Three_TanksCount")); i++) { enemyTanks.add(new Tank(60 + (35 * (i + 5)), 500, false, Direction.RIGHT, this)); Tank.randomFire = 20; } Blood b = new Blood(); bls.add(b); break; case GATE_FOUR: for (int i = 0; i < Integer.parseInt(PropertiesMake.getProperties("Gate_Four_TanksCount")); i++) { enemyTanks.add(new Tank(60 + (35 * (i + 5)), 500, false, Direction.RIGHT, this)); Tank.randomFire = 10; } if (bls.size() == 0) { Blood b1 = new Blood(); bls.add(b1); } break; case GATE_BOSS_ONE: MrLiuBoss mb = new MrLiuBoss(this,Direction.LEFT,650,500,Color.GREEN,false); bossList.add(mb); if (bls.size() == 0) { Blood b1 = new Blood(); bls.add(b1); } break; case GATE_FIVE: for (int i = 0; i < 25; i++) { enemyTanks.add(new Tank(60 + (35 * (i + 5)), 500, false, Direction.RIGHT, this)); Tank.randomFire = 20; } if (bls.size() == 0) { Blood b1 = new Blood(); bls.add(b1); } break; case GATE_BOSS_TWO: for(int i = 0; i < 5; i++) { enemyTanks.add(new Tank(60 + (35 * (i + 5)), 500, false, Direction.RIGHT, this)); Tank.randomFire = 30; } MrLiuBoss mb2 = new MrLiuBoss(this,Direction.LEFT,650,500,Color.ORANGE,false); bossList.add(mb2); if (bls.size() == 0) { Blood b1 = new Blood(); bls.add(b1); } break; case GATE_BOSS_TWOBOSS: MrLiuBoss mb3 = new MrLiuBoss(this,Direction.LEFT,650,500,Color.ORANGE,false); MrLiuBoss mb4 = new MrLiuBoss(this,Direction.LEFT,650,500,Color.ORANGE,false); bossList.add(mb3); bossList.add(mb4); MrLiuBoss goodB = new MrLiuBoss(this,Direction.LEFT,500,400,Color.RED,true); goodBoss.add(goodB); if (bls.size() == 0) { Blood b1 = new Blood(); bls.add(b1); } break; case GATE_BOSS_F
评论
    相关推荐
    • 坦克大战.rar
      坦克大战源代码,采用C++编程语言,一个经典的小游戏
    • 坦克大战.zip
      经典的坦克大战小游戏,方向键控制移动,空格键射击,随着杀敌数的增加,游戏难度也会增加。
    • JAVA坦克大战
      里面含有可直接运行的坦克大战jar包和生成的类、方法的javadoc,同时贡献出源码,大家有兴趣的话可以学习下。
    • java坦克大战
      正在学习中,仅实现了坦克的移动 射击 内有坦克大战需要的素材,后续会继续跟新 可以参考一下
    • 坦克大战源码
      经典坦克大战源代码,导入eclipse可运行,代码量小,结构简单,适合初学者参考 包括swing编程 thread编程 io编程 有一定综合性
    • java坦克大战
      自己写的坦克大战,水平不行,代码比较乱,没什么注释,可能不好看懂。 参考了一些教程 ,游戏画质有些粗糙,无偿下载,希望多提宝贵意见。 游戏方式比较简单,没做场景,直接大混战,可以调敌人数量,速度,生命值...
    • C++坦克大战
      简易版C++坦克大战,适合初学C++看看,源码简单易懂~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • 坦克大战源码
      坦克大战源代码包 有窗体 可以 战斗,可以发射子弹 但是子弹的速度比移动的速度还要慢 可以自己设定,jar包等都有,下载,只需要导入就可以了,运行软件是idea
    • java坦克大战
      利用java swing实现桌面版坦克大战,丰富的关卡与可玩性,接近89版坦克大战。您可以自由修改或添加你想要的元素。
    • 坦克大战源码
      坦克大战C#源码 坦克大战2012是一款射击小游戏,经典再度袭来,流畅的画面,疯狂的战斗,让玩家再次进入疯狂坦克的世界。玩家的目标是控制坦克躲避危险,消灭掉所有的敌人