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

📄 foe.java

📁 这是一款竖版射击手机游戏
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                    break;
                case 4://右
                    change_direction(4);
                    foe_property[4] = foe_speed;
                    foe_property[5] = 0;
                    break;
            }
        }
    }
    /**
     *精灵开火,并设置其速度为零
     */
    public void set_sprite_fire(){
        if(this.foe_property[9]!=5){//this.foe_property[9]!=4 &&
            this.sprite_fire++;
            if(sprite_fire > 30){
                //开火
                foe_property[3] = 0;//此时设置精灵不可移动
                foe_property[10] = 1;
                foe_property[4] = 0;//设置其速度为0
                foe_property[5] = 0;
                //在这里是否要设置停止的动画帧???
                int[] Nu_temarray = new int[3];
                if(foe_property[9] == 4){//驽步兵
                    Nu_temarray[0] = this.Nu_infantry_fire[(foe_property[8]-1)*3];
                    Nu_temarray[1] = this.Nu_infantry_fire[(foe_property[8]-1)*3+1];
                    Nu_temarray[2] = this.Nu_infantry_fire[(foe_property[8]-1)*3+2];
                    setFrameSequence(Nu_temarray);//开火动画
                }else if(foe_property[9] == 2 || foe_property[9] == 3 || foe_property[9] == 1){//弓骑兵,雕骑兵,千骑长
                    ///System.out.println("------------------foe_property[8]="+foe_property[8]);
                    Nu_temarray[0] = this.GongqibingFire[(foe_property[8]-2)*3];
                    Nu_temarray[1] = this.GongqibingFire[(foe_property[8]-2)*3+1];
                    Nu_temarray[2] = this.GongqibingFire[(foe_property[8]-2)*3+2];
                    setFrameSequence(Nu_temarray);
                }else{
                    //System.out.println("foe_property=="+foe_property[8]);
                    setFrameSequence(Foe_Fire[foe_property[8]-1]);//开火动画
                }
                sprite_fire = 0;
            }
        }
        
        //if(foe_property[10] == 0){
        //is_move = true;
        // foe_property[3] = 1;
        //}
    }
    /**
     *攻击
     */
    public void Foe_Fire(Hero hero){
        int tem_frame = getFrame();
        if(foe_property[3] == 0){//只有开火之后才能进入
            if(tem_frame == 2){
                foe_property[3] = 1;
                int tem_direction = Math.abs(random.nextInt()%4) +1;
                //this.setTransform(Sprite.TRANS_NONE);
                foe_property[11] = tem_direction;
                //System.out.println("攻击完毕,进入自由移动!!!!!!!!!!!!!");
                set_foe_speeds(tem_direction);
            }
            if(tem_frame == 1 && foe_property[9]==5 && foe_property[10]==1){//此时若于玩家碰撞则玩家减少生命值.只用于刀剑兵
                foe_property[10] = 0;
                if(collidesWith(hero, true)){
                    if(hero.hero_property[19]>0){
                        hero.hero_property[19]-=foe_property[6];
                    }else
                        hero.hero_property[0]-=foe_property[6];
                }
            }
        }
    }
    /**
     *更新精灵
     */
    public void update(int yview,Hero hero){
        if(foe_property[9]==11){//兵营
            sprite_fire++;
            updata_foe_face(hero);
            if(sprite_fire > 30 && getY() < hero.get_hero_y()){
                if(foe_property[2]>0){
                    foe_property[10] = 1;
                }
                sprite_fire = 0;
            }
        }
        if(foe_property[9]<7 && foe_property[2]>0){//不是静物则更新
            updata_for_movedirection();
            updata_foe_face(hero);
            set_sprite_fire();
            knif_foe_fire(hero);//刀剑兵的攻击
            if(foe_property[9]==6)
                boss_change();
            Foe_Fire(hero);
            if(hero.hero_property[9]==1){
                //System.out.println("已经生成跟随者??????hero_property[9]="+hero.hero_property[9]);
                Check_gunshot_area(hero);
            }
            foe_move();
        }
        if(foe_property[2]<=0 && foe_property[9]<7 && foe_property[9] !=0){//播放敌人死亡动画
            if(System.currentTimeMillis() - StarFrame > 100){
                nextFrame();
                StarFrame = System.currentTimeMillis();
            }
            if(getFrame() == 2){
                //根据奖励的设置进行奖励
                if(foe_property[14]!=0){
                    heroaward.setImage(award_image, award_image.getWidth(), award_image.getHeight());
                    heroaward.set_display();
                    heroaward.set_point(getX(), getY());
                    heroaward.set_award_sort(foe_property[14]);
                }
                ini_array();
            }
        }else{
            //播放帧
            if(System.currentTimeMillis() - StarFrame > 200){
                nextFrame();
                StarFrame = System.currentTimeMillis();
            }
        }
        hero_prizes();
        Check_Out(yview);
        check_servant_hit(hero);//用与检测雇佣兵是否可以移动了~~~
        //check_npc_hit(hero);//用与检测NPC是否与玩家碰撞,即是否要进入购买画面
    }
    /**
     *检测精灵是否超出某一类型的移动范围!
     */
    public void Check_Out(int yview){
        switch(foe_property[9]){
            case 1://雕骑兵
            case 2://弓骑兵
                if(getY()+getHeight()>FlyGenCavans.play_sprite_y){
                    foe_property[11] = 1;//设置当前移动方向
                    set_foe_speed();//设置相应方向的速度一下???
                }
                break;
            case 3://千骑长
            case 6://Boss
                if(getY() > yview + 50){
                    foe_property[11] = 1;//设置当前移动方向
                    set_foe_speed();//设置相应方向的速度一下???
                }
                break;
                //case 4://弩步兵
                //case 5://刀剑兵
            default:
                if( getY() > yview + FlyGenCavans.Screen_H){
                    ini_array();
                }
                break;
        }
        if(getY() < yview){
            foe_property[11] = 2;
            set_foe_speed();//设置相应方向的速度一下???
        }
        if(getX()+getWidth() > FlyGenCavans.Screen_W){
            foe_property[11] =3;//设置当前移动方向
            set_foe_speed();//设置相应方向的速度一下???
        }
        if(getX() < 0){//-this.getWidth()
            foe_property[11] = 4;//设置当前移动方向
            set_foe_speed();//设置相应方向的速度一下???
        }
    }
    /**
     *检测当前玩家是否在精灵的攻击范围内
     *现在已经没有用了?
     *是否可以做为用于检测精灵是否在玩家的攻击范围之内的判断?
     *返回True表示有可攻击的精灵
     */
    public boolean Check_gunshot_area(Hero hero){
        boolean tem_gunshot = false;
        int tem_x = (getX()+getWidth()/2) - (FlyGenCavans.play_sprite_x+Hero.hero_image_w/2);
        int tem_y = (getY()+getHeight()/2) - (FlyGenCavans.play_sprite_y+Hero.hero_image_h/2);
        if((tem_x * tem_x + tem_y * tem_y) < hero.hero_servant_space * hero.hero_servant_space){
            hero.hero_property[23] = 1;
            hero.servant_attack_target = this;
            tem_gunshot = true;
        }
        return tem_gunshot;
    }
    
    /**
     *根据玩家的方向,更新精灵当前的面向
     */
    public void updata_foe_face(Hero hero){
        if(foe_property[9] !=5 ){//foe_property[9] !=4 &&
            if( getY()>FlyGenCavans.play_sprite_y && foe_property[9]==4){//向上
                if(foe_property[8] != 1){
                    setTransform(Sprite.TRANS_NONE);
                    foe_property[8] = 1;
                }
            }else{
                old_face_direction = foe_property[8];
                if(getX() > FlyGenCavans.play_sprite_x + Hero.hero_image_w){//左下
                    if(foe_property[8] != 3){
                        if(foe_property[9]!=6)
                            setTransform(Sprite.TRANS_NONE);
                        foe_property[8] = 3;
                    }
                    //System.out.println("此时向左下");
                }else if(getX() < FlyGenCavans.play_sprite_x - Hero.hero_image_w){//右下
                    if(foe_property[8] != 4){
                        if(foe_property[9]!=6)
                            setTransform(Sprite.TRANS_MIRROR);
                        foe_property[8] = 4;
                    }
                    //System.out.println("此时向右下");
                }else{//向下(getX() == FlyGenCavans.play_sprite_x)
                    if(foe_property[8] != 2){
                        if(foe_property[9]!=6)
                            setTransform(Sprite.TRANS_NONE);
                        foe_property[8] = 2;
                    }
                }
            }
        }
    }
    
    /**
     *更改精灵的移动方向
     *随机产生一个方向
     *根据精灵的类型来更新精灵的移动方向foe_property[9]
     */
    public void updata_for_movedirection(){
        boolean tem_is_change = false;// 移动方向是否已经改变过
        if(System.currentTimeMillis() - StartTime > 2000){
            if(foe_property[12] != 0){//排除其它类型
                if(foe_property[12] == 2)
                    foe_property[12] = 1;
                else
                    foe_property[12] = 2;
            }
            StartTime = System.currentTimeMillis();
        }
        tem_randoms =random.nextInt() % 100;
        switch(foe_property[9]){
            case 1://雕骑兵
            case 2://弓骑兵,////可以追逐玩家,但不可以到玩家的下方
            case 4://弩步兵
                if(tem_randoms == 0){//此时进入,改变移动方向
                    //System.out.println("77777777777777777777777777777777777777777777777777777777777777");
                    if(foe_property[12] == 1){//此时精灵开始跟踪
                        if(getX() > (FlyGenCavans.play_sprite_x+Hero.hero_image_w)){//精灵向左运动
                            if(foe_property[11] != 3){
                                foe_property[11] = 3;//设置相应的移动标志
                                tem_is_change = true;
                            }
                        }else if(getX() == FlyGenCavans.play_sprite_x || getX() <= (FlyGenCavans.play_sprite_x + Hero.hero_image_w)){
                            if(getY() > FlyGenCavans.play_sprite_y){//向上
                                foe_property[11] = 1;
                                tem_is_change = true;
                            }else{
                                foe_property[11] = 2;
                                tem_is_change = true;
                            }
                        }else if(getX() < FlyGenCavans.play_sprite_x){//向右运动
                            if(foe_property[11] !=4){
                                foe_property[11] = 4;
                                tem_is_change = true;
                            }
                        }else if(getY() > (FlyGenCavans.play_sprite_y + Hero.hero_image_h) ){//向上运动
                            if(foe_property[11] != 1){
                                foe_property[11] = 1;
                                tem_is_change = true;
                            }
                        }else if(getY() == FlyGenCavans.play_sprite_y || getY() <= (FlyGenCavans.play_sprite_y + Hero.hero_image_h) ){
                            if(getX() > FlyGenCavans.play_sprite_x){
                                foe_property[11] = 3;
                                tem_is_change = true;
                            } else{
                                foe_property[11] = 4;
                                tem_is_change = true;
                            }
                        }else{//向下运动
                            if(foe_property[11] != 2){

⌨️ 快捷键说明

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