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

📄 gameoptions.java

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


      Graphics g=getGraphics();
      //stage
      DrawTools.XDrawImage(g,m_stageWordImage,STAGE_POS_X,STAGE_POS_Y,
                           0,0,STAGE_WORD_WIDTH,STAGE_WORD_HEIGHT);

      //get the tens digit
      int tenDigit=m_currentStage/10;
      int indDigit=m_currentStage%10;
      //draw digit
      DrawTools.XDrawImage(g,m_stageNumImage,STAGE_POS_X+STAGE_NUM_GAP,STAGE_POS_Y,
                           tenDigit*STAGE_NUM_WIDTH,0,STAGE_NUM_WIDTH,STAGE_NUM_HEIGHT);
      DrawTools.XDrawImage(g,m_stageNumImage,STAGE_POS_X+STAGE_NUM_GAP+STAGE_NUM_WIDTH,STAGE_POS_Y,
                           indDigit*STAGE_NUM_WIDTH,0,STAGE_NUM_WIDTH,STAGE_NUM_HEIGHT);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void displayPoints(){

    try {
      if(null== m_enemyImage){
     return;
   }

      int level=GameLogic.GAME_LEVEL_EASY;

      //draw rect
      //fill rect
      //draw seperate line
      //draw tank icons
      //draw points
      Graphics g=getGraphics();

      g.setColor(2,58,0);
      g.fillRect(REGION_X,REGION_Y,REGION_WIDTH,REGION_HEIGHT);
      //green
      g.setColor(14,151,12);
      g.drawRect(REGION_X,REGION_Y,REGION_WIDTH,REGION_HEIGHT);
      g.setStrokeStyle(Graphics.DOTTED);
      g.drawLine(SEPERATE_LINE_X,SEPERATE_LINE_Y,SEPERATE_LINE_X+SEPERATE_LINE_WIDTH,
                 SEPERATE_LINE_Y);
      //draw tank icons
      g.setColor(255,255,255);
      g.drawString("击毁坦克",39,114,DrawTools.ANCHOR_TOPLEFT);
      g.drawString("获得积分",147,114,DrawTools.ANCHOR_TOPLEFT);

      DrawTools.XDrawImage(g,m_enemyImage,38,127,0,0,20,20);
      DrawTools.XDrawImage(g,m_enemyImage,38,147,0,20,20,20);
      DrawTools.XDrawImage(g,m_enemyImage,38,167,0,40,20,20);

      DrawTools.XDrawImage(g,m_bottomIconImage,141,198,0,0,16,14);

      //draw 1x 2x 3x
      g.setColor(255,255,255);
      g.drawString("1",60,136,DrawTools.ANCHOR_TOPLEFT);
      g.drawString("2",60,156,DrawTools.ANCHOR_TOPLEFT);
      g.drawString("3",60,176,DrawTools.ANCHOR_TOPLEFT);
      g.drawString("x",69,136,DrawTools.ANCHOR_TOPLEFT);
      g.drawString("x",69,156,DrawTools.ANCHOR_TOPLEFT);
      g.drawString("x",69,176,DrawTools.ANCHOR_TOPLEFT);

      //draw points
      String enemyTankOne=Integer.toString(GameLogic.getEnemyTankOneCounts());
      String enemyTankTwo=Integer.toString(GameLogic.getEnemyTankTwoCounts());
      String enemyTankThree=Integer.toString(GameLogic.getEnemyTankThreeCounts());
      g.drawString(enemyTankOne,79,136,DrawTools.ANCHOR_TOPLEFT);
      g.drawString(enemyTankTwo,79,156,DrawTools.ANCHOR_TOPLEFT);
      g.drawString(enemyTankThree,79,176,DrawTools.ANCHOR_TOPLEFT);

      String enemyTankOnePoints = Integer.toString(GameLogic.POINTS_IN_GAME[
          GameLogic.EVENT_ENEMY_TANK_TYPE1_DESTROYED][level] *
          GameLogic.getEnemyTankOneCounts());
      String enemyTankTwoPoints = Integer.toString(GameLogic.POINTS_IN_GAME[
          GameLogic.EVENT_ENEMY_TANK_TYPE2_DESTROYED][level] *
          GameLogic.getEnemyTankTwoCounts());
      String enemyTankThreePoints = Integer.toString(GameLogic.POINTS_IN_GAME[
          GameLogic.EVENT_ENEMY_TANK_TYPE3_DESTROYED][level] *
          GameLogic.getEnemyTankThreeCounts());
      String totalPoints = Integer.toString(GameLogic.getTotalPoints());

      g.drawString(enemyTankOnePoints, 158, 136, DrawTools.ANCHOR_TOPLEFT);
      g.drawString(enemyTankTwoPoints, 158, 156, DrawTools.ANCHOR_TOPLEFT);
      g.drawString(enemyTankThreePoints, 158, 176, DrawTools.ANCHOR_TOPLEFT);
      g.drawString(totalPoints, 165, 201, DrawTools.ANCHOR_TOPLEFT);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void loadResource() {
    try {
      //background
      createBackground();
      //LSK/RSK button
      createButton();
      createStageAndPoints();
    }
    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);
    }
    displayStage();
    displayPoints();
    flushGraphics();
  }

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

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

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

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

    }
  }


  public static void stop(){
    if(m_layerManager==null){
      return;
    }

    //release all the resources
    m_threadAlive=false;
    releaseBackground();
    releaseButton();
    releaseStageAndPoints();

    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;
  }

  protected void keyPressed(int keyCode){
   // System.out.println(keyCode);
    String cmd=null;
    //1.if(current stage>RMS record) refresh the RMS record;refresh the GameLogic record;
    //2.if(current stage<=RMS record) only refresh the GameLogic record;

    if(DrawTools.KEY_CODE_LSK==keyCode||DrawTools.KEY_CODE_SELECT==keyCode){
      cmd="continue";
      if (m_currentRecord == 0) {

      }else{
        Appointment app=RMS.getRecord(GameLogic.RMS_NAME,m_currentRecord);
        if(app.m_curStage<=m_currentStage + 1){
          app.m_curStage=m_currentStage + 1;
        }
        app.m_curGamePoints=m_gamePoints;
     //   RMS.setRecord(GameLogic.RMS_NAME,m_currentRecord,app);
        app=null;
      }

      //update the RMS infomation needed by GameLogic
      GameLogic.updateGameInfo(m_currentRecord,-1,m_gamePoints,-1,-1,-1);

      stop();
      Navigator.flow(cmd);

    }else if(DrawTools.KEY_CODE_RSK==keyCode){
      cmd="factory";
      TankFactoryScreen.setCurrentRecord(m_currentRecord);
      stop();
      Navigator.flow(cmd);
    }
  }
}

