我正在尝试写一个小游戏来帮助我提高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");
}
在我的“玩家”类中,我有一种称为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);
由于该实例仅在Main类中声明,因此如何访问该实例才能访问zombie类中的方法removeHealth()?抱歉,这个问题很简单,但我无法解决。
在方法攻击中,您需要再添加1个参数,该参数可用于将Zombie类的实例传递给攻击方法。将您的方法签名设置为public int Attack(int AttackStyle,Zombie zombie)
现在在切换块中,当您调用defaultPlayer.attack时,传递您之前传递的int值,并像这样传递Zombie类的实例
defaultPlayer.attack(您的int值,僵尸)
这会将僵尸实例传递给攻击方法,然后您可以在该僵尸实例中调用removeHealth(damage)方法。
希望这能解决您的查询。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句