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

📄 player.java

📁 基于java的一款游戏的故事。基于java的一款游戏的故事。基于java的一款游戏的故事。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.thinkenjoy.feitian;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

import com.thinkenjoy.control.Control;
import com.thinkenjoy.control.ThreadCanvas;
import com.thinkenjoy.tools.ImageSet;
import com.thinkenjoy.tools.Tools;
import com.thinkenjoy.feitian.screen.PlayScreen;

/**
 *
 * 玩家
 */
public class Player extends FightingObject {
  int num = 0;
  public int bulletPower;
  /**
   * 玩家的最大血量
   */
  private static final int MAX_ENERGY = 100;

  /**
   * 玩家的最大命条数
   */
  private static  int MAX_LIFE = 3;

  /**
   * 玩家再生时的相应状态的持续时间
   */
  private static final int DELAY_INITIAL = 40;

  /**
   * 主角的索引值
   */
  private static final int HUMAN = 0;

  public static final int BOUND_OFFSETX = 9;

  public static final int BOUND_OFFSETY = 8;

  /**
   * 玩家的图片序列
   */
  public static ImageSet playerImageSet;
  public static ImageSet bombImageSet;
  public static ImageSet headImageSet;
  public static ImageSet numberImageSet;

  /**
   * 用来记录玩家的X轴初始速度,以作它用
   */
  protected int DEFAULT_SPEED;

  /**
   * 玩家从左边初始化出来时,应有段时间自动滑出,并有段时间为不可操作且无敌状态
   */
  public int delayInitial;

  /**
   * 辅助弹1的发射时间延迟
   */
  protected int delayAssistantShoot1;

  /**
   * 辅助弹2的发射时间延迟
   */
  protected int delayAssistantShoot2;

  /**
   * 命
   */
  protected int life;

  /**
   * 分
   */
  protected int score;

  /**
   * 是否处于灵弹爆炸状态
   */
  public boolean isBombState;

  /**
   * 玩家处于灵弹爆炸状态,在这段时间内玩家为不可操作且无敌状态
   */
  public int delayBomb;

  /**
   * 灵弹效果下的爆炸频度
   */
  private int bombFrequence;

  /**
   * 灵弹点数,每30点可换一个灵弹
   */
  private int bombPoint;

  /**
   * 灵弹数
   */
  private int bombNum;

  private boolean isAutoFire;

  /**
   * 无敌状态下的闪烁延迟
   */
  private int delayShieldFlash;

