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