⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 battlecanvas.java

📁 这是我在原来单位的时候写的一个坦克大战的J2ME游戏的代码,可以给其他作J2ME游戏的人作个参考
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        m_gameLogic.m_tank.move(Sprite.
                                TRANS_NONE, 3);
      }
    }
    else if ( (keyStates & DOWN_PRESSED) != 0) {

      if (true == m_popupGameMenu) {
        /*
        m_currentMenuButtonIndex++;
        if (m_currentMenuButtonIndex >= MENU_BUTTON_COUNTS) {
          m_currentMenuButtonIndex = MENU_BUTTON_COUNTS - 1;
        }
        if (m_currentMenuButtonIndex <= 0) {
          m_currentMenuButtonIndex = 0;
        }*/

      }
      else {
        m_gameLogic.m_tank.move(Sprite.
                                TRANS_ROT180, 3);
      }
    }
    else if ( (keyStates & FIRE_PRESSED) != 0) {
      if (true == m_popupGameMenu) {

      }
      else {
        m_gameLogic.m_tank.fire();
      }
    }
  }

  /*
   private void step(){
    if(m_tank.collidesWith(m_warMap))
    {
      m_tank.undo();
    }
    m_tank.run();
   }*/
  //user defined functions

}

/**
 *
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2008</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
class GameLogic {
  //rms related
  public final static String RMS_NAME = "MyRms";
  public final static int NUM_OF_RMS_RECORDS = 6;

  /**
   * game state
   */
  public final static int GAME_STATE_READY = 1;
  public final static int GAME_STATE_PAUSE = 2;
  public final static int GAME_STATE_LOOP = 3;
  public final static int GAME_STATE_END = 4;
  public final static int GAME_STATE_TIMEOUT = 5;
  public final static int GAME_STATE_RESET = 6;

  /**
   * map size
   */
  public static int m_canvasWidth = 0;
  public static int m_canvasHeight = 0;

  public final static int MAP_COLUM_NUM = 12;
  public final static int MAP_ROW_NUM = 14;

  public final static int MAP_CELL_WIDTH = 20;
  public final static int MAP_CELL_HEIGHT = 20;

  public final static int MAP_WIDTH = 240;
  public final static int MAP_HEIGHT = 280;

//当前关卡
  private final static String LEVEL1 = "/tank/level1.txt";

//血条属性
  public final static int TANK_BLOOD_WIDTH=14;
  public final static int TANK_BLOOD_HEIGHT=3;

//TANK的属性
  public final static int TANK_WIDTH = 20;
  public final static int TANK_HEIGHT = 20;

  public final static int USER_TANK = 1;
  public final static int ENEMY_TANK = 2;

  public final static int MAX_TANK_LIFE = 5;

//坦克运行的方向
  public final static int TANK_DIRECTION_UP = 1;
  public final static int TANK_DIRECTION_DOWN = 2;
  public final static int TANK_DIRECTION_LEFT = 3;
  public final static int TANK_DIRECTION_RIGHT = 4;

//坦克类型
  public final static int TANK_RETIRED = 0; //退伍坦克
  public final static int TANK_RETIRED_PLUS=1;//红退伍坦克+1
  public final static int TANK_RETIRED_PLUSPLUS=2;//红退伍坦克+2
  public final static int TANK_COMMON = 3; //主战坦克
  public final static int TANK_COMMON_PLUS = 4; //主战坦克+1
  public final static int TANK_COMMON_PLUSPLUS = 5; //主战坦克+2
  public final static int GREEN_TANK_SPECIAL = 6; //绿色特种坦克
  public final static int GREEN_TANK_SPECIAL_PLUS = 7; //绿色特种坦克+1
  public final static int GREEN_TANK_SPECIAL_PLUSPLUS = 8; //绿色特种坦克+2

  public final static int TANK_FUTURE = 9; //未来坦克(隐藏)
  public final static int TANK_FUTURE_PLUS = 10;//紫色未来坦克+1
  public final static int TANK_FUTURE_PLUSPLUS = 11;//紫色未来坦克+2
  public final static int TANK_TIP_LORRY = 12; //翻斗车(隐藏)
  public final static int TANK_BABY = 13; //娃娃车