class GameFailedScreen extends GameCanvas {
  private static GameFailedScreen instance;
  private static LayerManager m_layerManager;
  private static boolean m_threadAlive;

  private int m_currentMenuButtonIndex;
  //button sprite
  private static Sprite[] m_buttonSprite;
  private static Image m_buttonImage;
  //menu button
  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 Image m_backgroundImg; //背景
  private static Sprite m_backgroundImgSprite;
  private static Image m_panel; //上下PANEL
  private static Sprite[] m_panelSprite;

  private static Image m_title;

  //constant macro
  private final static int MENU_BUTTON_COUNTS=2;

  //width/height
  private final static int GAME_FAILED_WIDTH=149;
  private final static int GAME_FAILED_HEIGHT=43;

  //positon(x,y)
  private final static int MENU_BUTTON_X=63;
  private final static int MENU_BUTTON_Y=186;
  private final static int GAME_FAILED_X=45;
  private final static int GAME_FAILED_Y=104;

  private final static int[] chosenWordIndex = {
    DrawTools.MENU_BUTTON_WORD_INDEX_READ_CHOSEN,
    DrawTools.MENU_BUTTON_WORD_INDEX_BACKMENU_CHOSEN
   };

   private final static int[] unchosenWordIndex = {
       DrawTools.MENU_BUTTON_WORD_INDEX_READ_UNCHOSEN,
       DrawTools.MENU_BUTTON_WORD_INDEX_BACKMENU_UNCHOSEN
   };


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