  /**
   * 构造一个Player类,并初始化基本的数据
   *
   * @param type 角色类型
   * @param hitPow
   * @param speedX X轴移动速度
   * @param speedY Y轴移动速度
   * @param locX
   * @param locY
   * @param width  角色宽
   * @param height 角色高
   */
  public Player(int type, int hitPow, int speedX, int speedY, int locX,
      int locY, int width, int height) {

    super(type, hitPow, speedX, speedY, locX, locY, width, height);
    life = MAX_LIFE;
    DEFAULT_SPEED = speedX;
    playerImageSet = new ImageSet(1);
    bombImageSet = new ImageSet(1);
    headImageSet = new ImageSet(1);
    numberImageSet = new ImageSet(1);
    //#if NOK_QD
    //# Image[] number = new Image[10];  //UI--数字
    //# for(int i = 0; i<10 ;i++)
    //# {
      //# number[i] = Tools.getImage("images/stuffs/number"+i);
    //# }
    //# numberImageSet.addState(number,50);
//# //		for(int i = 0; i<10 ;i++){ number[i] = null;}
    //#
    //# //UI--头像
    //# Image[] headImage = new Image[4];
    //# for(int i = 0; i<4 ;i++)
    //# {
      //# headImage[i] = Tools.getImage("images/stuffs/head"+i);
    //# }
    //# headImageSet.addState(headImage,50);
//# //		headImage[0] = null;
    //#
    //# Image[] bombImage = new Image[4]; //灯神动画
    //# for(int i = 0; i<4;i++)
    //# {
      //# bombImage[i] = Tools.getImage("images/stuffs/bomb"+(Control.currentPlayer*4+i));
    //# }
    //# bombImageSet.addState(bombImage,500);
//# //		for(int i = 0; i<4;i++){ bombImage[i] = null;}
//# //		bombImage = null;
    //#
    //# Image[] tempPlayerImage = new Image[4];  //主角动画
    //# for(int i = 0; i<4;i++)
    //# {
      //# tempPlayerImage[i] = Tools.getImage("images/stuffs/player"+(Control.currentPlayer*4+i));
    //# }
    //# playerImageSet.addState(tempPlayerImage, 600);
//# //		for(int i = 0; i<4;i++){tempPlayerImage[i] = null;}
//# //		tempPlayerImage = null;
    //#else
    Image number = Tools.getImage("images/stuffs/number");
    Image headImage = Tools.getImage("images/stuffs/head");
    Image bombImage_1 = Tools.getImage("images/stuffs/bomb_"+(Control.currentPlayer+1));
    Image tempPlayerImage = Tools.getImage("images/stuffs/player");
      //#if NOK_7260 || NOK_7210 || NOK_6101
      //# playerImageSet.addState(ImageSet.extractFrames(tempPlayerImage, 0, Control.currentPlayer*17 , 4, 1, 23, 17), 400);
      //# if(Control.currentPlayer == 0)bombImageSet.addState(ImageSet.extractFrames(bombImage_1,0,0,4,1,90,99),800);
      //# if(Control.currentPlayer == 1)bombImageSet.addState(ImageSet.extractFrames(bombImage_1,0,0,4,1,93,83),800);
      //# if(Control.currentPlayer == 2)bombImageSet.addState(ImageSet.extractFrames(bombImage_1,0,0,4,1,95,76),800);
      //# if(Control.currentPlayer == 3)bombImageSet.addState(ImageSet.extractFrames(bombImage_1,0,0,4,1,64,94),800);
      //# headImageSet.addState(ImageSet.extractFrames(headImage,0,0,1,4,7,7),400);
      //# numberImageSet.addState(ImageSet.extractFrames(number,0,0,10,1,5,7),500);
      //#else
      playerImageSet.addState(ImageSet.extractFrames(tempPlayerImage, 0, Control.currentPlayer*25 , 4, 1, 34, 25), 400);
      if(Control.currentPlayer == 0)bombImageSet.addState(ImageSet.extractFrames(bombImage_1,0,0,4,1,125,127),800);
      if(Control.currentPlayer == 1)bombImageSet.addState(ImageSet.extractFrames(bombImage_1,0,0,4,1,125,128),800);
      if(Control.currentPlayer == 2)bombImageSet.addState(ImageSet.extractFrames(bombImage_1,0,0,4,1,131,124),800);
      if(Control.currentPlayer == 3)bombImageSet.addState(ImageSet.extractFrames(bombImage_1,0,0,4,1,89, 155),800);
      headImageSet.addState(ImageSet.extractFrames(headImage,0,0,1,4,9,9),400);
      numberImageSet.addState(ImageSet.extractFrames(number,0,0,10,1,5,7),500);
      //#endif
        tempPlayerImage = null;
    bombImage_1 = null;
    number = null;
    headImage = null;
    //#endif
    System.gc();
    reset();
    super.curLoc.setBounds(locX, locY, 15, 15);
  }