//enemy tank
  public final static int TANK_ENEMY_TYPE1 = 14; //敌方坦克1
  public final static int TANK_ENEMY_TYPE2 = 15; //敌方坦克2
  public final static int TANK_ENEMY_TYPE3 = 16; //敌方坦克3
  //BOSS
  public final static int TANK_ENEMY_BLOCK = 17; //巨型坦克 BOSS1
  public final static int TANK_ENEMY_TRAIN = 18; //巨型火车 BOSS2

  public final static int TANK_PROPERTY_BASIC_ATTACT = 0; //基本攻击
  public final static int TANK_PROPERTY_ATTACT_FREQUENCY = 1; //攻击频率
  public final static int TANK_PROPERTY_BASIC_BLOOD = 2; //基本攻击
  public final static int TANK_PROPERTY_BASIC_MOVE_PIXEL = 3; //基本机动(像素)
  public final static int TANK_PROPERTY_ATTACT_SPEED = 4; //子弹移动速度(像素)
  public final static int TANK_PROPERTY_BOMB_COUNT = 5;//坦克携带的炸弹个数
  public final static int TANK_PROPERTY_TANK_LIFE = 6;//坦克的生命个数

//运行的TANK的不同的图像
//退役坦克(c运行时/静止时)
  public final static int RETIRED_TANK_IMAGE_DOWN_RUN = 0;
  public final static int RETIRED_TANK_IMAGE_DOWN_STILL = 1;
  public final static int RETIRED_TANK_IMAGE_UP_RUN = 2;
  public final static int RETIRED_TANK_IMAGE_UP_STILL = 3;
  public final static int RETIRED_TANK_IMAGE_LEFT_RUN = 4;
  public final static int RETIRED_TANK_IMAGE_LEFT_STILL = 5;
  public final static int RETIRED_TANK_IMAGE_RIGHT_RUN = 6;
  public final static int RETIRED_TANK_IMAGE_RIGHT_STILL = 7;
 //红色退伍坦克+1
  public final static int RETIRED_TANK_PLUS_IMAGE_DOWN_RUN = 8;
  public final static int RETIRED_TANK_PLUS_IMAGE_DOWN_STILL = 9;
  public final static int RETIRED_TANK_PLUS_IMAGE_UP_RUN = 10;
  public final static int RETIRED_TANK_PLUS_IMAGE_UP_STILL = 11;
  public final static int RETIRED_TANK_PLUS_IMAGE_LEFT_RUN = 12;
  public final static int RETIRED_TANK_PLUS_IMAGE_LEFT_STILL = 13;
  public final static int RETIRED_TANK_PLUS_IMAGE_RIGHT_RUN = 14;
  public final static int RETIRED_TANK_PLUS_IMAGE_RIGHT_STILL = 15;
  //红色退伍坦克+2
  public final static int RETIRED_TANK_PLUSPLUS_IMAGE_DOWN_RUN = 16;
  public final static int RETIRED_TANK_PLUSPLUS_IMAGE_DOWN_STILL = 17;
  public final static int RETIRED_TANK_PLUSPLUS_IMAGE_UP_RUN = 18;
  public final static int RETIRED_TANK_PLUSPLUS_IMAGE_UP_STILL = 19;
  public final static int RETIRED_TANK_PLUSPLUS_IMAGE_LEFT_RUN = 20;
  public final static int RETIRED_TANK_PLUSPLUS_IMAGE_LEFT_STILL = 21;
  public final static int RETIRED_TANK_PLUSPLUS_IMAGE_RIGHT_RUN = 22;
  public final static int RETIRED_TANK_PLUSPLUS_IMAGE_RIGHT_STILL = 23;


