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

📄 hero.java

📁 这是一款竖版射击手机游戏
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                }
                if(getFrame() == 1){
                    //在这里检测是否伤到了敌人
                    if(hero_property[11]==2){
                        servant_attack();
                    }
                }
            } else{
                change_servant_direction(yview);
                if(System.currentTimeMillis() - servant_start_times >220){
                    nextFrame();
                    servant_start_times = System.currentTimeMillis();
                }
            }
            if(hero_servant_property[0]<=0 && this.isVisible()){
                hero_property[9]=0;
                this.setVisible(false);
            }
            //更新
            //servant_hit_return(yview, hero);
        }
        /**
         *定时改变跟随者移动方向
         */
        void change_servant_direction(int yview){
            if(is_move){
                change_direction(hero_property[24]);//设置相应帧
                change_servant_directions(servant_direction, yview);
            }else{
                //跟随者停止
                stop_servant_move(servant_direction);
            }
        }
        /**
         *指定改变跟随者移动方向
         */
        void change_servant_directions(int direction_s,int yview){
            switch(direction_s){
                case 1://向上
                    up_movie(yview);
                    break;
                case 2://向下
                    down_movie(yview);
                    break;
                case 3://向左
                    left_movie();
                    break;
                case 4://向右
                    right_movie();
                    break;
            }
        }
        /**
         *跟随者开火
         */
        void servant_fire(){
            //fire_sign++;
            switch(hero_property[11]){
                case 1:
                    int[] tem_frame = new int[3];
                    fire_sign++;
                    if(fire_sign>30){
                        //System.out.println("开火~~~~~~~~~~~~~~~~~~~~~~~~~~");
                        hero_servant_property[3] = 1;//设置此时不可移动
                        hero_servant_property[5] = 1;//设置为可以开火
                        tem_frame[0] = hero_servant_fire_frame[(hero_property[8]-1) * 3];
                        tem_frame[1] = hero_servant_fire_frame[(hero_property[8]-1) * 3+1];
                        tem_frame[2] = hero_servant_fire_frame[(hero_property[8]-1) * 3+2];
                        setFrameSequence(tem_frame);//设置开火动画
                        fire_sign=0;
                    }
                    break;
                case 2://刀剑兵
                    if(check_is_fire()){//check_is_fire(foe_gun)fire_sign>200
                        hero_servant_property[3] = 1;
                        //在这里设置帧动画
                        //tem_frame[0] = hero_knife_servant_fire_frame[(servant_fire_face-1) * 3];
                        //tem_frame[1] = hero_knife_servant_fire_frame[(servant_fire_face-1) * 3 + 1];
                        //tem_frame[2] = hero_knife_servant_fire_frame[(servant_fire_face-1) * 3 + 2];
                        setFrameSequence(hero_knife_servant_fire_frame);
                    }
                    break;
            }
        }
        /**
         *判断刀剑兵是否能够攻击
         *可以攻击返回True
         */
        boolean check_is_fire(){
            boolean tem_fire = false;
            if(hero_property[23] == 1){//此时有敌人可以攻击
                setPosition(servant_attack_target.getX(), servant_attack_target.getY()+(servant_attack_target.getHeight()-3));
                tem_fire = true;
                if(servant_attack_target.foe_property[2]<=0){//此时敌人已经被砍死servant_attack_target.foe_property[2] <=0
                    hero_property[23] = 0;
                }
            }
            return tem_fire;
        }
        /**
         *判断跟随者的移动是否在规定的范围内
         *在此范围内返回True
         */
        boolean check_servant_out(){
            boolean tem_servant = false;
            int tem_servant_x = getX() - get_hero_x();
            int tem_servant_y = getY() - get_hero_y();
            if((tem_servant_x * tem_servant_x + tem_servant_y * tem_servant_y) == hero_servant_property[4] * hero_servant_property[4]){
                tem_servant = true;
            }
            return tem_servant;
        }
        /**
         *跟随者(规定)怎么样移动
         */
        void servant_hit_return(int yview,Hero hero){
            if(hero_property[23]==0 || hero_property[11] == 1){//没有敌人可以攻击
                // System.out.println("rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr");
                // System.out.println("hero_property[23] == "+hero_property[23]+"hero_property[11] == "+hero_property[11]);
                if(check_servant_out() && hero_servant_property[3] == 0){//当跟随者在可移动范围内且跟随者可以移动
                    if(collidesWith(hero, false)){
                        int tem_yview = Math.abs(random_servant.nextInt()%2);
                        switch(servant_direction){
                            case 1://向上当此时为向上或向下移动时则让跟随者进行左右移动
                            case 2://向下
                                change_servant_directions(tem_yview+2, yview);
                                break;
                            case 3://向左
                                if(tem_yview == 1)
                                    change_servant_directions(tem_yview, yview);
                                else
                                    change_servant_directions(4, yview);
                                break;
                            case 4://向右
                                if(tem_yview == 1)
                                    change_servant_directions(tem_yview, yview);
                                else
                                    change_servant_directions(3, yview);
                                break;
                        }
                    }
                }
                if(!check_servant_out() && hero_servant_property[3] == 0){//此时跟随者不在跟随的范围内
                    // System.out.println("888888888888888888888888888888888888888888888888888888888888888");
                    if(getX() > (hero.getX() + hero.getWidth())){//向左
                        change_servant_directions(3, yview);
                    }else if(getX()< hero.getX()){//向右
                        change_servant_directions(4, yview);
                    }else if(getX()==hero.getX() || getX() <= (hero.getX() + hero.getWidth())){
                        if(getY() > hero.getY()){
                            change_servant_directions(1, yview);
                        }else{
                            change_servant_directions(2, yview);
                        }
                    }else if(getY() > (hero.getY() + hero.getHeight())){//向上
                        change_servant_directions(2, yview);
                    }else if(getY() == hero.getY() || getY() <= (hero.getY() + hero.getHeight())){
                        if(getX() > hero.getX()){
                            change_servant_directions(3, yview);
                        } else
                            change_servant_directions(4, yview);
                    }else{
                        change_servant_directions(1, yview);
                    }
                }
            }
            if(hero_property[23] == 1 && hero_property[11] == 2 && check_servant_out() && !check_is_fire()){//此时有敌人可以攻击.此处只适用于刀剑雇佣兵
                //且在跟随者在玩家可移动的范围内,且不可进行攻击
                
                if(getX() > (servant_attack_target.getX() + servant_attack_target.getWidth())){//向左
                    change_servant_directions(3, yview);
                }else if(getX()< servant_attack_target.getX()){//向右
                    change_servant_directions(4, yview);
                }else if(getX()==servant_attack_target.getX() || getX() <= (servant_attack_target.getX() + servant_attack_target.getWidth())){
                    if(getY() > servant_attack_target.getY()){
                        change_servant_directions(1, yview);
                    }else{
                        change_servant_directions(2, yview);
                    }
                }else if(getY() > (servant_attack_target.getY() + servant_attack_target.getHeight())){//向上
                    change_servant_directions(2, yview);
                }else if(getY() == servant_attack_target.getY() || getY() <= (servant_attack_target.getY() + servant_attack_target.getHeight())){
                    if(getX() > servant_attack_target.getX()){
                        change_servant_directions(3, yview);
                    } else{
                        change_servant_directions(4, yview);
                    }
                }else{
                    change_servant_directions(1, yview);
                }
                
            }
        }
        
        /**
         *向上运动
         */
        public void up_movie(int yview){
            if(servant_direction!=1){
                change_direction(1);
            }else{
                move(0,-hero_property[20]);
            }
            if(getY() < yview + 8){
                this.setPosition(this.getX(), yview+8);
            }
        }
        /**
         *向下运动
         */
        public void down_movie(int yview){
            if(servant_direction != 2){
                change_direction(2);
            } else{
                move(0, hero_property[20]);
            }
            if(getY() > yview + (208-getHeight())){
                this.setPosition(getX(), yview+(208-getHeight()));
            }
        }
        /**
         *向左运动
         */
        public void left_movie(){
            if(servant_direction != 3){
                change_direction(3);
            } else{
                move(-hero_property[20], 0);
            }
            if(getX() < 0){
                this.setPosition(0, getY());
            }
        }
        /**
         *向右运动
         */
        public void right_movie(){
            if(servant_direction != 4){
                change_direction(4);
            } else{
                move(hero_property[20], 0);//hero_property[20]
            }
            if(getX() > (176 - getWidth()))
                this.setPosition((176 - getWidth()), getY());
        }
        void stop_servant_move(int moveway){
            if(hero_property[11]==1){//弓箭雇佣兵
                switch(moveway){
                    case 1:
                        setFrameSequence(this.bow_Up_Stop);
                        break;
                    case 2 :
                        setFrameSequence(this.bow_Down_Stop);
                        break;
                    case 3:
                        setFrameSequence(this.bow_Left_Stop);
                        break;
                    case 4:
                        setFrameSequence(this.bow_Right_Stop);
                        break;
                }
            }else{
                switch(moveway){
                    case 1:
                        setFrameSequence(this.knife_Up_Stop);
                        break;
                    case 2 :
                        setFrameSequence(this.knife_Down_Stop);
                        break;
                    case 3:
                        setFrameSequence(this.knife_Left_Stop);
                        break;
                    case 4:
                        setFrameSequence(this.knife_Right_Stop);
                        break;
                }
            }
            setFrame(0);
        }
        /**
         *改变方向(面向)
         */
        public void change_direction(int directions){
            if(hero_property[11]==1){
                switch(directions){
                    case 1://上
                        setFrameSequence(bow_Up_FrameSequences);
                        servant_direction = 1;
                        break;
                    case 2://下
                        setFrameSequence(bow_Down_FrameSequences);
                        servant_direction = 2;
                        break;
                    case 3://左
                        setFrameSequence(bow_Left_FrameSequences);
                        servant_direction = 3;
                        break;
                    case 4://右
                        setFrameSequence(bow_Right_FrameSequences);
                        servant_direction = 4;
                        break;
                }
            }else{
                switch(directions){
                    case 1://上
                        setFrameSequence(knife_Up_FrameSequences);
                        servant_direction = 1;
                        break;
                    case 2://下
                        setFrameSequence(knife_Down_FrameSequences);
                        servant_direction = 2;
                        break;
                    case 3://左
                        setFrameSequence(knife_Left_FrameSequences);
                        servant_direction = 3;
                        break;
                    case 4://右
                        setFrameSequence(knife_Right_FrameSequences);
                        servant_direction = 4;
                        break;
                }
            }
            setFrame(0);
        }
        
        /**
         *检测是否对敌人造成伤害
         */
        void servant_attack(){
            if(collidesWith(servant_attack_target,false)){
                servant_attack_target.foe_property[2]-= hero_servant_property[6];
            }
        }
        
    }
    
}

⌨️ 快捷键说明

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