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

📄 drawtools.java

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

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
//RMS related
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import java.io.ByteArrayInputStream; //要使用到的各种输入输出流
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;

import javax.microedition.media.*;
import javax.microedition.media.control.*;

import java.io.*;


import  java.util.*;
import  java.lang.*;

public class DrawTools {
  private static int m_switchIndex[]=new int[2];


  //constant macro
  final static public int ANCHOR_TOPLEFT = Graphics.TOP | Graphics.LEFT;
  public final static int BUTTON_SPRITE_COUNTS = 2;
  public final static int PANEL_COUNTS=2;
  private final static int MENU_BUTTON_COUNTS = 5;

  public final static int KEY_CODE_UP=-1;
  public final static int KEY_CODE_DOWN=-2;
  public final static int KEY_CODE_SELECT=-5;
  public final static int KEY_CODE_LSK=-6;
  public final static int KEY_CODE_RSK=-7;

  //switch word
  public final static int SWITCH_WORD_COUNTS=2;
  public final static int SWITCH_WORD_WIDTH=15;
  public final static int SWITCH_WORD_HEIGHT=15;

  public final static int SWITCH_LINE_FOCUSED=0;
  public final static int SWITCH_OPEN_FOCUSED=1;
  public final static int SWITCH_CLOSE_FOCUSED=2;
  public final static int SWITCH_LINE_UNFOCUSED=3;
  public final static int SWITCH_OPEN_UNFOCUSED=4;
  public final static int SWITCH_CLOSE_UNFOCUSED=5;

  public final static int SWITCH_OPEN=1;
  public final static int SWITCH_CLOSE=2;



  //object width/height
  public final static int BUTTON_IMAGE_WIDTH = 41;
  public final static int BUTTON_IMAGE_HEIGHT = 17;
  public final static int BACKGROUND_WIDTH = 240;
  public final static int BACKGROUND_HEIGHT = 280;
  public final static int PANEL_WIDTH=240;
  public final static int PANEL_HEIGHT=20;
  //menu_button.png
  public final static int MENU_BUTTON_WIDTH=106;
  public final static int MENU_BUTTON_HEIGHT=20;
  private final static int MENU_BUTTON_GAP=4;//二个MENU BUTTON之间的高度
  //menu_word.png
  public final static int MENU_WORD_WIDTH=60;
  public final static int MENU_WORD_HEIGHT=20;

  //factory_property.png
  public final static int PROPERTY_WIDTH=28;
  public final static int PROPERTY_HEIGHT=28;

  //enemy_num.png
  public final static int ENEMY_NUM_WIDTH=7;
  public final static int ENEMY_NUM_HEIGHT=10;

  //progress.png
  public final static int PROGRESS_BAR_WIDTH=196;
  public final static int PROGRESS_BAR_HEIGHT=16;

  public final static int PROGRESS_MISSILE_WIDTH=211;
  public final static int PROGRESS_MISSILE_HEIGHT=12;

  private final static int PROGRESS_BAR_X=23;
  private final static int PROGRESS_BAR_Y=152;

  //object index


  //index in menu_button.png
  public final static int MENU_BUTTON_INDEX_CHOSEN=0;
  public final static int MENU_BUTTON_INDEX_UNCHOSEN=1;
  //index in menu_word.png
  public final static int MENU_BUTTON_WORD_INDEX_POP_CHOSEN=0;
  public final static int MENU_BUTTON_WORD_INDEX_POP_UNCHOSEN=1;
  public final static int MENU_BUTTON_WORD_INDEX_WAR_CHOSEN=2;
  public final static int MENU_BUTTON_WORD_INDEX_WAR_UNCHOSEN=3;
  public final static int MENU_BUTTON_WORD_INDEX_MUSIC_CHOSEN=4;
  public final static int MENU_BUTTON_WORD_INDEX_NUSIC_UNCHOSEN=5;
  public final static int MENU_BUTTON_WORD_INDEX_TRAINING_CHOSEN=6;
  public final static int MENU_BUTTON_WORD_INDEX_TRAINING_UNCHOSEN=7;
  public final static int MENU_BUTTON_WORD_INDEX_BACKWAR_CHOSEN=8;
  public final static int MENU_BUTTON_WORD_INDEX_BACKWAR_UNCHOSEN=9;
  public final static int MENU_BUTTON_WORD_INDEX_LOAD_CHOSEN=10;
  public final static int MENU_BUTTON_WORD_INDEX_LOAD_UNCHOSEN=11;
  public final static int MENU_BUTTON_WORD_INDEX_MAINMENU_CHOSEN=12;
  public final static int MENU_BUTTON_WORD_INDEX_MAINMENU_UNCHOSEN=13;
  public final static int MENU_BUTTON_WORD_INDEX_LOADDOC_CHOSEN=14;
  public final static int MENU_BUTTON_WORD_INDEX_LOADDOC_UNCHOSEN=15;
  public final static int MENU_BUTTON_WORD_INDEX_BACKMENU_CHOSEN=16;
  public final static int MENU_BUTTON_WORD_INDEX_BACKMENU_UNCHOSEN=17;
  public final static int MENU_BUTTON_WORD_INDEX_READ_CHOSEN=18;
  public final static int MENU_BUTTON_WORD_INDEX_READ_UNCHOSEN=19;
  public final static int MENU_BUTTON_WORD_INDEX_ABOUTGAME_CHOSEN=20;
  public final static int MENU_BUTTON_WORD_INDEX_ABOUTGAME_UNCHOSEN=21;


