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

📄 gameoptions.java

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

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.lang.*;
import javax.microedition.lcdui.game.*;
import java.util.*;

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

  private static Font m_font;
  private static Graphics m_graphics;

  //background res
  private static Image m_backgroundImg; //背景
  private static Sprite m_backgroundImgSprite;
  public static Image m_panel; //上下PANEL
  private static Sprite[] m_panelSprite;
  //button res
  private static Sprite[] m_buttonSprite;
  private static Image m_buttonImage;

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


  private final static String[]aboutContent={
      "坦克突击2008","V1.0","@2008 TechFaith","www.techfaithsoftware.com;",
      "制作组;","制作人","吴志勇;","策划","吴明;","美术","顾颖玲;","程序","张恺毅"
  };
  private final static int CONTENT_X=GameLogic.MAP_WIDTH/2;
  private final static int CONTENT_Y=60;

  private final static int STRING_LINE_COUNTS=13;


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

  public static 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);
      }
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  public static 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);
      }

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



  private AboutTheGameScreen(){
    super(false);
    m_threadAlive=true;
    m_layerManager=new LayerManager();

    setFullScreenMode(true);
    m_font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);
    m_graphics=getGraphics();

    int []buttonIndex={DrawTools.BUTTON_INDEX_BACK};

    createBackground();
    createButton();
    DrawTools.displayBackground(m_panelSprite,m_backgroundImgSprite);
    DrawTools.displayButton(m_buttonSprite,1,buttonIndex);
  }

  private void displayAboutContent(Graphics g) {
    try {
      //white
      g.setColor(255,255,255);
      g.setFont(m_font);
      //1.if(find ;) draw y coodinate add 20 pixels and x remain unchanged
      //2. if(not find;)y coodinate add f.getHeight() pixels, and x remain unchanged;

      int posX=CONTENT_X;
      int posY=CONTENT_Y;
      for(int i=0;i<STRING_LINE_COUNTS;i++){
        g.drawString(aboutContent[i],posX,posY,Graphics.BASELINE|Graphics.HCENTER);
        if(-1!=aboutContent[i].indexOf(";")){
          posY+=20;
        }
        else{
          posY+=m_font.getHeight();
        }
      }
      g.setColor(0);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }


  protected void keyPressed(int keyCode){
    if(DrawTools.KEY_CODE_RSK==keyCode){
      String cmd="back";
      stop();
      Navigator.flow(cmd);
    }
  }

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

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

  public static void stop(){
    if(m_layerManager==null){
      return;
    }
    m_backgroundImg=null;
    m_panel=null;
    m_buttonImage=null;
    m_menuButtonImg=null;
    m_menuWordImg=null;

    //release all the resources
    m_threadAlive=false;

    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;

    System.gc();
  }

  public void run() {
    try {
      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);
      }

      displayAboutContent(g);
      flushGraphics();
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}

class StageClearScreen extends GameCanvas{
  private static StageClearScreen instance;
  private static LayerManager m_layerManager;
  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;

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

 //stage word
 private static Image m_stageWordImage;
 private static Image m_stageNumImage;
 private static Image m_enemyImage;
 private static Image m_bottomIconImage;

 private static int m_currentRecord;
 private static int m_currentStage;
 private static int m_gamePoints;

 //position(x,y)
 private final static int STAGE_POS_X=78;
 private final static int STAGE_POS_Y=63;
 private final static int STAGE_NUM_GAP=28;

 private final static int REGION_X=19;
 private final static int REGION_Y=98;

 private final static int SEPERATE_LINE_X=30;
 private final static int SEPERATE_LINE_Y=193;
 private final static int SEPERATE_LINE_WIDTH=180;

 //width/height
 private final static int STAGE_WORD_WIDTH=86;
 private final static int STAGE_WORD_HEIGHT=25;
 private final static int STAGE_NUM_WIDTH=17;
 private final static int STAGE_NUM_HEIGHT=21;

 private final static int REGION_WIDTH=204;
 private final static int REGION_HEIGHT=130;

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

  public static void setCurrentRecord(int record) {
    m_currentRecord = record;
  }

  public static void setCurrentStage(int stage) {
    m_currentStage = stage;
  }

  public static void setGamePoints(int points) {
    m_gamePoints = points;
  }

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

  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 releaseButton(){
    try {
      m_buttonImage=null;
      for (int i = 0; i < DrawTools.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[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);
      }

      int []buttonIndex={DrawTools.BUTTON_INDEX_CONTINUE,
          DrawTools.BUTTON_INDEX_FACTORY
      };

      DrawTools.displayButton(m_buttonSprite,2,buttonIndex);
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private static void releaseStageAndPoints(){
    try {
      m_stageWordImage=null;
      m_stageNumImage=null;
      m_enemyImage=null;
      m_bottomIconImage=null;
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void createStageAndPoints(){
    try {
      //stage_word.png
      m_stageWordImage=Image.createImage("/tank/map_res/stage_word.png");
      m_stageNumImage=Image.createImage("/tank/map_res/stage_num.png");
      m_enemyImage=Image.createImage("/tank/tank_res/enemy.png");
      m_bottomIconImage=Image.createImage("/tank/map_res/bottom_icon.png");
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  private void displayStage(){

    try {
      if(null==m_stageNumImage){

⌨️ 快捷键说明

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