//敌人坦克类型1
  public final static int TANK_ENEMY_TYPE1_IMAGE_DOWN_RUN = 0;
  public final static int TANK_ENEMY_TYPE1_IMAGE_DOWN_STILL = 1;
  public final static int TANK_ENEMY_TYPE1_IMAGE_UP_RUN = 2;
  public final static int TANK_ENEMY_TYPE1_IMAGE_UP_STILL = 3;
  public final static int TANK_ENEMY_TYPE1_IMAGE_LEFT_RUN = 4;
  public final static int TANK_ENEMY_TYPE1_IMAGE_LEFT_STILL = 5;
  public final static int TANK_ENEMY_TYPE1_IMAGE_RIGHT_RUN = 6;
  public final static int TANK_ENEMY_TYPE1_IMAGE_RIGHT_STILL = 7;

  //敌人坦克类型2
 public final static int  TANK_ENEMY_TYPE2_IMAGE_DOWN_RUN = 8;
 public final static int TANK_ENEMY_TYPE2_IMAGE_DOWN_STILL = 9;
 public final static int TANK_ENEMY_TYPE2_IMAGE_UP_RUN = 10;
 public final static int TANK_ENEMY_TYPE2_IMAGE_UP_STILL = 11;
 public final static int TANK_ENEMY_TYPE2_IMAGE_LEFT_RUN = 12;
 public final static int TANK_ENEMY_TYPE2_IMAGE_LEFT_STILL = 13;
 public final static int TANK_ENEMY_TYPE2_IMAGE_RIGHT_RUN = 14;
 public final static int TANK_ENEMY_TYPE2_IMAGE_RIGHT_STILL = 15;

 //敌人坦克类型3
public final static int  TANK_ENEMY_TYPE3_IMAGE_DOWN_RUN = 16;
public final static int TANK_ENEMY_TYPE3_IMAGE_DOWN_STILL = 17;
public final static int TANK_ENEMY_TYPE3_IMAGE_UP_RUN = 18;
public final static int TANK_ENEMY_TYPE3_IMAGE_UP_STILL = 19;
public final static int TANK_ENEMY_TYPE3_IMAGE_LEFT_RUN = 20;
public final static int TANK_ENEMY_TYPE3_IMAGE_LEFT_STILL = 21;
public final static int TANK_ENEMY_TYPE3_IMAGE_RIGHT_RUN = 22;
public final static int TANK_ENEMY_TYPE3_IMAGE_RIGHT_STILL = 23;



//
//坦克属性(基本攻击,攻击频率,基本血量,基本机动,子弹运行速度)
  public static final int tank_type[][] = {
      //retired tank
      	{10, 1, 10, 4, 8,3,4}
      , {15, 1, 10, 4, 8,3,4}
      , {20, 1, 10, 4, 8,3,4}
      //common tank
      , {10, 2, 20, 4, 8,3,4}
      , {15, 2, 20, 4, 8,3,4}
      , {20, 2, 20, 4, 8,3,4}
      //special tank
      , {10, 3, 30, 5, 8,3,4}
      , {15, 3, 30, 5, 8,3,4}
      , {20, 3, 30, 5, 8,3,4}
      //future tank one
      , {30, 1, 40,5, 8,3,4}
      , {45, 1, 40,5, 8,3,4}
      , {60, 1, 40,5, 8,3,4}
      //fandou che
      , {50, 1, 40, 5, 5,3,4}
      //wawa che
      , {10, 3, 40, 5, 5,3,4}
      //enemy tank one
      , {10, 1, 10, 4, 8,3,3}
      //enemy tank two
      , {10, 1, 20, 5, 8,3,3}
      //enemy tank three
      , {10, 1, 40, 4, 8,3,3}
      //boss one
      , {10, 3, 300, 5, 8,3,3}
      //boss two
      , {10, 1, 1000, 4, 5,3,3}


	  , {10, 1, 40, 4, 5,3,3}
	  , {10, 2, 20, 4, 5,3,3}
      , {10, 3, 30, 5, 5,3,3}
      , {30, 1, 40, 5, 5,3,3}
      , {50, 1, 40, 5, 5,3,3}
      , {10, 3, 40, 5, 5,3,3}
      , {10, 3, 10, 4, 5,3,3}
      , {10, 1, 20, 5, 5,3,3}
      , {10, 1, 40, 4, 5,3,3}
	  , {10, 1, 40, 4, 5,3,3}
  };



