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

📄 mysprite.java

📁 《神州》RPG游戏引擎
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;


public class MySprite extends Sprite implements Runnable{
    protected String name;
    protected boolean isDead;
    protected Vector msgVC;    //对话内容
    protected ChatArea chatArea;  //对话触发区
    protected Box collisionRectangle;  //碰撞区
    protected boolean haveCollision;
    protected int msgPoint;  //对话指针
    protected Box prevMoveArea;  //预移动区域,用来判断障碍

    protected boolean walking;  //正在走动中
    protected int lastMoveX,lastMoveY;
    protected int minX,minY,maxX,maxY;

    public int currentDirect;
    public boolean isMainRole;
    protected boolean continueFrame;  //不停换祯,如火焰
    protected boolean canCrossBlock;
    private long startDelay;  //开始间隔时间
    private long delay;  //坐标生成间隔时间
    private MySprite traceTarget;
    private int zIndex;
    public static int DIR_UP=1;
    public static int DIR_DOWN=2;
    public static int DIR_LEFT=3;
    public static int DIR_RIGHT=4;
    protected PointCreator pointCreator;
    protected int speed;
    protected boolean canMove;
    protected boolean canChat;
    protected boolean isAutoMoving;  //自动移动中
    private boolean canTouchMine; //会遇到地雷
    private int mineTimeCounter;  //遇雷倒计时,走一步计一次,到0触雷
    public boolean isStatic;  //是静态NPC,始终在内存里,如发任务的NPC

    private int life;  //生命
    private int maxLife;  //最大生命
    private int magic; //魔法
    private int maxMagic; //最大魔法
    private int exp;  //经验
    private int nextExp;  //下次升级经验
    private int lv;  //级别
    private int power;  //力量
    private int totalPower;  //综合攻击力
    private int defence;  //身体防御力
    private int totalDefence;  //综合防御力
    private int actSpeed;  //敏捷
    private int totalActSpeed;  //综合敏捷
    private int money;

    //升级信息
    private String upLv;
    private String upMaxLife;
    private String upMaxMagic;
    private String upPower;
    private String upDefence;
    private String upActSpeed;

    private Vector equipVC;  //已装备的物品库
    private Vector usedMatVC;  //药品库
    private Vector equipMatVC;  //装备类物品库
    private Vector skillVC;  //技能库
    private Vector missionVC;  //任务库


    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    public int getActSpeed() {
        return actSpeed;
    }

    public void setActSpeed(int actSpeed) {
        this.actSpeed = actSpeed;
    }

    public int getDefence() {
        return defence;
    }

    public void setDefence(int defence) {
        this.defence = defence;
    }

    public int getExp() {
        return exp;
    }

    public void setExp(int exp) {
        this.exp = exp;
    }

    public int getLife() {
        return life;
    }

    public void setLife(int life) {
        this.life = life;
    }

    public int getLv() {
        return lv;
    }

    public void setLv(int lv) {
        this.lv = lv;
    }

    public int getMagic() {
        return magic;
    }

    public void setMagic(int magic) {
        this.magic = magic;
    }

    public int getMaxLife() {
        return maxLife;
    }

    public void setMaxLife(int maxLife) {
        this.maxLife = maxLife;
    }

    public int getMaxMagic() {
        return maxMagic;
    }

    public void setMaxMagic(int maxMagic) {
        this.maxMagic = maxMagic;
    }

    public int getNextExp() {
        return nextExp;
    }

    public void setNextExp(int nextExp) {
        this.nextExp = nextExp;
    }

    public int getPower() {
        return power;
    }

    public void setPower(int power) {
        this.power = power;
    }

    public int getZIndex() {
        return zIndex;
    }

    public void setZIndex(int index) {
        zIndex = index;
    }
    public MySprite getTraceTarget() {
        return traceTarget;
    }
    public void setTraceTarget(MySprite traceTarget) {
        this.traceTarget = traceTarget;
    }
    public long getDelay() {
        return delay;
    }
    public long getStartDelay() {
        return startDelay;
    }
    public void setDelay(long delay) {
        this.delay = delay;
    }
    public void setStartDelay(long startDelay) {
        this.startDelay = startDelay;
    }
    public boolean isCanCrossBlock() {
        return canCrossBlock;
    }
    public void setCanCrossBlock(boolean canCrossBlock) {
        this.canCrossBlock = canCrossBlock;
    }
    public int getMaxX() {
        return maxX;
    }
    public int getMaxY() {
        return maxY;
    }
    public int getMinX() {
        return minX;
    }
    public int getMinY() {
        return minY;
    }
    public void setMaxX(int maxX) {
        this.maxX = maxX;
    }
    public void setMaxY(int maxY) {
        this.maxY = maxY;
    }
    public void setMinX(int minX) {
        this.minX = minX;
    }
    public void setMinY(int minY) {
        this.minY = minY;
    }



    public MySprite(Image img,int w,int h)
    {
    super(img,w,h);
    //System.out.println("MySprite.MySprite()");
    init();
    }
    public MySprite(Sprite sp)
    {
    super(sp);
    init();
    }
    private void init()
    {
        //System.out.println("MySprite.init()");
        isDead=false;
        msgPoint=0;
        speed=3;
        currentDirect=MySprite.DIR_DOWN;
        minX=0;
        minY=0;
        maxX=SceneLib.scenes[SceneLib.currentSceneIndex].getGroundWidth();
        maxY=SceneLib.scenes[SceneLib.currentSceneIndex].getGroundHeight();
        delay=-1;
        startDelay=-1;
    }
    public String getName()
    {
        return name;
    }
    public void setName(String name) {
        this.name = name;
        //System.out.println("MySprite.setName("+name+")");
    }
    public void setDead(boolean dead)
    {
        isDead=dead;
    }
    public boolean isDead() {
        return isDead;
    }
    
