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

📄 gameoptions.java

📁 这是我在原来单位的时候写的一个坦克大战的J2ME游戏的代码,可以给其他作J2ME游戏的人作个参考
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        m_layerManager.insert(m_menuWordImgSprite[i], 0);
      }

      DrawTools.displayMenuButton(
            m_menuButtonImgSprite,
            m_menuWordImgSprite,
            null,
            MENU_BUTTON_X,
            MENU_BUTTON_Y,
            -1,
            chosenWordIndex,
            unchosenWordIndex,
            m_currentMenuButtonIndex,
            MENU_BUTTON_COUNTS);


      m_currentMenuButtonIndex = 0;
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  public GameOptions() {
    super(false);
    m_threadAlive=true;
    loadResource();
  }

  private void displayMenuButton(){
    try {
      if(m_currentMenuButtonIndex>=MENU_BUTTON_COUNTS){
        m_currentMenuButtonIndex=MENU_BUTTON_COUNTS-1;
      }else if(m_currentMenuButtonIndex<=0){
        m_currentMenuButtonIndex=0;
      }
      //menu button/menu word全不选中
      for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
        m_menuButtonImgSprite[i].setFrame(MENU_BUTTON_INDEX_UNCHOSEN);
        m_menuWordImgSprite[i].setFrame(MENU_BUTTON_WORD_INDEX_POP_UNCHOSEN+i*2);
      }
      m_menuButtonImgSprite[m_currentMenuButtonIndex].setFrame(MENU_BUTTON_INDEX_CHOSEN);
      m_menuWordImgSprite[m_currentMenuButtonIndex].setFrame(MENU_BUTTON_WORD_INDEX_POP_CHOSEN+m_currentMenuButtonIndex*2);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void drawMenuRect(Graphics g) {

    try {
      g.setColor(127, 255, 0); //淡绿色
      g.drawRect(MENU_RECT_X, MENU_RECT_Y, MENU_RECT_WIDTH, MENU_RECT_HEIGHT);
      g.setColor(0, 0, 0);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private String getCmdString(int index){
    String cmd=null;
    switch(index){
      case 0:
        cmd="recommend";
        break;
      case 1:
        cmd="enterintowar";
        break;
      case 2:
        cmd="training";
        break;
      case 3:
        cmd="aboutthegame";
        break;
      default:
        break;
    }

    return cmd;
  }

  protected void showNotify(){
    try {
      if(m_threadAlive==false){
        m_threadAlive=true;
      }
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  //from show to pause
  protected void hideNotify(){
    try {
      m_threadAlive=false;
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  protected void keyPressed(int keyCode){
    //System.out.println(keyCode);
    String cmd=null;
    if (KEY_CODE_LSK == keyCode || DrawTools.KEY_CODE_SELECT == keyCode) {
      cmd = getCmdString(m_currentMenuButtonIndex);
      if (null == cmd) {
        return;
      }
      stop();
      Navigator.flow(cmd);
    }
    else if (KEY_CODE_RSK == keyCode) {
      cmd = "back";
      stop();
      Navigator.flow(cmd);
    }
    else if (DrawTools.KEY_CODE_UP == keyCode) {
      m_currentMenuButtonIndex--;
      if (m_currentMenuButtonIndex <= 0) {
        m_currentMenuButtonIndex = 0;
      }
      if (m_currentMenuButtonIndex >= MENU_BUTTON_COUNTS) {
        m_currentMenuButtonIndex = MENU_BUTTON_COUNTS - 1;
      }

      DrawTools.displayMenuButton(
            m_menuButtonImgSprite,
            m_menuWordImgSprite,
            null,
            MENU_BUTTON_X,
            MENU_BUTTON_Y,
            -1,
            chosenWordIndex,
            unchosenWordIndex,
            m_currentMenuButtonIndex,
            MENU_BUTTON_COUNTS);

    }
    else if (DrawTools.KEY_CODE_DOWN == keyCode) {
      m_currentMenuButtonIndex++;
      if (m_currentMenuButtonIndex <= 0) {
        m_currentMenuButtonIndex = 0;
      }
      if (m_currentMenuButtonIndex >= MENU_BUTTON_COUNTS) {
        m_currentMenuButtonIndex = MENU_BUTTON_COUNTS - 1;
      }

      DrawTools.displayMenuButton(
            m_menuButtonImgSprite,
            m_menuWordImgSprite,
            null,
            MENU_BUTTON_X,
            MENU_BUTTON_Y,
            -1,
            chosenWordIndex,
            unchosenWordIndex,
            m_currentMenuButtonIndex,
            MENU_BUTTON_COUNTS);

    }
  }

  protected void keyReleased(int keyCode) {
    //System.out.println(keyCode);
    if (KEY_CODE_LSK == keyCode) {

    }
    else if (KEY_CODE_RSK == keyCode) {
    }
  }

  private void input(){
    int keyState = getKeyStates();
    if((keyState & LEFT_PRESSED) != 0){

    }else if((keyState & RIGHT_PRESSED) != 0){

    }else if((keyState & UP_PRESSED) != 0){

    }else if((keyState & DOWN_PRESSED) != 0){
    }
  }

  public void run() {
    if(!m_threadAlive){
      return;
    }

    Graphics g=m_graphics;
    input();

    if(null!=m_layerManager){
      m_layerManager.paint(g,0,0);
    }

    //full screen refresh
    g.setClip(0, 0, getWidth(), getHeight());

    drawMenuRect(g);
    flushGraphics();
  }


  public static void pause(){
    m_threadAlive=true;
  }

  public static void stop(){
    //release all the resources
    m_threadAlive=false;
    releaseResources();
    System.gc();
  }

}

class ChooseTankScreen extends GameCanvas{
  private static ChooseTankScreen instance;
  private static LayerManager m_layerManager;
  private static boolean m_threadAlive;
  private static Graphics m_graphics;

  //title
  private String m_title;

  private static Image m_backgroundImg; //背景
  private static Sprite m_backgroundImgSprite;
  private static Image m_panel; //上下PANEL
  private static Sprite[] m_panelSprite;

  //button sprite
  private static Sprite[] m_buttonSprite;
  private static Image m_buttonImage;

  //titles
  private static Image m_titleImage;
  private static Sprite m_titleImageSprite;
  private static Image m_factoryIconImage;
  private static Sprite m_factoryIconImageSprite;

  //tank choice
  private static Image m_chooseTankImage;
  private static Sprite []m_chooseTankImageSprite;
  private static Sprite m_focusedSprite;
  private int m_tankType;

  //tank choice word
  private static Image m_chooseTankWordImage;

  //commander icon
  private static Image m_commanderIconImage;
  private static Sprite m_commanderIconImageSprite;

  private int m_currentFocusSprite;
  private int m_currentMaxSprite;//only the available tank can be choosen

  //titles
  private final static int TITLE_INDEX_CHOOSETANK=3;
  //index
  private final static int BUTTON_INDEX_CONFIRM = 0;
  private final static int BUTTON_INDEX_MENU = 1;
  private final static int BUTTON_INDEX_BACK = 2;
  private final static int BUTTON_INDEX_CONTINUE = 3;
  private final static int BUTTON_INDEX_EXIT = 4;

  private final static int TANK_CHOICE_INDEX_FOCUSED=0;
  private final static int TANK_CHOICE_INDEX_ONE=1;
  private final static int TANK_CHOICE_INDEX_TWO=2;
  private final static int TANK_CHOICE_INDEX_THREE=3;
  private final static int TANK_CHOICE_INDEX_RETIRED=4;
  private final static int TANK_CHOICE_INDEX_FUTURE1=5;
  private final static int TANK_CHOICE_INDEX_FUTURE2=6;
  private final static int TANK_CHOICE_INDEX_FUTURE3=7;

  private final static int KEY_CODE_LSK=-6;
  private final static int KEY_CODE_RSK=-7;

  private final static int POINTS_FUTURE_TANK=500000;

  //object width/height
  private final static int BACKGROUND_WIDTH = 240;
  private final static int BACKGROUND_HEIGHT = 280;
  private final static int PANEL_WIDTH = 240;
  private final static int PANEL_HEIGHT = 20;
  private final static int BUTTON_IMAGE_WIDTH=41;
  private final static int BUTTON_IMAGE_HEIGHT=17;
  private final static int TITLE_IMAGE_WIDTH = 82;
  private final static int TITLE_IMAGE_HEIGHT = 21;
  private final static int TITLE_ICON_IMAGE_WIDTH = 153;
  private final static int TITLE_ICON_IMAGE_HEIGHT = 37;

  private final static int COMMANDER_ICON_WIDTH=111;
  private final static int COMMANDER_ICON_HEIGHT=111;

  private final static int CHOOSE_TANK_IMAGE_WIDTH=66;
  private final static int CHOOSE_TANK_IMAGE_HEIGHT=66;

  private final static int CHOOSE_TANK_WORD_IMAGE_WIDTH=15;
  private final static int CHOOSE_TANK_WORD_IMAGE_HEIGHT=16;

  private final static int BULLET_WIDTH=3;
  private final static int BULLET_HEIGHT=7;
  private final static int BULLET_GAP=4;

  private final static int BULLET_BLOOD_GAP=16;
  private final static int BULLET_COLON_GAP=12;
  private final static int BULLET_LEVEL_GAP=20;

  //object counts
  private final static int PANEL_COUNTS = 2;
  private final static int QUESTION_MARK_COUNTS=5;
  private final static int BUTTON_SPRITE_COUNTS = 2;
  private final static int CHOOSE_TANK_SPRITE_COUNTS=4;

  private final static int ATTACK_RETIRED_TANK=1;//1X10
  private final static int ATTACK_FUTURE_TANK_ONE=3;//30X1
  private final static int ATTACK_FUTURE_TANK_TWO=5;//50X1
  private final static int ATTACK_FUTURE_TANK_THREE=3;//10X3

  private final static int BLOOD_RETIRED_TANK=1;//1X10
  private final static int BLOOD_FUTURE_TANK_ONE=4;//30X1
  private final static int BLOOD_FUTURE_TANK_TWO=4;//50X1
  private final static int BLOOD_FUTURE_TANK_THREE=4;//0X3

  //position constant
  private final static int LEFT_SOFTKEY_X = 16;
  private final static int LEFT_SOFTKEY_Y = 303;
  private final static int RIGHT_SOFTKEY_X = 185;
  private final static int RIGHT_SOFTKEY_Y = 303;
  private final static int TITLE_X = 86;
  private final static int TITLE_Y = 4;
  private final static int TITLE_ICON_X = 49;
  private final static int TITLE_ICON_Y = 2;

  private final static int COMMANDER_ICON_X=14;
  private final static int COMMANDER_ICON_Y=70;

  private final static int BULLET_ONE_X=192;
  private final static int BULLET_ONE_Y=75;
  private final static int BULLET_TWO_X=192;
  private final static int BULLET_TWO_Y=175;
  private final static int BULLET_THREE_X=130;
  private final static int BULLET_THREE_Y=230;
  private final static int BULLET_FOUR_X=26;
  private final static int BULLET_FOUR_Y=248;

  private final static int WORD_RETIRED_TANK_X=176;
  private final static int WORD_RETIRED_TANK_Y=50;
  private final static int WORD_FUTURE_TANK_ONE_X=190;
  private final static int WORD_FUTURE_TANK_ONE_Y=154;
  private final static int WORD_FUTURE_TANK_TWO_X=134;
  private final static int WORD_FUTURE_TANK_TWO_Y=214;
  private final static int WORD_FUTURE_TANK_THREE_X=42;
  private final static int WORD_FUTURE_TANK_THREE_Y=230;

  //tank choice icon start position
  private final static int CHOICE_ONE_X=128;
  private final static int CHOICE_ONE_Y=64;
  private final static int CHOICE_TWO_X=138;
  private final static int CHOICE_TWO_Y=134;
  private final static int CHOICE_THREE_X=90;
  private final static int CHOICE_THREE_Y=184;
  private final static int CHOICE_FOUR_X=16;
  private final static int CHOICE_FOUR_Y=188;

  //BLOOD LEVEL /attack level position
  private final static int ATTACK_LEVEL_X=54;
  private final static int ATTACK_LEVEL_Y=3;
  private final static int BLOOD_LEVEL_X=70;
  private final static int BLOOD_LEVEL_Y=3;

//LOAD RECORD/NEW GAME


  synchronized public static ChooseTankScreen getInstance() {
    if (instance == null)
      instance = new ChooseTankScreen();
    return instance;
  }

  private void loadResource() {
    try {
      m_graphics=getGraphics();
      createBackground();
      createButton();
      createTitle(TITLE_INDEX_CHOOSETANK);
      createTankChoice();
      createTankParam();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

 private int getGamePoints(){
   try {

   }
   catch (Exception ex) {
     ex.printStackTrace();
   }

⌨️ 快捷键说明

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