  /**
   * 初始化玩家的一些属性
   *
   */
  public void initial(int type) {
    super.energy = MAX_ENERGY;
    if(Control.currentPlayer == 2)
    {
      super.energy = 140;
    }
    delayInitial = DELAY_INITIAL;
    delayAssistantShoot1 = 0;
    delayAssistantShoot2 = 0;
    setLocation(-30, ThreadCanvas.SCREEN_HEIGHT/2-10);
    super.type = type;
    if(Control.oldGunLevel>1){
      setGunId(type, Control.oldGunLevel);
    }else{
      setGunId(type, 1);  //初始子弹的威力以及等级和他们对应的图片
    }
    super.initialBullet(type, super.bHitPower,super.bSpeed,0,20,20);
    bulletPower =super.bHitPower;
    super.currentState = type ;
    super.currentFrame = 0;
  }

  /**
   * 玩家死亡
   *
   */
  public void dead() {
    super.reset();
    life--;
    bombNum = 3;
    isAutoFire = true;
    delayInitial = DELAY_INITIAL;
    delayAssistantShoot1 = 0;
    delayAssistantShoot2 = 0;
    setLocation( -30, ThreadCanvas.SCREEN_HEIGHT / 2 - 10);
    super.energy = MAX_ENERGY;
    if (Control.currentPlayer == 2) {
      super.energy = 140;
    }
    setSpeed(DEFAULT_SPEED);
    setGunId(super.gunId, 1);
  }

  public void reset() {
    dead();
    score = 0;
    gunLevel = 0;
    life = MAX_LIFE;
    bombNum = 3;
    bombPoint = 0;
    initial(type);
  }

  public void cycle() {
//		if (playScreen == null) {
//			playScreen = PlayScreen.getInstance();
//		}
    if (isAutoFire) {
      fire();
    }
    super.cycle();
    if (!isBombState) {
      if (delayAssistantShoot1 > 0)
        delayAssistantShoot1--;
      if (delayAssistantShoot2 > 0) {
        delayAssistantShoot2--;
      }
    } else {
      if (delayBomb > 0)
        delayBomb--;
    }
    //玩家自动从屏幕左边滑出来
    if (delayInitial > 0 && --delayInitial > 30)
      super.moveX(DEFAULT_SPEED);
    if (isDestroy()) {
      super.moveY(getSpeedY());
    }
  }

  /**
   * 获得玩家的可再生数
   *
   * @return
   */
  public int getLife() {
    return life;
  }

  /**
   * 设置玩家的可再生数
   *
   * @param numLife
   */
  public void setLife(int numLife) {
    life = numLife;
  }

  /**
   * 获得玩家的火力等级
   *
   * @return
   */
  public int getGunLevel() {
    return gunLevel;
  }

  /**
   * 获得玩家的子弹索引
   *
   * @return
   */
  public int getGunId() {
    return super.gunId;
  }

  /**
   * 设置玩家的子弹索引及等级
   *
   * @param id 子弹类型
   * @param level 子弹等级
   *
   */
  public void setGunId(int id, int level) {
    if (level > 4) {
      gunLevel = 4;
      System.out.println("gunLevel>4");
    } else if (level < 0) {
      gunLevel = 0;
      System.out.println("gunLevel<0");
    } else{
      gunLevel = level;
    }
    super.gunId = id;
    switch (id) {
    case 0:
      super.bSpeed = 12;
      super.bWidth = 5;
      super.bHeight = 5;
      super.bDelayShoot = 2;
      switch (level) {
      case 1:
        super.bHitPower = 3;
        break;
      case 2:
        super.bHitPower = 5;
        break;
      case 3:
        super.bHitPower = 8;
        break;
      case 4:
        super.bHitPower = 10;
        delayAssistantShoot1 = 10;
        break;
      case 5:
        delayAssistantShoot2 = 10;
        super.bHitPower = 20;
        break;
      }
      break;
    case 1 :
      super.bSpeed = 12;
      super.bWidth = 5;
      super.bHeight = 5;
      super.bDelayShoot = 3;
      switch (level) {
      case 1:
        super.bHitPower = 5;
        break;
      case 2:
        super.bHitPower = 8;
        break;
      case 3:
        super.bHitPower = 10;
        break;
      case 4:
        super.bHitPower = 10;

⌨️ 快捷键说明

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