?? 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 + -