gpt4 book ai didi

Java如何使用另一个类的实例访问方法

转载 作者:行者123 更新时间:2023-11-30 06:07:22 25 4
gpt4 key购买 nike

我正在尝试编写一个小游戏来帮助提高我的 Java 技能。我有一个名为“Zombie”和“Player”的类,我创建了这些类的实例,如下所示:

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");
}

在我的“Player”类中,我有一个称为 Attack 的方法,它会根据攻击类型造成一定量的伤害:

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);

由于该实例仅在主类中声明,我如何访问该实例才能访问僵尸类中的方法removeHealth()?抱歉,如果这个问题很简单,但我无法弄清楚。

最佳答案

在你的方法攻击中,你需要添加 1 个参数,可用于将 Zombie 类的实例传递给攻击方法。使你的方法签名为 public int Attack( int AttackStyle, Zombie 僵尸 )

现在在 switch block 中,当您调用 defaultPlayer.attack 时,会传递 int 值,就像您之前传递的那样,以及 Zombie 类的实例,如下所示

defaultPlayer.attack(你的int值,僵尸)

这会将僵尸实例传递给攻击方法,然后您可以使用相同的僵尸实例来调用您的removeHealth(damage)方法。

希望这能解决您的疑问。

关于Java如何使用另一个类的实例访问方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41669184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com