  //index in factory_icon_word.png
  public final static int TITLE_INDEX_CHOOSETANK=3;
  public final static int TITLE_INDEX_SAVERECORD=2;
  public final static int TITLE_INDEX_LOADRECORD=7;
  public final static int TITLE_INDEX_ENTERINTOWAR=4;

//index in factory_bottom_word.png
  public final static int BUTTON_INDEX_CONFIRM = 0;
  public final static int BUTTON_INDEX_MENU = 1;
  public final static int BUTTON_INDEX_BACK = 2;
  public final static int BUTTON_INDEX_CONTINUE = 3;
  public final static int BUTTON_INDEX_EXIT = 4;
  public final static int BUTTON_INDEX_FACTORY = 5;
  public final static int BUTTON_INDEX_SKIP = 6;
  public final static int BUTTON_INDEX_SAVE = 7;

  //index in factory_property.png
  public final static int PROPERTY_INDEX_UP_PRESSED = 14;
  public final static int PROPERTY_INDEX_UP = 10;
  public final static int PROPERTY_INDEX_DOWN_PRESSED = 15;
  public final static int PROPERTY_INDEX_DOWN = 11;
  public final static int PROPERTY_INDEX_LEFT_PRESSED = 16;
  public final static int PROPERTY_INDEX_LEFT = 12;
  public final static int PROPERTY_INDEX_RIGHT_PRESSED = 17;
  public final static int PROPERTY_INDEX_RIGHT = 13;
  public final static int PROPERTY_INDEX_FOCUSED = 0;
  public final static int PROPERTY_INDEX_UNFOCUSED = 1;
  public final static int PROPERTY_INDEX_PROPERTY = 18;
  public final static int PROPERTY_INDEX_OPERATE = 19;

  //index in enemy_num.png