//bullet的属性 用户子弹 或者敌方tank的子弹
  public final static int USER_TANK_BULLET = 1;
  public final static int ENEMY_TANK_BULLET = 2;

  //bullet的类型
  public final static int BULLET_TYPE_COMMON=0;//普通子弹
  public final static int BULLET_TYPE_MISSILE=1;//跟踪导弹
  public final static int BULLET_TYPE_BABY=2;//
  //子弹的伤害值.
  public final static int BULLET_MISSILE_DAMAGE=30;
  public final static int BULLET_MISSILE_COUNT_PER=30;
  public final static int BULLET_MISSILE_COUNT_MAX=90;

  public final static int BULLET_MISSILE_PER_FIRE=3;//一次性发射3枚


//障碍物属性
  public final static int MAP_ELEMENT_PROPERTY_NUM = 4; //障碍物属性的个数

  public final static int MAP_ELEMENT_PROPERTY_BASIC_LIFE = 0;
  public final static int MAP_ELEMENT_PROPERTY_LIFE_LEFT = 1;
  public final static int MAP_ELEMENT_PROPERTY_ELEMENT_TYPE = 2;
  public final static int MAP_ELEMENT_PROPERTY_GRID_TYPE = 3;

//col/row/property
  public static int map_element[][][];

  public final static int MAP_ELEMENT_GRASS = 1; //草地
  public final static int MAP_ELEMENT_GRASS_RIVERSIDE = 2; //草地
  public final static int MAP_ELEMENT_GROUND = 3; //普通地面
  public final static int MAP_ELEMENT_GROUND_RIVERSIDE = 4; //河边的普通地面
  public final static int MAP_ELEMENT_WATER = 5; //水
  public final static int MAP_ELEMENT_ICE = 6; //冰地
  public final static int MAP_ELEMENT_ICE_RIVERSIDE = 7; //河边的冰地
  public final static int MAP_ELEMENT_BRUSHWOOD = 8;
  public final static int MAP_ELEMENT_FRAME_HOUSE = 9; //木屋
  public final static int MAP_ELEMENT_BUILDING_BLUE = 10; //楼房
  public final static int MAP_ELEMENT_BUILDING_RED = 11;
  public final static int MAP_ELEMENT_IRON = 12; //铁块
  public final static int MAP_ELEMENT_BRUSHWOOD_ROLLED = 13; //草被轧过

//游戏的难度
  public final static int GAME_LEVEL_EASY = 0;
  public final static int GAME_LEVEL_NORMAL = 1;
  public final static int GAME_LEVEL_HARD = 2;

  public final static int GAME_LEVEL_PROPERTY_ENEMY_NUM_ALL = 0;
  public final static int GAME_LEVEL_PROPERTY_ENEMY_NUM_PER = 1;

//游戏各个级别的不同属性 每关敌数/一次刷新敌数
  public static int game_level[][] = {
      {
      5, 3}
      , {
      25, 5}
      , {
      35, 5}
  };

  //current RMS record;
  private static int m_currentRecord;

//game objects
  public static TiledLayer m_warMap;
  private static Image m_wapMapImage;
  public static LayerManager m_layerManager;
  public static Graphics m_graphics;