    //加对话信息
    public void addMsg(Msg msg) {
        if(msgVC==null)msgVC=new Vector();
        msgVC.addElement(msg);
        msgPoint=0;
    }
    public void removeAllMsg()
    {
        if(msgVC!=null)msgVC.removeAllElements();     
    }
    
    //加任务
    public void addMission(Mission mission)
    {
        if(missionVC==null)missionVC=new Vector();
        missionVC.addElement(mission);
    }
    public void removeMission(Mission mission)
    {
        missionVC.removeElement(mission);
    }
    public void removeAllMission()
    {
        missionVC.removeAllElements();        
    }
    public Vector getMissionVC()
    {
        return missionVC;
    }
    

    /**
     * @return Returns the msgPoint.
     */
    public int getMsgPoint() {
        return msgPoint;
    }
    /**
     * @param msgPoint The msgPoint to set.
     */
    public void setMsgPoint(int msgPoint) {
        this.msgPoint = msgPoint;
    }

    //设置对话区域(相对位置)
    public void setChatArea()
    {
        if(chatArea==null)chatArea=new ChatArea();
        chatArea.setParent(this);
        chatArea.x=-6;
        chatArea.y=20;
        chatArea.w=this.getWidth()+12;
        chatArea.h=this.getHeight()-20+6;
        
        /*
        if(currentDirect==MySprite.DIR_DOWN)
        {
            chatArea.x=-6;
            chatArea.y=this.getHeight()-8-6;
            chatArea.w=this.getWidth()+12;
            chatArea.h=20;
        }
        else if(currentDirect==MySprite.DIR_UP)
        {       
            chatArea.x=-6;
            chatArea.y=this.getHeight()-8-6;
            chatArea.w=this.getWidth()+12;
            chatArea.h=20;
        }
        else if(currentDirect==MySprite.DIR_LEFT)
        {          
            chatArea.x=-6;
            chatArea.y=this.getHeight()-8-6;
            chatArea.w=this.getWidth()+12;
            chatArea.h=20;
        }
        else if(currentDirect==MySprite.DIR_RIGHT)
        {          
            chatArea.x=-6;
            chatArea.y=this.getHeight()-8-6;
            chatArea.w=this.getWidth()+12;
            chatArea.h=20;
        }
        */
    }
    //定义碰撞区
    public void defineCollisionRectangle(int x, int y, int w, int h)
    {
        super.defineCollisionRectangle(x,y,w,h);
        collisionRectangle=new Box();
        collisionRectangle.x=x;
        collisionRectangle.y=y;
        collisionRectangle.w=w;
        collisionRectangle.h=h;
    }
    //取得碰撞区相对角色位置box
    public Box getCollisionRectangle()
    {
        return collisionRectangle;
    }

    //取得碰撞区绝对位置Box
    public Box getCollisionRectanglePosition()
    {
        Box box=new Box(this.getX()+this.getCollisionRectangle().x,this.getY()+this.getCollisionRectangle().y,getCollisionRectangle().w,getCollisionRectangle().h);
        return box;
    }

    //取得碰撞区
    public Box getTouchBox()
    {
        Box box=new Box();
        box.x=this.getX()+collisionRectangle.x;
        box.y=this.getY()+collisionRectangle.y;
        box.w=collisionRectangle.w;
        box.h=collisionRectangle.h;
        return box;
    }
    //设置是否可碰撞
    public void setCollision(boolean collision)
    {
        if(collision)
        {
            collisionRectangle=new Box();
            collisionRectangle.x=3;
            collisionRectangle.y=this.getHeight()-16;
            collisionRectangle.w=this.getWidth()-6;
            collisionRectangle.h=16;
            defineCollisionRectangle(collisionRectangle.x, collisionRectangle.y,collisionRectangle.w, collisionRectangle.h);
        }
        else
        {
            collisionRectangle=null;
        }
    }
    public void changeDirect(int direct)
    {
        if(direct==DIR_UP)
        {
            if(currentDirect!=DIR_UP)
            {
                this.setFrameSequence(new int[]{3,4,5});
                currentDirect=DIR_UP;
                if(canChat)setChatArea();
                //player1.defineCollisionRectangle(3,19,10,3);
            }
        }
        if(direct==DIR_LEFT)
        {
            if(currentDirect!=DIR_LEFT)
            {
                this.setFrameSequence(new int[]{6,7,8});
                currentDirect=DIR_LEFT;
                if(canChat)setChatArea();
                //player1.defineCollisionRectangle(-3,23,10,3);
            }
        }
        if(direct==DIR_RIGHT)
        {
            if(currentDirect!=DIR_RIGHT)
            {
            this.setFrameSequence(new int[]{9,10,11});
            currentDirect=DIR_RIGHT;
            if(canChat)setChatArea();
            //player1.defineCollisionRectangle(9,23,10,3);
            }
        }
        if(direct==DIR_DOWN)
        {
            if(currentDirect!=DIR_DOWN)
            {
            this.setFrameSequence(new int[]{0,1,2});
            currentDirect=DIR_DOWN;
            if(canChat)setChatArea();
            //player1.defineCollisionRectangle(3,34,10,3);
            }
        }
    }
    public void initDirect()
    {

⌨️ 快捷键说明

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