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

📄 bnb_player.java

📁 手机版本的泡泡堂 用j2me写的 大家可以参考下
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                    speed++;
                }
                tl.setCell(cols, rows, 0);
                break;
            case 6:
                if (MAX_WATER > water)
                {
                    water++;
                }
                tl.setCell(cols, rows, 0);
                break;
            case 7:
                if (MAX_SPEED > speed)
                {
                    speed++;
                }
                if (MAX_WATER > water)
                {
                    water++;
                }
                if (MAX_POPO > popo)
                {
                    popo++;
                    BnB_Popo.popo++;
                }
                tl.setCell(cols, rows, 0);
                break;
            case 8://飞碟
                if (!isHaveVehicle)
                {
                    try
                    {
                        vehicleimage = Image.createImage("/res/ufo.png");
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                    if (Tools.getRandom(5) == 0)
                    {
                        vehicle = new BnB_Vehicle(vehicleimage, 16, 16, 5);
                    }
                    else
                    {
                        vehicle = new BnB_Vehicle(vehicleimage, 16, 16, 2);
                    }
                    switch (key)
                    {
                        case -3://左
                        case 52:
                            vehicle.setFrame(4);
                            setFrame(8);
                            break;
                        case -4://右
                        case 54:
                            vehicle.setFrame(6);
                            setFrame(12);
                            break;
                        case -1://上
                        case 50:
                            vehicle.setFrame(0);
                            setFrame(0);
                            break;
                        case -2://下
                        case 56:
                            vehicle.setFrame(2);
                            setFrame(4);
                            break;
                    }
                    vehicle.setPosition(Tools.toCoordinate(cols), Tools
                            .toCoordinate(rows));
                    setPosition(vehicle.getX(), vehicle.getY() - getHeight()
                            + 6);
                    isHaveVehicle = true;
                    isProtect = true;
                }
                tl.setCell(cols, rows, 0);
                break;
            case 9://乌龟
                if (!this.isHaveVehicle)
                {
                    if (Tools.getRandom(5) == 0)
                    {
                        try
                        {
                            vehicleimage = Image
                                    .createImage("/res/pirateturtle.png");
                        }
                        catch (Exception e)
                        {
                            e.printStackTrace();
                        }
                        vehicle = new BnB_Vehicle(vehicleimage, 16, 16, 4);
                    }
                    else
                    {
                        try
                        {
                            vehicleimage = Image.createImage("/res/turtle.png");
                        }
                        catch (Exception e)
                        {
                            e.printStackTrace();
                        }
                        vehicle = new BnB_Vehicle(vehicleimage, 16, 16, 1);
                    }
                    switch (key)
                    {
                        case -3://左
                        case 52:
                            vehicle.setFrame(4);
                            setFrame(8);
                            break;
                        case -4://右
                        case 54:
                            vehicle.setFrame(6);
                            setFrame(12);
                            break;
                        case -1://上
                        case 50:
                            vehicle.setFrame(0);
                            setFrame(0);
                            break;
                        case -2://下
                        case 56:
                            vehicle.setFrame(2);
                            setFrame(4);
                            break;
                    }
                    vehicle.setPosition(Tools.toCoordinate(cols), Tools
                            .toCoordinate(rows));
                    setPosition(vehicle.getX(), vehicle.getY() - getHeight()
                            + 6);
                    isHaveVehicle = true;
                    isProtect = true;
                }
                tl.setCell(cols, rows, 0);
                break;
            case 10://猫头鹰
                if (!isHaveVehicle)
                {
                    try
                    {
                        vehicleimage = Image.createImage("/res/Owl.png");
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                    vehicle = new BnB_Vehicle(vehicleimage, 16, 16, 3);
                    switch (key)
                    {
                        case -3://左
                        case 52:
                            vehicle.setFrame(4);
                            setFrame(8);
                            break;
                        case -4://右
                        case 54:
                            vehicle.setFrame(6);
                            setFrame(12);
                            break;
                        case -1://上
                        case 50:
                            vehicle.setFrame(0);
                            setFrame(0);
                            break;
                        case -2://下
                        case 56:
                            vehicle.setFrame(2);
                            setFrame(4);
                            break;
                    }
                    vehicle.setPosition(Tools.toCoordinate(cols), Tools
                            .toCoordinate(rows));
                    setPosition(vehicle.getX(), vehicle.getY() - getHeight()
                            + 6);
                    isHaveVehicle = true;
                    isProtect = true;
                }
                tl.setCell(cols, rows, 0);
                break;
        }
    }

    /**
     * @方法说明:初始化按键;
     */
    private final void initKey()
    {
        isL = false;
        isR = false;
        isU = false;
        isD = false;
    }

    /***
     * @方法说明:初始化动作桢 和 动作切换;
     */
    private final void runFrame(int startFrame, int endFrame)
    {
        if (this.getFrame() < startFrame || this.getFrame() >= endFrame)
        {
            this.setFrame(startFrame);
        }
        if (isNextFrame(300))
        {
            this.nextFrame();
        }
    }

    /***
     * @方法说明:改变玩家状态和动画图片
     */
    private final void setImage(int play_stage)
    {
        switch (play_stage)
        {
            case 1: //入场动画
                if (isPlayer)
                {
                    this.setImage(Tools.playerstart, 16, 20);
                }
                else
                {
                    this.setImage(Tools.npcstart, 16, 20);
                }
                isStart = true;
                isKeyPress = false;
                isDie = false;
                break;
            case 2: //游戏动画
                if (isPlayer)
                {
                    this.setImage(Tools.player, 16, 20);
                }
                else
                {
                    this.setImage(Tools.npc, 16, 20);
                }
                isStart = false;
                isKeyPress = true;
                isDie = false;
                break;
            case 3: //死亡动画
                if (isPlayer)
                {
                    this.setImage(Tools.die, 16, 16);
                }
                else
                {
                    this.setImage(Tools.die, 16, 16);
                }
                isStart = false;
                isKeyPress = false;
                isDie = true;
                break;
        }
    }

    /***
     * 
     * @方法说明: 死亡动画需要调整,动画桢和 按键处理
     */
    public final void paintPlayer(Graphics pg)
    {
        if (isStart)
        {
            //      入场动画
            if (this.getFrameSequenceLength() - 1 == this.getFrame())
            {
                setImage(2);
                this.setFrame(4);
                return;
            }
            if (isNextFrame(200))
            {
                this.nextFrame();
            }
        }
        if (isDie)
        {
            //      死亡动画的切换
            if (this.getFrameSequenceLength() - 1 == this.getFrame())
            {
                while (true)
                {
                    if (isNextFrame(1000))
                    {
                        if (life >= 0)
                        {
                            setImage(1);
                            initPlayer(this.isPlayer);
                            this.setFrame(0);
                        }
                        else
                        {
                            isDie = false;
                        }
                        return;
                    }
                }
            }
            if (getFrame() < 3)
            {
                if (isNextFrame(1000))
                {
                    this.nextFrame();
                }
            }
            else
            {
                if (isNextFrame(300))
                {
                    this.nextFrame();
                }
            }
        }
        if (isHaveVehicle)
        {
            vehicle.paint(pg);
        }
        paint(pg);
    }

    /**
     * @方法说明:人物与人物重叠 ,人物与障碍重叠时 后画靠近下边界的精灵;
     */
    public final boolean firstPaint(Sprite s)
    {
        return (getY() + getHeight()) > (s.getY() + s.getHeight()) ? true
                : false;
    }

    private final boolean isNextFrame(int nextFrameTime)
    {
        intervalTime = System.currentTimeMillis() - lastTime;
        if (intervalTime >= nextFrameTime)
        {
            lastTime = System.currentTimeMillis();
            return true;
        }
        return false;
    }
}

⌨️ 快捷键说明

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