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

📄 gameoptions.java

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


  private void loadResource() {
    try {
      createButton();
      createBackground();
      createMenuButton();
      createTitle();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void input(){
    int keyState = getKeyStates();
    String cmd=null;
    if((keyState & LEFT_PRESSED) != 0){
      cmd="确定";
      Navigator.flow(cmd);
    }else if((keyState & RIGHT_PRESSED) != 0){
      cmd="返回";
      Navigator.flow(cmd);
    }else if((keyState & UP_PRESSED) != 0){
      m_currentMenuButtonIndex--;
      if(m_currentMenuButtonIndex<=0){
        m_currentMenuButtonIndex=0;
      }
    }else if((keyState & DOWN_PRESSED) != 0){
      m_currentMenuButtonIndex++;
      if(m_currentMenuButtonIndex>=2){
        m_currentMenuButtonIndex=1;
      }
    }
  }

  protected void keyPressed(int keyCode){
   // System.out.println(keyCode);
    String cmd=null;
    if(DrawTools.KEY_CODE_LSK==keyCode||DrawTools.KEY_CODE_SELECT==keyCode){
      if(m_currentMenuButtonIndex==0){
        cmd="readrecord";
      }else if(m_currentMenuButtonIndex==1){
        cmd="backmenu";
      }
      Navigator.flow(cmd);
    }
  }

  private static void releaseResources(){
    try {
      if(m_layerManager==null){
      return;
    }

      releaseTitle();
      releaseButton();
      releaseBackground();
      releaseMenuButton();

      for(int i = 0; i < m_layerManager.getSize(); i++){
        Layer layer = m_layerManager.getLayerAt(i);
        if(null!=layer){
          m_layerManager.remove(layer);
          layer=null;
        }
      }

      m_layerManager=null;
      instance=null;
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  public static void stop(){
    try {
      m_threadAlive=false;
      releaseResources();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }


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





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

    Graphics g = getGraphics();
    g.setColor(255, 255, 255); //绘图色为白色 清屏
    g.fillRect(0, 0, getWidth(), getHeight());
    g.setColor(0, 0, 0); //绘图色变成黑色,用来画字符串



    input();

    if(null!=m_layerManager){
       m_layerManager.paint(g, 0, 0);
    }
    DrawTools.displayMenuButton(
        m_menuButtonImgSprite,
        m_menuWordImgSprite,
        null,
        MENU_BUTTON_X,
        MENU_BUTTON_Y,
        -1,
        chosenWordIndex,
        unchosenWordIndex,
        m_currentMenuButtonIndex,
        MENU_BUTTON_COUNTS);
      if(null!=m_title){
        DrawTools.XDrawImage(g,m_title,GAME_FAILED_X,GAME_FAILED_Y,0,0,GAME_FAILED_WIDTH,
                           GAME_FAILED_HEIGHT);
      }

    flushGraphics();
  }
}

//menu handling class
public class GameOptions  extends GameCanvas{
  private static GameOptions instance;

  private static LayerManager m_layerManager;
  private static Graphics m_graphics;
  private static boolean m_threadAlive;
  //图片资源
  private static Image m_backgroundImg; //背景
  private static Sprite m_backgroundImgSprite;
  private static Image m_panel; //上下PANEL
  private static Sprite m_panelSprite;

  private static Image m_menuButtonImg; //menu_button.png
  private static Image m_menuWordImg; //
  private static Sprite[] m_menuWordImgSprite;
  private static Sprite[] m_menuButtonImgSprite;

  private static Sprite m_menuBackgroundSprite;

  private static Image m_bgTitleImage;


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

  private int m_currentMenuButtonIndex;

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

  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 MENU_BUTTON_INDEX_CHOSEN=0;
  private final static int MENU_BUTTON_INDEX_UNCHOSEN=1;

  //button menu word
  private final static int MENU_BUTTON_WORD_INDEX_POP_CHOSEN=0;
  private final static int MENU_BUTTON_WORD_INDEX_POP_UNCHOSEN=1;
  private final static int MENU_BUTTON_WORD_INDEX_WAR_CHOSEN=2;
  private final static int MENU_BUTTON_WORD_INDEX_WAR_UNCHOSEN=3;
  private final static int MENU_BUTTON_WORD_INDEX_MUSIC_CHOSEN=4;
  private final static int MENU_BUTTON_WORD_INDEX_NUSIC_UNCHOSEN=5;
  private final static int MENU_BUTTON_WORD_INDEX_TRAINING_CHOSEN=6;
  private final static int MENU_BUTTON_WORD_INDEX_TRAINING_UNCHOSEN=7;

//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 MENU_RECT_X =106;
  private final static int MENU_RECT_Y =180;
  private final static int MENU_BUTTON_X=112;
  private final static int MENU_BUTTON_Y=186;

  private final static int PANEL_X=0;
  private final static int PANEL_Y=301;

  private final static int MENU_BUTTON_GAP=4;//二个MENU BUTTON之间的高度

  //object width/height
  private final static int BACKGROUND_WIDTH=240;
  private final static int BACKGROUND_HEIGHT=320;
  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 MENU_RECT_WIDTH=116;
  private final static int MENU_RECT_HEIGHT=106;
  private final static int MENU_BUTTON_WIDTH=106;
  private final static int MENU_BUTTON_HEIGHT=20;
  private final static int MENU_WORD_WIDTH=60;
  private final static int MENU_WORD_HEIGHT=20;
  //object counts
  private final static int PANEL_COUNTS=2;
  private final static int BUTTON_SPRITE_COUNTS=2;
  private final static int MENU_BUTTON_COUNTS=4;


  static int[] chosenWordIndex = {
       DrawTools.MENU_BUTTON_WORD_INDEX_POP_CHOSEN,
       DrawTools.MENU_BUTTON_WORD_INDEX_WAR_CHOSEN,
       DrawTools.MENU_BUTTON_WORD_INDEX_TRAINING_CHOSEN,
       DrawTools.MENU_BUTTON_WORD_INDEX_ABOUTGAME_CHOSEN
   };
    static int[] unchosenWordIndex = {
       DrawTools.MENU_BUTTON_WORD_INDEX_POP_UNCHOSEN,
       DrawTools.MENU_BUTTON_WORD_INDEX_WAR_UNCHOSEN,
       DrawTools.MENU_BUTTON_WORD_INDEX_TRAINING_UNCHOSEN,
       DrawTools.MENU_BUTTON_WORD_INDEX_ABOUTGAME_UNCHOSEN
   };


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

  private static void releaseBackground() {
    try {
      m_backgroundImg = null;
      m_panel=null;
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }

  }

  private void createBackground() {
    try {
      Graphics g=getGraphics();

      m_backgroundImg = Image.createImage("/tank/map_res/mainscreen.png");
      m_panel=Image.createImage("/tank/map_res/bottom.png");

      m_backgroundImgSprite = new Sprite(m_backgroundImg, BACKGROUND_WIDTH,
                                         BACKGROUND_HEIGHT);
      m_layerManager.insert(m_backgroundImgSprite, 0);
      m_backgroundImgSprite.setRefPixelPosition(0,0);

      m_panelSprite=new Sprite(m_panel,PANEL_WIDTH,PANEL_HEIGHT);
      m_layerManager.insert(m_panelSprite, 0);
      m_panelSprite.setFrame(1);
      m_panelSprite.setRefPixelPosition(PANEL_X,PANEL_Y);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private static void releaseButton(){
    try {
      m_buttonImage = null;
      for (int i = 0; i < BUTTON_SPRITE_COUNTS; i++) {
        if (null != m_buttonSprite && null != m_buttonSprite[i]) {
          m_layerManager.remove(m_buttonSprite[i]);
          m_buttonSprite[i] = null;
        }
      }
      m_buttonSprite = null;
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void createButton() {
    try {
       m_buttonImage = Image.createImage("/tank/map_res/factory_bottom_word.png");
      //button,确定/返回
      m_buttonSprite = new Sprite[BUTTON_SPRITE_COUNTS];
      for (int i = 0; i < BUTTON_SPRITE_COUNTS; i++) {
        m_buttonSprite[i] = new Sprite(m_buttonImage, BUTTON_IMAGE_WIDTH,
                                       BUTTON_IMAGE_HEIGHT);
        m_layerManager.insert(m_buttonSprite[i], 0);
      }

      int []buttonIndex={DrawTools.BUTTON_INDEX_CONFIRM,DrawTools.BUTTON_INDEX_BACK};
      DrawTools.displayButton(m_buttonSprite,2,buttonIndex);

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

  private static void releaseResources(){
    try {
      if(m_layerManager==null){
        return;
      }
      m_graphics=null;
      releaseBackground();
      releaseButton();
      m_menuButtonImg=null;
      m_menuWordImg=null;
      for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
        if (null != m_menuButtonImgSprite && null != m_menuButtonImgSprite[i]) {
          m_layerManager.remove(m_menuButtonImgSprite[i]);
          m_menuButtonImgSprite[i] = null;
        }
      }
      m_menuButtonImgSprite=null;
      for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
        if (null != m_menuWordImgSprite && null != m_menuWordImgSprite[i]) {
          m_layerManager.remove(m_menuWordImgSprite[i]);
          m_menuWordImgSprite[i] = null;
        }
      }
      m_menuWordImgSprite=null;

      for(int i = 0; i < m_layerManager.getSize(); i++){
        Layer layer = m_layerManager.getLayerAt(i);
        if(null!=layer){
          m_layerManager.remove(layer);
          layer=null;
        }
      }


      m_layerManager=null;
      instance=null;
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void loadResource() {
    try {
      m_layerManager = new LayerManager();
      m_graphics=getGraphics();
      setFullScreenMode(true);
      
      /**
       * 1.play bg.midi when entering into the game options
       * 2.play bg.midi when returning from battle;
       */
      if(null== GameLogic.m_player){
    	  GameLogic.m_player=new LPAudioPlayer("/tank/bg.mid","audio/midi");
    	  if(GameLogic.m_soundOn==true){
    		  GameLogic.m_player.threadPlay();
    	  }	  
      }

      m_menuButtonImg = Image.createImage("/tank/map_res/menu_button.png");
      m_menuWordImg = Image.createImage("/tank/map_res/menu_word.png");

      createBackground();//top/bottom panel/background
      createButton();


      //green background for menu button
     Image menuBKImage=Image.createImage(MENU_RECT_WIDTH,MENU_RECT_HEIGHT);
     m_menuBackgroundSprite=new Sprite(menuBKImage,MENU_RECT_WIDTH,MENU_RECT_HEIGHT);
     m_menuBackgroundSprite.setRefPixelPosition(MENU_RECT_X,MENU_RECT_Y);
     m_layerManager.insert(m_menuBackgroundSprite,0);
     Graphics g=menuBKImage.getGraphics();
     g.setColor(2,56,0);
     g.fillRect(0,0,MENU_RECT_WIDTH,MENU_RECT_HEIGHT);
     g=null;
     menuBKImage=null;


      //MENU BUTTON
      m_menuButtonImgSprite = new Sprite[MENU_BUTTON_COUNTS];
      for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
        m_menuButtonImgSprite[i] = new Sprite(m_menuButtonImg,
                                              MENU_BUTTON_WIDTH,
                                              MENU_BUTTON_HEIGHT);
        m_layerManager.insert(m_menuButtonImgSprite[i], 0);
      }

      //menu button word
      m_menuWordImgSprite=new Sprite[MENU_BUTTON_COUNTS];
      for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
        m_menuWordImgSprite[i]=new Sprite(m_menuWordImg,MENU_WORD_WIDTH,MENU_WORD_HEIGHT);

⌨️ 快捷键说明

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