我正在尝试编写一款小游戏来帮助我掌握Java技能。我有一个名为" Zombie"和"播放器"我创建了这些类的实例:
Zombie zombie = new Zombie(50, "Infected Zombie", "Slash");
Player defaultPlayer = new Player(100, "Default Player");
接下来,我请求用户输入播放器的攻击风格:
System.out.println("Which attack style would you like to use?");
defaultPlayer.printAttackStyles();
int option = scanner.nextInt();
scanner.nextLine();
switch(option) {
case 0:
System.out.println("You backed out of the fight.");
break;
case 1:
System.out.println("Punching...");
defaultPlayer.attack(1);
break;
case 2:
System.out.println("Kicking...");
defaultPlayer.attack(2);
break;
case 3:
System.out.println("Headbutting...");
defaultPlayer.attack(3);
break;
case 4:
System.out.println("Tackling...");
defaultPlayer.attack(4);
break;
default:
System.out.println("Not a valid attack style");
}
在我的"播放器"我有一种叫做攻击的方法,根据攻击方式造成一定程度的伤害:
public int attack(int attackStyle) {
int damage = 0;
switch(attackStyle) {
case 0:
damage = 0;
break;
case 1:
damage = random.nextInt(20) + 1;
zombie.removeHealth(damage);
break;
case 2:
damage = random.nextInt(25) + 1;
zombie.removeHealth(damage);
break;
case 3:
damage = random.nextInt(30) + 1;
zombie.removeHealth(damage);
this.health -= random.nextInt(5) + 1;
break;
case 4:
damage = random.nextInt(45) + 1;
zombie.removeHealth(damage);
this.health -= random.nextInt(10) + 1;
break;
}
return damage;
}
在每种攻击方法的情况下,我都有一行代码
zombie.removeHealth(damage);
由于实例仅在Main类中声明,我如何访问该实例以访问zombie类中的方法removeHealth()?对不起,如果这个问题很简单,但我无法解决这个问题。
答案 0 :(得分:3)
在你的方法攻击中你需要再添加一个参数,可以用来将你的Zombie类实例传递给攻击方法。 将您的方法签名设为 public int attack(int attackStyle,Zombie zombie)
现在在switch块中,当你调用defaultPlayer.attack传递int值,就像你之前传递的那样和你的Zombie类的实例一样
defaultPlayer.attack(你的int值,zombie)
这会将zombie实例传递给攻击方法,然后你可以在那里调用你的removeHealth(damage)方法。
希望这可以解决您的问题。
答案 1 :(得分:2)
在攻击方法中传递Zombie的引用?像这样:defaultPlayer.attack(3, zombie );
现在在内部攻击方法中,你可以使用zombie的引用并在其上调用方法。