//game 资源
  private static Image m_enemyTankImage;

  private static Image m_userTankImage_common;
  private static Image m_userTankImage_special;
  private static Image m_userTankImage_retired;
  private static Image m_userTankImage_baby;
  private static Image m_userTankImage_tiplorry;
  private static Image m_userTankImage_future;

  public static Image m_bombImage;//炸弹爆炸效果
  public static Image m_lighteningImage;
  public static Image m_bulletImage_missile;//跟踪导弹
  public static Image m_trackerImage;//跟踪导弹瞄准器
  public static Image m_bulletImage_bullet;
  public static Image m_bulletImage_baby;

  //use bomb scene
  private static Image m_planeImage;
  private static int m_currentPlaneFrame;
  public static boolean m_planeStarted;
  private final static int PLANE_MOVE_PIXELS=15;
  private final static int PLANE_X=0;
  private final static int PLANE_Y=MAP_CELL_HEIGHT+MAP_HEIGHT;
  private final static int PLANE_IMAGE_WIDTH=240;
  private final static int PLANE_IMAGE_HEIGHT=285;

  //tank appearance image
  private final static int NUM_OF_APPEAR_FRAMES=8;
  private final static int NUM_OF_BOMB_FRAMES=4;
  private static Image m_tankAppearImage;
  private static Sprite m_tankAppearImageSprite;
  private static int m_tankAppearFrame;//current frame;

  private final static int APPEAR_IMAGE_WIDTH=20;
  private final static int APPEAR_IMAGE_HEIGHT=20;


  private static int m_tankBombFrame;//current frame;
  private final static int BOMB_IMAGE_WIDTH = 20;
  private final static int BOMB_IMAGE_HEIGHT = 20;
  private final static int NUM_OF_BOMB_IMAGE = 4;

//司令部属性
  public final static int HEADQUARTERS_IMAGE_WIDTH = 40;
  public final static int HEADQUARTERS_IMAGE_HEIGHT = 20;
  public final static int HEADQUARTERS_IMAGE_LOCATION_X = (MAP_COLUM_NUM / 2 -
      1) * MAP_CELL_WIDTH;
  public final static int HEADQUARTERS_IMAGE_LOCATION_Y = MAP_HEIGHT;
  public final static int HEADQUARTERS_BASIC_BLOOD = 40;

  private static Image m_headquartersImage;

  private static Sprite m_headquarters;
  private static int m_headquartersBlood; //当前司令部的血量

  private static int m_GameState; //loop/end/ready etc

  public static int m_gameLevel=-1; //easy/normal/hard
  public static int m_gamePoints=-1;
  public static int m_currentStage=-1;
  public static int m_tankLives=-1;//lives during the progress of the game;

//属性包括出现的COL/ROW/当前位置是否有坦克
  public static int ENEMY_TANK_LOCATION_PROPERTY_COL = 0;
  public static int ENEMY_TANK_LOCATION_PROPERTY_ROW = 1;
  public static int ENEMY_TANK_LOCATION_PROPERTY_AVAILABLE = 2;
  public static int ENEMY_TANK_LOCATION_PROPERTY_DESTROYED_REASON = 3;

  public static int ENEMY_TANK_LOCATION_AVAILABLE_YES = 1;
  public static int ENEMY_TANK_LOCATION_AVAILABLE_NO = 0;

  //destroyed by landmine/destroyed by light/destroyed by bomb
  public final static int DESTROYED_BY_LANDMINE=1;
  public final static int DESTROYED_BY_LIGHT=2;
  public final static int DESTROYED_BY_BOMB=3;

//per num/property
  public static int m_enemyStartPlace[][] = {
      {
      0, 0, 0,0}
      , {
      MAP_COLUM_NUM / 2, 0, 0,0}
      , {
      MAP_COLUM_NUM - 1, 0, 0,0}
      , {
      0, MAP_ROW_NUM / 2, 0,0}
      , {
      MAP_COLUM_NUM - 1, MAP_ROW_NUM / 2, 0,0}
      , {
      0, MAP_ROW_NUM - 1, 0,0}
      , {
      MAP_COLUM_NUM - 1, MAP_ROW_NUM - 1, 0,0}
  };

  public static int m_tankType;
  public static TankSprite m_tank; //user tank
  public static TankSprite[] m_enemySprite; //敌方坦克根据难度不同,数量也不同

  private static int m_enemyDestoryed;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -