📄 herosprite.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 + -