  private GameFailedScreen() {
    super(false);
    m_threadAlive=true;
    m_layerManager = new LayerManager();
    setFullScreenMode(true);
    m_currentMenuButtonIndex=0;
    loadResource();
  }

  private static void releaseTitle(){
    try {
      m_title=null;
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void createTitle(){
    try {
      m_title=Image.createImage("/tank/map_res/game_failed.png");
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private static void releaseButton(){
    try {
      m_buttonImage=null;
      for (int i = 0; i < DrawTools.BUTTON_SPRITE_COUNTS; 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[DrawTools.BUTTON_SPRITE_COUNTS];
      for (int i = 0; i < DrawTools.BUTTON_SPRITE_COUNTS; i++) {
        m_buttonSprite[i] = new Sprite(m_buttonImage, DrawTools.BUTTON_IMAGE_WIDTH,
                                       DrawTools.BUTTON_IMAGE_HEIGHT);
        m_layerManager.insert(m_buttonSprite[i], 0);
      }

      m_buttonSprite[1].setVisible(false);

      int []buttonIndex={DrawTools.BUTTON_INDEX_CONFIRM,
      DrawTools.BUTTON_INDEX_EXIT};
      DrawTools.displayButton(m_buttonSprite,2,buttonIndex);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private static void releaseBackground(){
    try {
      m_backgroundImg = null;
      m_panel = null;
      if (null != m_backgroundImgSprite) {
        m_layerManager.remove(m_backgroundImgSprite);
        m_backgroundImgSprite = null;
      }

      for (int i = 0; i < DrawTools.PANEL_COUNTS; i++) {
        if (null != m_panelSprite && null != m_panelSprite[i]) {
          m_layerManager.remove(m_panelSprite[i]);
          m_panelSprite[i] = null;
        }
      }
      m_panelSprite=null;
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void createBackground() {
    try {
      m_backgroundImg = Image.createImage("/tank/map_res/tank_factory.png");
      m_panel = Image.createImage("/tank/map_res/bottom.png");

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

      m_panelSprite = new Sprite[DrawTools.PANEL_COUNTS];
      for (int i = 0; i < DrawTools.PANEL_COUNTS; i++) {
        m_panelSprite[i] = new Sprite(m_panel, DrawTools.PANEL_WIDTH,
                                      DrawTools.PANEL_HEIGHT);
        m_layerManager.insert(m_panelSprite[i], 0);
      }

      DrawTools.displayBackground(m_panelSprite, m_backgroundImgSprite);

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

  private static void releaseMenuButton(){
    try {
      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;
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void createMenuButton() {
    try {
      m_menuButtonImg = Image.createImage("/tank/map_res/menu_button.png");
      m_menuWordImg = Image.createImage("/tank/map_res/menu_word.png");
      //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,
                                              DrawTools.MENU_BUTTON_WIDTH,
                                              DrawTools.MENU_BUTTON_HEIGHT);
        m_layerManager.insert(m_menuButtonImgSprite[i], 0);
      }

      m_menuWordImgSprite=new Sprite[MENU_BUTTON_COUNTS];
      for (int i = 0; i < MENU_BUTTON_COUNTS; i++) {
        m_menuWordImgSprite[i]=new Sprite(m_menuWordImg,DrawTools.MENU_WORD_WIDTH,
                                          DrawTools.MENU_WORD_HEIGHT);
        m_layerManager.insert(m_menuWordImgSprite[i], 0);

⌨️ 快捷键说明

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