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

📄 bnb_player.java

📁 手机版本的泡泡堂 用j2me写的 大家可以参考下
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.TiledLayer;

//入场动画  和  死亡动画 未处理
public final class BnB_Player extends Sprite
{
    public int speed;//玩家的移动速度。
    public int water;//泡泡水柱长度。
    public int popo;//泡泡个数。
    public static final int MAX_SPEED = 6;//最大速度。
    public static final int MAX_WATER = 7;//最大水柱长度。
    public static final int MAX_POPO = 6;//最大泡泡个数。
    public int life;//生命
    private boolean isHaveVehicle;//是否拥有坐骑的标志。
    public boolean isL, isR, isD, isU;//4个方向移动的标志。
    public int key;//玩家按键值。
    private long lastTime, intervalTime;
    private Image vehicleimage;//坐骑图片。
    private Image paoimg;//泡泡图片
    private BnB_Vehicle vehicle;//坐骑对象。
    public BnB_Popo pao[];//泡泡对象。
    public int index;//指明当前泡泡下标。
    public boolean isPlayer;//是否是玩家。
    public boolean isKeyPress;//是否允许按键。
    public boolean isStart, isDie;//玩家状态。
    public static int score;//得分。
    private boolean isProtect;//保护状态。

    public BnB_Player(Image img, int width, int height, boolean isPlayer)
    {
        super(img, width, height);
        this.isPlayer = isPlayer;
        defineCollisionRectangle(getX(), getY() + 4, getWidth(),
                getHeight() - 4);
        defineReferencePixel(getX() + (getWidth() >>> 1), getY()
                + (getHeight() >>> 1) + 2);
        try
        {
            paoimg = Image.createImage("/res/popo.png");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        if (isPlayer)
        {
            life = 3;
        }
        else
        {
            life = 0;
        }
        initPlayer(isPlayer);
        pao = new BnB_Popo[MAX_POPO];
        for (int i = 0; i < MAX_POPO; i++)
        {
            pao[i] = new BnB_Popo(paoimg, 16, 16);
        }
        BnB_Popo.popo = popo;
        isKeyPress = false;
        isStart = true;
    }

    /***
     * @方法说明:初始化玩家属性及坐标。
     */
    public final void initPlayer(boolean isPlay)
    {
        if (isPlay)
        {
            speed = 3;
            water = 1;
            popo = 1;
            setPosition(112, 140);
        }
        else
        {
            speed = 3;
            water = 1;
            popo = 1;
            setPosition(0, 32);
        }
        BnB_Popo.popo = popo;
    }

    /***
     * @方法说明:玩家移动控制
     */
    public final void move()
    {
        if (isHaveVehicle)
        {
            if (vehicle.getX() <= 0)
            {
                vehicle.setPosition(0, vehicle.getY());
            }
            if (vehicle.getX() + vehicle.getWidth() >= 128)
            {
                vehicle.setPosition(112, vehicle.getY());
            }
            if (vehicle.getY() <= 0)
            {
                vehicle.setPosition(vehicle.getX(), 0);
            }
            if (vehicle.getY() + vehicle.getHeight() >= 160)
            {
                vehicle.setPosition(vehicle.getX(), 144);
            }
        }
        else
        {
            if (this.getX() <= 0)
            {
                this.setPosition(0, this.getY());
            }
            if (this.getX() + this.getWidth() >= 128)
            {
                this.setPosition(112, this.getY());
            }
            if (this.getY() <= 28)
            {
                this.setPosition(this.getX(), 28);
            }
            if (this.getY() + this.getHeight() >= 160)
            {
                this.setPosition(this.getX(), 140);
            }
        }
        if (isL)
        {
            moveLeft();
        }
        if (isR)
        {
            moveRight();
        }
        if (isU)
        {
            moveUp();
        }
        if (isD)
        {
            moveDown();
        }
    }

    /***
     * @方法说明:玩家向左移动
     */
    private final void moveLeft()
    {
        if (isKeyPress)
            if (isHaveVehicle)//设定坐骑坐标,跟随玩家坐标改变而改变
            {
                vehicle.setFrame(4);
                this.setFrame(8);
                if (vehicle.getX() > 0)
                {
                    vehicle.moveLeft();
                }
            }
            else
            {
                runFrame(8, 11);
                if (this.getX() > 0)
                {
                    this.move(-speed, 0);
                }
            }
    }
    /***
     * @方法说明:玩家向右移动
     */
    private final void moveRight()
    {
        if (isKeyPress)
            if (isHaveVehicle)
            {
                vehicle.setFrame(6);
                this.setFrame(12);
                if (vehicle.getX() < 112)
                {
                    vehicle.moveRight();
                }
            }
            else
            {
                runFrame(12, 15);
                if (getX() < 112)
                {
                    this.move(speed, 0);
                }
            }
    }
    /***
     * @方法说明:玩家向上移动
     */
    private final void moveUp()
    {
        if (isKeyPress)
            if (isHaveVehicle)
            {
                vehicle.setFrame(0);
                this.setFrame(0);
                if (vehicle.getY() > 32)
                {
                    vehicle.moveUp();
                }
            }
            else
            {
                runFrame(0, 3);
                if (getY() > 28)
                {
                    this.move(0, -speed);
                }
            }
    }
    /***
     * @方法说明:玩家向下移动
     */
    private final void moveDown()
    {
        if (isKeyPress)
            if (isHaveVehicle)
            {
                vehicle.setFrame(2);
                this.setFrame(4);
                if (vehicle.getY() < BnB_Game.H - vehicle.getHeight())
                {
                    vehicle.moveDown();
                }
            }
            else
            {
                runFrame(4, 7);
                if (getY() < BnB_Game.H - getHeight())
                {
                    this.move(0, speed);
                }
            }
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////
    /***
     * @方法说明:玩家放泡泡
     */
    private final void freePopo()
    {
        if (isKeyPress)
        {
            popo = BnB_Popo.popo;
            if (popo > 0)
            {
                int cols;
                int rows;
                if (isHaveVehicle)
                {
                    if (vehicle.getRefPixelX() < pao[index].getX()
                            || pao[index].getX() + pao[index].getWidth() < vehicle
                                    .getRefPixelX()
                            || vehicle.getRefPixelY() < pao[index].getY()
                            || pao[index].getY() + pao[index].getHeight() < vehicle
                                    .getRefPixelY() || !pao[index].isVisible())
                    {
                        if (index == 0)
                        {
                            index = MAX_POPO;
                        }
                        cols = Tools.toRange(vehicle.getRefPixelX());
                        rows = Tools.toRange(vehicle.getRefPixelY());
                        --index;
                        pao[index].setPopo(cols, rows, this.water);
                        BnB_Popo.popo--;
                    }
                }
                else
                {
                    if (getRefPixelX() < pao[index].getX()
                            || pao[index].getX() + pao[index].getWidth() < getRefPixelX()
                            || getRefPixelY() < pao[index].getY()
                            || pao[index].getY() + pao[index].getHeight() < getRefPixelY()
                            || !pao[index].isVisible())
                    {
                        if (index == 0)
                        {
                            index = MAX_POPO;
                        }
                        cols = Tools.toRange(this.getRefPixelX());
                        rows = Tools.toRange(this.getRefPixelY());
                        --index;
                        pao[index].setPopo(cols, rows, this.water);
                        BnB_Popo.popo--;
                    }
                }
            }
        }
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////
    /***
     * @方法说明:按键控制
     */
    public final void keyPressed(int key)
    {
        switch (key)
        {
            case -3://左
            case 52:
                initKey();
                isL = true;
                this.key = key;
                break;
            case -4://右
            case 54:
                initKey();
                isR = true;
                this.key = key;
                break;
            case -1://上
            case 50:
                initKey();
                isU = true;
                this.key = key;
                break;
            case -2://下
            case 56:
                initKey();
                isD = true;
                this.key = key;
                break;
            case 53:
            case -5://确定
                freePopo();
                break;
            default:
                this.key = 0;
                break;
        }
    }

    /***
     * @方法说明:按键释放控制
     */
    public final void keyReleased(int key)
    {
        switch (key)

⌨️ 快捷键说明

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