📄 foe.java
字号:
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 + -