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

📄 actiongamecanvas.java~8~

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

public class ActionGameCanvas extends GameCanvas implements Runnable{
  GameMIDlet 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[] { 0, 1, 2, 3, 4 };     // seq 0, stand:0-4,
  int seqWalk[] = new int[] { 5, 6, 7, 8 };         // seq 3, right-walk :5-8
  int seqRun[] = new int[] { 9, 10, 11, 12 };       // seq 4, right-run:9-12,
  int seqJump[] = new int[] { 13, 14, 15, 16, 17 }; // seq 1, jump-up: 13-17,
  int seqLand[] = new int[] { 17, 18, 19, 20, 21 }; // seq 2, land-down(fire): 17-21,
  int seqAttack[] = new int[] { 22, 23, 24, 25, 26, 27 }; // seq 5,  attack: 22-27

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

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

  //===========================================================================
  public void initHero(){
    myHero = createSprite("/nghung.png", 74, 52);  // set frame size
    System.out.println("Create Sprite OK.");
    myHero.setFrameSequence( seqStand );       // SET frame sequence
    myHero.defineReferencePixel(37, 26);  // SET REF POINT, centre of frame
    myHero.setPosition(30, 30);           // 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("keycode = " + 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( seqJump );
         //currentSeq = 1;
       //}
       myHero.setPosition(myHero.getX(), myHero.getY() - heroStep);
    }
    else if ((keyStates & DOWN_PRESSED) != 0) {
      if (currentSeq != 2){
        myHero.setFrameSequence( seqLand );
        currentSeq = 2;
      }
       myHero.setPosition(myHero.getX(), myHero.getY() + heroStep);
    }

    //-----------------------------------------
    if ((keyStates & LEFT_PRESSED) != 0) {
      if (currentSeq != 3){
        myHero.setFrameSequence( seqWalk );
        currentSeq = 3;
      }
      if (heroDir==true){
        heroDir = false;
        myHero.setTransform(Sprite.TRANS_MIRROR);
      }
      myHero.setPosition(myHero.getX() - heroStep, myHero.getY());
    }
    else if ((keyStates & RIGHT_PRESSED) != 0) {
      if (currentSeq != 3){
        myHero.setFrameSequence( seqWalk );
        currentSeq = 3;
      }
      if (heroDir==false){
        heroDir = true;
        myHero.setTransform(Sprite.TRANS_NONE);
      }
      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 getInput() {
    int keystate = getKeyStates();
    switch(keystate){
      case UP_PRESSED:
        myHero.setPosition(myHero.getX(), myHero.getY() - heroStep);
        break;
      case DOWN_PRESSED:
        myHero.setPosition(myHero.getX(), myHero.getY() + heroStep);
        break;
      case LEFT_PRESSED:    // true for facing Right
        if (heroDir==true){
          heroDir = false;
          myHero.setTransform(Sprite.TRANS_MIRROR);
        }
        myHero.setPosition(myHero.getX() - heroStep, myHero.getY());
        break;
      case RIGHT_PRESSED:
        if (heroDir==false){
          heroDir = true;
          myHero.setTransform(Sprite.TRANS_NONE);
        }
        myHero.setPosition(myHero.getX() + heroStep, myHero.getY());
        break;
      case GAME_A_PRESSED:  // the num_7_key
        if (playSound==false)
          playSound=true;
        else
          playSound=false;
        playMIDI();
        break;
    }
  }  // 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(255,255,255);
    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("/MugDout.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 + -