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

📄 herosprite.java

📁 此为一款基于J2ME的手机游戏
💻 JAVA
字号:
/**********************************************************
  
 File name:HeroSprite.java
 
 Author:夏文涛
 
 Version:Beta1.0
 
 Download:http://www.codefans.net

 Data:2007/10/16
  
 Description:
 
    英雄精灵处理,包括人类的能力数据处理,等级处理,英雄移动,
    所携带的物品(分为工具和装备),所装备的物品,英雄状态处理,
    物品及装备的使用和删除.
  
 *********************************************************/

package com.Izual.MetalMax;

import java.io.IOException;

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;

public class HeroSprite extends Sprite implements IData {

	private String heroName = "Izual";   /*英雄名称*/
 
	private int heroLv = 1;              /*英雄等级*/

	private static int heroMaxHp = 80;  /*英雄最大HP*/

	private static int heroHp = 80;     /*英雄现有的HP*/

	private int heroFightLv = 1;         /*英雄战斗等级*/

	private int heroFixLv = 1;           /*英雄修理等级*/

	private int heroDriveLv = 1;         /*英雄驾驶等级*/

	private static int heroStr = 10;    /*英雄的力量*/

	private int heroInt = 10;            /*英雄的智力*/

	private static int heroSpeed = 20;  /*英雄的速度*/

	private static int heroPhStr = 15;  /*英雄的体力*/

	private int heroExp = 0;             /*英雄的经验值*/

	private int heroMoney = 11150;          /*英雄的金钱*/

	private static int heroAt = heroStr; /*英雄的攻击力,等于英雄的力量*/

	private static int heroDf = (heroSpeed + heroPhStr) / 2; /*英雄的防御力等于英雄速度和英雄体力之和的一半*/

	private static int heroBasicAt = heroStr; /*英雄的基础攻击力*/

	private static int heroBasicDf = (heroSpeed + heroPhStr) / 2; /*英雄的技术防御力*/

	private int heroLvNeed[] = { 0, 20, 60, 100, 180, 1000 }; /*英雄升级所需经验*/

	private int heroItem[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; /*英雄现有的人类工具*/

	private int heroEquItem[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; /*英雄现有的人类装备*/

	private int heroEqu[] = { 0, 0, 0, 0, 0, 0 }; /*英雄的已装备的人类装备,每位对应一个物品种类*/

	private int heroState = 0; /*英雄的状态*/

	int nowdown[] = { 0, 0, 1, 1, 2, 2, 3, 3 };       /*英雄向下走的动画数组*/

	int nowleft[] = { 4, 4, 5, 5, 6, 6, 7, 7 };       /*英雄向左走的动画数组*/

	int nowright[] = { 8, 8, 9, 9, 10, 10, 11, 11 };  /*英雄向右走的动画数组*/

	int nowup[] = { 12, 12, 13, 13, 14, 14, 15, 15 }; /*英雄向上走的动画数组*/
	
	int sright[] = {8}; /*英雄被老爸拉走时的动画数组 - -!*/

	int mDir = -1;  /*英雄的方向*/

	int mSpeed = 2; /*英雄的速度,即每步移动的像素值*/

	public static boolean mapChanged = false; /*地图是否切换*/

	public int pX = MapManager.heroPx, pY = MapManager.heroPy; /*英雄的坐标*/

	private int screenWidth = MapManager.screenWidth, /*地图大小*/
			screenHeight = MapManager.screenHeight;

	/*构造函数,根据图片和大小构造英雄精灵*/
	public HeroSprite(Image img, int w, int h) {

		super(img, w, h);
		setPosition(pX, pY);
	}

	/*设置英雄方向为向下*/
	public void setDown() {

		setFrameSequence(nowdown);
	}

	/*设置英雄方向为向左*/
	public void setLeft() {

		setFrameSequence(nowleft);
	}

	/*设置英雄方向为向右*/
	public void setRight() {

		setFrameSequence(nowright);
	}

	/*设置英雄方向为向上*/
	public void setUp() {

		setFrameSequence(nowup);
	}

	/*************************************************
	Function: moveUp(boolean)
	
	Description: 人类精灵向上移动的方法
	
	Calls: setFreameSequenve(int[]),nextFrame(),move(int,int).
	
	Called By: MetalMaxCanvas.java
	
	Input: doit:是否真正移动,碰撞检测时会用到.
	
	Output: 无
	
	Return: 无
	
	Others: 无
	*************************************************/
	public void moveUp(boolean doit) throws IOException {

		/*如果英雄的方向不是向上,则设置方向为上,动画为向上的动画*/
		if (mDir != UP) {

			mDir = UP;
			setFrameSequence(nowup);
		}

		/*下一祯动画*/
		nextFrame();

		/*如果真正移动,则进行移动,更新英雄坐标,否则向相反方向移动一步*/
		if (doit) {

			move(0, -mSpeed);

			this.pY = Math.max(0, pY - mSpeed);
		} else {

			move(0, mSpeed);
		}

	}

	/*英雄向下移动方法*/
	public void moveDown(boolean doit) throws IOException {

		if (mDir != DOWN) {

			mDir = DOWN;
			setFrameSequence(nowdown);
		}

		nextFrame();

		if (doit) {

			move(0, mSpeed);
			this.pY = Math.min(screenHeight, pY + mSpeed);
		} else {

			move(0, -mSpeed);
		}

	}

	/*英雄向左移动方法*/
	public void moveLeft(boolean doit) throws IOException {

		if (mDir != LEFT) {

			mDir = LEFT;
			setFrameSequence(nowleft);
		}

		nextFrame();

		if (doit) {

			move(-mSpeed, 0);

			this.pX = Math.max(0, pX - mSpeed);
		} else {

			move(mSpeed, 0);
		}

	}

	/*英雄向右移动方法*/
	public void moveRight(boolean doit) throws IOException {

		if (mDir != RIGHT) {

			mDir = RIGHT;
			setFrameSequence(nowright);
		}

		nextFrame();

		if (doit) {

			move(mSpeed, 0);

			this.pX = Math.min(screenWidth, pX + mSpeed);
		} else {

			move(-mSpeed, 0);
		}

	}
	
	/*特殊的向左移动,被老爸拉走那一段用 - -!*/
	public void moveSL(){
		
		setFrameSequence(sright);
		
		move(-mSpeed, 0);

	}

	/*获取事件ID,已经废除*/
	/*	
	 public int eventActionExist() {
	 
	 int mSpeed = 16;
	 
	 int x = 0;
	 int y = 0;
	 int ID = 0;
	 
	 if (MetalMaxCanvas.way == MetalMaxCanvas.UP_PRESSED) {

	 if ((pY - mSpeed) % 16 == 0) {
	 x = pX / 16;
	 y = (pY - mSpeed) / 16;
	 
	 ID = MapManager.getEvent(y, x);
	 //				System.out.println("up" + ID);
	 return ID;
	 } else
	 return 0;
	 }
	 
	 if (MetalMaxCanvas.way == MetalMaxCanvas.DOWN_PRESSED) {

	 if ((pY + FrameHeight) % 16 == 0) {
	 x = pX / 16;
	 y = (pY + getHeight() + mSpeed) / 16;

	 ID = MapManager.getEvent(y, x);
	 //			System.out.println("down" + ID);
	 return ID;
	 } else
	 return 0;
	 }
	 if (MetalMaxCanvas.way == MetalMaxCanvas.LEFT_PRESSED) {

	 if (pX % 16 == 0) {
	 x = (pX - mSpeed) / 16;
	 y = pY / 16 + 1;

	 ID = MapManager.getEvent(y, x);
	 //			System.out.println("left" + ID);
	 return ID;
	 } else
	 return 0;
	 }
	 if (MetalMaxCanvas.way == MetalMaxCanvas.RIGHT_PRESSED) {

	 if ((pX + FrameWidth) % 16 == 0) {
	 x = (pX + mSpeed + getWidth()) / 16;
	 y = pY / 16 + 1;

	 ID = MapManager.getEvent(y, x);
	 //			System.out.println("right" + ID);
	 return ID;
	 } else
	 return 0;
	 }

	 return 99;
	 
	 }
	 */
	
	/*更新英雄的坐标*/
	public void setXY(int pX, int pY) {

		this.pX = pX;
		this.pY = pY;
	}

	/*---------------------以下为get类----------------------------*/	

	/*获取英雄攻击力*/
	public static int getHeroAt() {

		return heroAt;
	}

	/*获取英雄基础攻击力*/
	public static int getHeroBasicAt() {

		return heroBasicAt;
	}

	/*获取英雄防御力*/
	public static int getHeroDf() {

		return heroDf;
	}
	
	/*获取英雄基础防御力*/
	public static int getHeroBasicDf() {

		return heroBasicDf;
	}

	/*获取英雄现有HP*/
	public static int getHeroHp() {

		return heroHp;
	}

	/*获取英雄经验值*/
	public int getHeroExp() {

		return heroExp;
	}

	/*获取英雄名称*/
	public String getHeroName() {

		return heroName;
	}

	/*获取英雄等级*/
	public int getHeroLv() {

		return heroLv;
	}

	/*获取英雄金钱*/
	public int getHeroMoney() {

		return heroMoney;
	}

	/*获取英雄升级所需经验*/
	public int getHeroLvNeed(int lv) {

		return heroLvNeed[lv];
	}

	/*获取英雄最大HP*/
	public int getHeroMaxHp() {

		return heroMaxHp;
	}

	/*获取英雄已有的工具*/
	public int[] getHeroItem() {

		return heroItem;
	}

	/*获取英雄的已有装备物品*/
	public int[] getHeroEquItem() {

		return heroEquItem;
	}

	/*获取英雄已已装备的物品*/
	public int[] getHeroEqu() {

		return heroEqu;
	}

	/*获取英雄的战斗等级*/
	public int getHeroFightLv() {

		return heroFightLv;
	}

	/*获取英雄的修理等级*/
	public int getHeroFixLv() {

		return heroFixLv;
	}

	/*获取英雄的驾驶等级*/
	public int getHeroDriveLv() {

		return heroDriveLv;
	}

	/*获取英雄的力量*/
	public int getHeroStr() {

		return heroStr;
	}

	/*获取英雄的智力*/
	public int getHeroInt() {

		return heroInt;
	}

	/*获取英雄的速度*/
	public int getHeroSpeed() {

		return heroSpeed;
	}

	/*获取英雄的体力*/
	public int getHeroPhStr() {

		return heroPhStr;
	}

	/*获取英雄的状态*/
	public int getHeroState() {

		return heroState;
	}

	/*-------------------以下为set类-----------------------------*/	                           

	/*更新英雄的攻击力*/
	public static void setHeroAt(int newHeroAt) {

		HeroSprite.heroAt = newHeroAt;
	}

	/*更新英雄的防御力*/
	public static void setHeroDf(int newHeroDf) {

		HeroSprite.heroDf = newHeroDf;
	}

	/*更新英雄的现有HP*/
	public static void setHeroHp(int newHeroHp) {

		HeroSprite.heroHp = Math.min(newHeroHp, heroMaxHp);
	}

	/*更新英雄的经验值*/
	public void setHeroExp(int newHeroExp) {

		this.heroExp = newHeroExp;
	}

	/*更新英雄的等级*/
	public void setHeroLv(int newHeroLv) {

		this.heroLv = newHeroLv;
	}

	/*更新英雄的金钱*/
	public void setHeroMoney(int newHeroMoney) {

		this.heroMoney = newHeroMoney;
	}

	/*更新英雄的最大HP*/
	public void setHeroMaxHp(int newHeroMaxHp) {

		HeroSprite.heroMaxHp = newHeroMaxHp;
	}

	/*更新英雄的战斗等级*/
	public void setHeroFightLv(int newHeroFightLV) {

		this.heroFightLv = newHeroFightLV;
	}

	/*更新英雄的修理等级*/
	public void setHeroFixLv(int newHeroFixLv) {

		this.heroFixLv = newHeroFixLv;
	}

	/*更新英雄的驾驶等级*/
	public void setHeroDriveLv(int newHeroDriveLv) {

		this.heroDriveLv = newHeroDriveLv;
	}

	/*更新英雄的力量*/
	public void setHeroStr(int newHeroStr) {

		HeroSprite.heroStr = newHeroStr;
	}

	/*更新英雄的智力*/
	public void setHeroInt(int newHeroInt) {

		this.heroInt = newHeroInt;
	}

	/*更新英雄的速度*/
	public void setHeroSpeed(int newHeroSpeed) {

		HeroSprite.heroSpeed = newHeroSpeed;
	}

	/*更新英雄的体力*/
	public void setHeroPhStr(int newHeroPhStr) {

		HeroSprite.heroPhStr = newHeroPhStr;
	}

	/*更新英雄的基础攻击力*/
	public static void setHeroBasicAt(int newHeroBasicAt) {

		HeroSprite.heroBasicAt = newHeroBasicAt;
	}

	/*更新英雄的基础防御力*/
	public static void setHeroBasicDf(int newHeroBasicDf) {

		HeroSprite.heroBasicDf = newHeroBasicDf;
	}

	/*更新英雄的状态*/
	public void setHeroState(int newHeroState) {

		this.heroState = newHeroState;
	}

	/*------------------------物品处理---------------------*/

	/*英雄装备物品,设置相应的数组位(对应于人类装备类型)为人类装备的编号*/
	public void addHeroEqu(int equItemID, int type) {

		heroEqu[type] = equItemID;

	}

	/*增加人类工具*/
	public void addHeroItem(int itemID) {

		/*找到人类工具数组中为0的项,更新为增加的物品编号*/
		for (int i = 0; i < heroItem.length; i++) {

			if (heroItem[i] == 0) {

				heroItem[i] = itemID;
				
				break;
			}
		}

	}

	/*删除人类工具*/
	public void delHeroItem(int itemID) {

		/*找到人类工具数组中值相等的项,设置为0*/
		for (int i = 0; i < heroItem.length; i++) {

			if (heroItem[i] == itemID) {

				heroItem[i] = 0;
				
				break;
			}

		}
	}

	/*增加人类装备*/
	public void addHeroEquItem(int equItemID) {

		for (int i = 0; i < heroEquItem.length; i++) {

			if (heroEquItem[i] == 0) {

				heroEquItem[i] = equItemID;
				
				break;
			}
		}

	}

	/*删除人类装备*/
	public void delHeroEquItem(int equItemID) {

		for (int i = 0; i < heroEquItem.length; i++) {

			if (heroEquItem[i] == equItemID) {

				heroEquItem[i] = 0;
				
				break;
			}

		}
	}

}

⌨️ 快捷键说明

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