📄 battlecanvas.java
字号:
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 + -