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

📄 enemy.java

📁 一款Java开发的打飞机小游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                for (int i = 1; i<=9; i++)
                {
                    v.add(new Bullet(x+width/2, y+height+3, 180+i*10, 25, 10,Utility.DOWN_MOVE, Utility.BULLET_1));
                    v.add(new Bullet(x+width/2, y+height+3, 180-i*10, 25, 10,Utility.DOWN_MOVE, Utility.BULLET_1));
                }
            }
        }
        else if (kind==Utility.BOSS_4)
        {
            if (step==0)
            {
                for (int i = 0; i<10; i++)
                {
                    v.add(new Bullet(x+width/2, y+height-30+i*15, 180, 25, 10,Utility.DOWN_MOVE, Utility.BULLET_1)); //子弹类型可以改变
                }
                step++;
            }
            else if (step==1)
            {
                for (int i = 0; i<6; i++)
                {
                    v.add(new Bullet(x+width/3, y+height-30+i*15, 180, 25, 10,Utility.DOWN_MOVE, Utility.BULLET_1));
                    v.add(new Bullet(x+width*2/5, y+height-30+i*15, 180, 25, 10,Utility.DOWN_MOVE, Utility.BULLET_1));
                    v.add(new Bullet(x+width*3/5, y+height-30+i*15, 180, 25, 10,Utility.DOWN_MOVE, Utility.BULLET_1));
                    v.add(new Bullet(x+width*2/3, y+height-30+i*15, 180, 25, 10,Utility.DOWN_MOVE, Utility.BULLET_1));
                }
                step = 0;
            }
        }

        return v.toArray();
    }

    /**
     * 开火
     */
    public boolean fire()
    {
        if (firetype==Utility.FIRE_RANDOM)
        {
            return fireRandom();
        }
        else if (firetype==Utility.FIRE_AT_RATE)
        {
            return fireAtRate();
        }

        return false;
    }

    /**
     * 随机开火
     */
    public boolean fireRandom()
    {
        if (r.nextInt(bulletSeed)==1)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    /**
     * 以固定的速率开火
     */
    public boolean fireAtRate()
    {
        //抛物线发射速度快一点
        if (kind==Utility.LEFT_CURVE_MOVE||kind==Utility.RIGHT_CURVE_MOVE)
        {
            if ((Utility.CURRENT_Y>=20)&&(Utility.CURRENT_Y%20==0)) //固定开火的速率
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else
        {
            if ((Utility.CURRENT_Y>=40)&&(Utility.CURRENT_Y%40==0)) //固定开火的速率
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

    /**
     * 运动区域的边界检测(这里认为当飞机x坐标不在屏幕有效范围时依然可以显示,因为飞机初始的x坐标可能不再有效区域)
     */
    public void checkEdge()
    {
        if (y>Utility.GAME_HEIGHT)
        {
            isVisible = false;
            isDead = true;
        }
    }

    /**
     * 判断飞机和圆心为(x,y),半径为r的圆型是否相撞(这里假设飞机的长度和宽度一样)
     * @param x  圆心的x坐标
     * @param y  圆心的y坐标
     * @param r  圆的半径
     */
    public boolean isHit(int x, int y, int r)
    {
        double xcenter = this.x+width/2;
        double ycenter = this.y+height/2;
        double dis = (xcenter-x)*(xcenter-x)+(ycenter-y)*(ycenter-y);
        if (dis<(r+width/2)*(r+width/2))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    /**
     * 设置不同的飞机类型产生奖品的可能性
     */
    public void setAwardSeed()
    {
        if (kind==Utility.ENEMY_1)
        {
            awardSeed = 1; //不可能
        }
        else if (kind==Utility.ENEMY_2||kind==Utility.ENEMY_3)
        {
            awardSeed = 60; //1/60
        }
        else if (kind==Utility.ENEMY_4||kind==Utility.ENEMY_5)
        {
            awardSeed = 40; //1/40
        }
        else if (kind==Utility.ENEMY_6||kind==Utility.ENEMY_7)
        {
            awardSeed = 20; //1/20
        }
        else if (kind==Utility.ENEMY_8)
        {
            awardSeed = 3; //1/10
        }
        else
        {
            awardSeed = 1; //比如Boss等
        }

    }

    /**
     * 获取随机产生的奖品
     * @return Award 返回随机获取的奖品,如果没有返回null
     */
    public Award getAward()
    {
        if (r.nextInt(awardSeed)==2)
        {
            if (kind==Utility.ENEMY_2||kind==Utility.ENEMY_3||
                kind==Utility.ENEMY_4||kind==Utility.ENEMY_5)
            {
                return new Award(x, y, 2, Utility.AWARD_1);
            }
            else if (kind==Utility.ENEMY_6||kind==Utility.ENEMY_7)
            {
                return new Award(x, y, 4, Utility.AWARD_2);
            }
            else if (kind==Utility.ENEMY_8)
            {
                return new Award(x, y, 4, Utility.AWARD_3);
            }
            else
            {
                return null;
            }
        }
        else
        {
            return null;
        }
    }

    /**
     * 	获取isVisible属性
     *  @return 控制飞机是否显示的isVisible属性
     */
    public boolean getVisible()
    {
        return isVisible;
    }

    /**
     * 设置isVisible的属性
     * @param value  用于设置飞机的显示属性
     */
    public void setVisible(boolean value)
    {
        isVisible = value;
    }

    /**
     * 	获取isDead属性
     *  @return 控制飞机是否死亡的isDead属性
     */
    public boolean getDead()
    {
        return isDead;
    }

    /**
     * 设置isDead的属性
     * @param value 用于设置飞机死亡状态的属性
     */
    public void setDead(boolean value)
    {
        isDead = value;
    }

    /**
     * 获取敌机的生命值
     * @return int 敌机剩余的生命值
     */
    public int getLife()
    {
        return life;
    }

    /**
     * 降低敌机的生命值
     * @param value 敌机损失的生命值
     */
    public void decLife(int value)
    {
        life -= value;
    }

    /**
     * 克隆飞机对象
     * @return 根据已有属性构建新的敌机对象
     */
    public Object clone()
    {
        Cloneable c = new Enemy(startY, x, y, xspeed, yspeed, movetype,
                                firetype, life, kind);
        return c;
    }

    /**
     * 实现Comparable接口,可以对对象进行排序
     * @param o 需要进行比较的对象
     * @return int -1,0,1分别表示小于,等于,大于
     */
    public int compareTo(Object o)
    {
        Enemy e = (Enemy)o;
        if (startY<e.startY)
        {
            return-1;
        }
        else if (startY>e.startY)
        {
            return 1;
        }
        else
        {
            if (x<e.x)
            {
                return-1;
            }
            else if (x>e.x)
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }
    } //CompareTo function
}

⌨️ 快捷键说明

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