gpt4 book ai didi

java - 如何获取方法内部更改的运行区中方法的值?

转载 作者:行者123 更新时间:2023-11-30 12:08:39 24 4
gpt4 key购买 nike

如果标题令人困惑,我深表歉意。我是 Java 编码的新手,刚刚完成了高中提供的编码类(class)。

我正在尝试通过一个名为 codehs 的程序使用 Java 创建一个小型文字冒险游戏。在游戏中有一个玩家,他们的统计数据有一个等级。游戏中还有一些怪物,它们根据各自的统计数据有一个单独的类别。每个怪物都是在每次遭遇时随机创建的,并且是从随着玩家等级缩放的怪物池中产生的。

当我发起玩家与怪物之间的战斗时,我的问题就出现了。我目前通过一种名为 monster fight 的方法发起战斗,该方法在名为 HP 的变量中输入玩家等级和他们的健康状况(与统计类分开)。问题是,战斗结束后,我的播放器显然在战斗中损失了一些 HP,但由于 HP 变量在方法内部发生了更改,因此当我尝试显示当前 HP 时,它会在战斗后恢复为默认的全 HP .有什么办法可以在奔跑区显示玩家战斗结束后的血量吗?

对于冗长的措辞和对 Java 的糟糕理解,我深表歉意,但如果您能帮助我完成这项工作,我将不胜感激。

编辑:这是一些代码

我在运行区调用的是:monsterFight(player.getLevel(), player.getHP());

打怪方法:

public void monsterFight(int level, int HP) {

    int whatMonster = Randomizer.nextInt(1,3);

Monster monster = null;

if(whatMonster == 1)
{
monster = new Monster("Gremlin", level, 1500);
}

if(whatMonster == 2)
{
monster = new Monster("Troll", level, 3000);
}

if(whatMonster == 3)
{
monster = new Monster("Brute", level, 4000);
}

Monster.getHP();
System.out.println(monster);


int enemHP = Monster.getHP();
while (HP > 0 && enemHP > 0)
{
System.out.println("");
String fbfAttack = readLine("How will you attack? Choose lightning or fireball: ");

if (fbfAttack.equals("lightning"))
{
System.out.println("Your lightning blasts the ");
int damage = Randomizer.nextInt(400,500);
enemHP = enemHP - damage;
}

if (fbfAttack.equals("fireball"))
{
System.out.println("Your fire burns the " + monster.getName());
int damage = Randomizer.nextInt(700,1000);
enemHP = enemHP - damage;
}

if (enemHP <= 0)
{
break;
}

System.out.println("The " + monster.getName() + " is at: " + enemHP + "HP");
int enemAttack = Randomizer.nextInt(200,300);
HP = HP - enemAttack;
System.out.println("The " + monster.getName() + " attacks! Your HP: " + (HP));
}
if (HP < 0)
{
System.out.println("Game over, you died");
System.exit(0);
}
System.out.println("HP in fight method " + HP);
newHP(HP);

}

public int newHP(int HP)
{
return HP;
}

最佳答案

你非常接近。首先,我只想说有很多方法可以解决这个问题。这是一个:

您可以将 player 对象传递给 monsterFight(Player player)

public class Player {

private int health;
private int lvl;

public Player(int health, int lvl) {
this.health = health;
this.lvl = lvl;
}

...
// getters & setters

}

然后在 monsterFight(Player player) 中,您可以在玩家失去健康时调用 player.setHealth(health)!

关于java - 如何获取方法内部更改的运行区中方法的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54239280/

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