  //object positon(x,y)
  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;

 
  public static void displayButton(Sprite[] m_buttonSprite,int buttonCounts,int[]buttonIndex) {
    try {
      if (2 == buttonCounts) {
        if(false==m_buttonSprite[0].isVisible()){
          m_buttonSprite[0].setVisible(true);
        }
        if(false==m_buttonSprite[1].isVisible()){
          m_buttonSprite[1].setVisible(true);
        }

        m_buttonSprite[0].setFrame(buttonIndex[0]);
        m_buttonSprite[0].setRefPixelPosition(LEFT_SOFTKEY_X, LEFT_SOFTKEY_Y);
        m_buttonSprite[1].setFrame(buttonIndex[1]);
        m_buttonSprite[1].setRefPixelPosition(RIGHT_SOFTKEY_X, RIGHT_SOFTKEY_Y);
      }else if(1==buttonCounts){
        if(false==m_buttonSprite[1].isVisible()){
          m_buttonSprite[1].setVisible(true);
        }
        if(true==m_buttonSprite[0].isVisible()){
          m_buttonSprite[0].setVisible(false);
        }
        m_buttonSprite[1].setFrame(buttonIndex[0]);
        m_buttonSprite[1].setRefPixelPosition(RIGHT_SOFTKEY_X, RIGHT_SOFTKEY_Y);
      }

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


   public static void displayBackground(Sprite[]m_panelSprite,Sprite m_backgroundImgSprite){
     try {
       m_backgroundImgSprite.setRefPixelPosition(0, DrawTools.PANEL_HEIGHT);
       for (int i = 0; i < PANEL_COUNTS; i++) {
          m_panelSprite[i].setFrame(i);
       }
       m_panelSprite[0].setRefPixelPosition(0, 0);
       m_panelSprite[1].setRefPixelPosition(0, BACKGROUND_HEIGHT + PANEL_HEIGHT);
     }
     catch (Exception ex) {
       ex.printStackTrace();
     }
   }


   public static void displayProgressBarScreen(Graphics g,
                                                Image m_panel,
                                                Image m_backgroundImg,
                                                Image prgressBar,
                                                Image progressMissile,
                                                int percent){
      System.gc();
     try {
       if(percent>=100){
         percent=100;
       }
       int pos = (percent*PROGRESS_BAR_WIDTH)/100;
       //1.draw panel
       //2.draw progress_missile and progress bar image;
       //3.draw background image
       DrawTools.XDrawImage(g,m_panel,0,0,0,0,PANEL_WIDTH,PANEL_HEIGHT);
       DrawTools.XDrawImage(g,m_panel,0,BACKGROUND_HEIGHT + PANEL_HEIGHT,0,PANEL_HEIGHT,PANEL_WIDTH,PANEL_HEIGHT);

       DrawTools.XDrawImage(g,m_backgroundImg,0,PANEL_HEIGHT,0,0,GameLogic.MAP_WIDTH,GameLogic.MAP_HEIGHT);

       //draw progress bar
       DrawTools.XDrawImage(g,prgressBar,PROGRESS_BAR_X,PROGRESS_BAR_Y,0,0,PROGRESS_BAR_WIDTH,PROGRESS_BAR_HEIGHT);
       //draw missile progress
       DrawTools.XDrawImage(g,progressMissile,PROGRESS_BAR_X,PROGRESS_BAR_Y+2,PROGRESS_MISSILE_WIDTH-pos,0,pos,PROGRESS_MISSILE_HEIGHT);

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

   public static  void createMenuButton(LayerManager m_layerManager,
   	Sprite[] m_menuWordImgSprite,
   	Sprite[] m_menuButtonImgSprite,
   	Image m_menuButtonImg,
   	Image m_menuWordImg) {
    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_menuButtonImgSprite[i].setVisible(false);
        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_menuWordImgSprite[i].setVisible(false);
        m_layerManager.insert(m_menuWordImgSprite[i], 0);
      }

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




  public static void displayMenuButton(Sprite[] m_menuButtonImgSprite,
                                       Sprite[] m_menuWordImgSprite,
                                       Sprite[] m_switchImgSprite,
                                       int menuButtonPosX,
                                       int menuButtonPosY,
                                       int switchState,
                                       int[] chosenWordIndex,
                                       int[] unchosenWordIndex,
                                       int m_currentMenuButtonIndex,
                                       int menuButtonCounts) {

    try {
      if (null == m_menuButtonImgSprite || null == m_menuWordImgSprite) {
        return;
      }


      if (m_currentMenuButtonIndex >= menuButtonCounts) {
        m_currentMenuButtonIndex = menuButtonCounts - 1;
      }
      else if (m_currentMenuButtonIndex <= 0) {
        m_currentMenuButtonIndex = 0;
      }
      //menu button/menu word全不选中
      for (int i = 0; i < menuButtonCounts; i++) {
        if (false == m_menuButtonImgSprite[i].isVisible()) {
          m_menuButtonImgSprite[i].setVisible(true);
        }
        m_menuButtonImgSprite[i].setFrame(MENU_BUTTON_INDEX_UNCHOSEN);
        m_menuButtonImgSprite[i].setRefPixelPosition(menuButtonPosX,
            menuButtonPosY + i * (MENU_BUTTON_HEIGHT + MENU_BUTTON_GAP));

        if (false == m_menuWordImgSprite[i].isVisible()) {
          m_menuWordImgSprite[i].setVisible(true);
        }
        m_menuWordImgSprite[i].setFrame(unchosenWordIndex[i]);
        m_menuWordImgSprite[i].setRefPixelPosition(menuButtonPosX,
            menuButtonPosY + i * (MENU_BUTTON_HEIGHT + MENU_BUTTON_GAP));

        if (MENU_BUTTON_WORD_INDEX_MUSIC_CHOSEN == chosenWordIndex[i]) {
          if(false == m_switchImgSprite[0].isVisible()){
            m_switchImgSprite[0].setVisible(true);
          }
          if(false == m_switchImgSprite[1].isVisible()){
            m_switchImgSprite[1].setVisible(true);
          }

          getMusicState(switchState,false);
          //display "-"
          m_switchImgSprite[0].setFrame(m_switchIndex[0]);

⌨️ 快捷键说明

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