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

📄 actiongamecanvasv2.java

📁 JAVA GAME it include collide detection
💻 JAVA
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;   // Use GameCanvas of MIDP 2.0
import javax.microedition.media.*;
import java.io.*;

public class ActionGameCanvasV2 extends GameCanvas implements Runnable{
  GameMIDletV2 gameParent;
  Thread actionThread;
  int millPerTick = 200;

  Sprite myHero;
  //boolean heroDir=true;   // true = Right
  int heroStep;    // movement pace distance
  int currentSeq = 0;
  int seqStand[] = new int[] { 7 };             // seq 0, stand:6-7,
  int seqUp[] = new int[] { 0, 1, 2 };          // seq 1, Up :0-2
  int seqRight[] = new int[] { 3, 4, 5 };       // seq 2, right :3-5,
  int seqDn[] = new int[] { 6, 7, 8 };          // seq 3, Down : 6-8,
  int seqLeft[] = new int[] { 9, 10, 11 };      // seq 4, Left : 9-11,

  LayerManager lm;
  Player player;            // for playing MIDI
  boolean playSound=false;

  //===========================================================================
  public ActionGameCanvasV2(GameMIDletV2 parent){
    super(true);  // disable keypressed() function
    setFullScreenMode(true);
    this.gameParent = parent;
    actionThread = new Thread(this);
    initCanvas();
    actionThread.start();
  }

  //===========================================================================
  public void initHero(){
    myHero = createSprite("/doraemon2.png", 24, 32);  // set frame size
    System.out.println("Create Sprite OK.");
    myHero.setFrameSequence( seqStand );      // SET frame sequence
    myHero.defineReferencePixel(12, 16);      // SET REF POINT, centre of frame
    myHero.setPosition(60, 60);               // set sprite position
    myHero.setRefPixelPosition(myHero.getRefPixelX(), myHero.getRefPixelY());
    heroStep = 5;
    //myHero.setFrame(0);
  }

  //===========================================================================
  public void initCanvas(){
    try{
      lm = new LayerManager();
      //-----------------
      initHero();
      lm.append(myHero);
      //-----------------
      //  other character put here !
    }catch (Exception e) {
      System.out.println("Exceiption here" + e.getMessage());
      e.printStackTrace();
    }
  }   // end-of  initHero()

  //===========================================================================
  public void getInput(){
    int keyStates = getKeyStates();
    //System.out.println("keyStates = " + keyStates);
    // reset character animation sequence to default
    if ( keyStates==0 && currentSeq!=0  ){
      myHero.setFrameSequence( seqStand );
      currentSeq = 0;
    }
    //-----------------------------------------
    if ((keyStates & UP_PRESSED) != 0) {
       if (currentSeq != 1){
         myHero.setFrameSequence( seqUp );
         currentSeq = 1;
       }
       myHero.setPosition(myHero.getX(), myHero.getY() - heroStep);
    }
    else if ((keyStates & DOWN_PRESSED) != 0) {
      if (currentSeq != 3){
        myHero.setFrameSequence( seqDn );
        currentSeq = 3;
      }
       myHero.setPosition(myHero.getX(), myHero.getY() + heroStep);
    }

    //-----------------------------------------
    if ((keyStates & LEFT_PRESSED) != 0) {
      if (currentSeq != 4){
        myHero.setFrameSequence( seqLeft );
        currentSeq = 4;
      }
      myHero.setPosition(myHero.getX() - heroStep, myHero.getY());
    }
    else if ((keyStates & RIGHT_PRESSED) != 0) {
      if (currentSeq != 2){
        myHero.setFrameSequence( seqRight );
        currentSeq = 2;
      }
      myHero.setPosition(myHero.getX() + heroStep, myHero.getY());
    }

    //-----------------------------------------
    //if ((keyStates & FIRE_PRESSED) != 0){
    //  if (currentSeq != 5){
    //    myHero.setFrameSequence( seqAttack );
    //    currentSeq = 5;
    //  }
    //}


    //-----------------------------------------
    if ((keyStates & GAME_A_PRESSED) != 0) {  // the num_7_key
      if (playSound == false)
        playSound = true;
      else
        playSound = false;
      playMIDI();
    }

  } // end of getInput()



  //===========================================================================
  public void keyPressed(int keyCode) {
    switch(getGameAction(keyCode)){
    }
    System.out.println("Key pressed.");
  }

  //===========================================================================
  private Sprite createSprite(String imgPath, int fWidth, int fHeight) {
    Image img = null;
    try {
      img = Image.createImage(imgPath);
    } catch (Exception e) {
      System.out.println("Error create Sprite");
    }
    return new Sprite(img, fWidth, fHeight);
  }

  //===========================================================================
  public void clearScreen(Graphics g){
    g.setColor(200,250,0);
    g.fillRect(0, 0, getWidth(), getHeight());
  }

  //===========================================================================
  public void drawGraphics(Graphics g) {
    clearScreen(g);
    myHero.setPosition(myHero.getX(), myHero.getY());
    myHero.nextFrame();
    // draw enemy here
    lm.paint(g, 0, 0);
    flushGraphics();
  }

  //===========================================================================
  public void run(){
    Graphics g = getGraphics();
    while (gameParent.running){
      // game running
      //updateEnemyPos();
      getInput();
      drawGraphics(g);
      try{
        Thread.sleep(millPerTick);
      } catch (InterruptedException e){
      }
    }  // end-of while-loop
  }  // end-of run()

  //===========================================================================
  public void playMIDI() {
    try {
      if (player == null) {
        InputStream is = getClass().getResourceAsStream("/doraemon.mid");
        player = Manager.createPlayer(is, "audio/midi");
       }
       if (playSound==true){
         player.start();
       }else{
         player.stop();
       }
    } catch (Exception e) {
    }
  }


}  // end-of ActionGameCanvas

⌨️ 快捷键说明

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