提问人:benshee 提问时间:6/21/2023 最后编辑:benshee 更新时间:6/21/2023 访问量:70
需要通过 main-class 方法中的 setHP 更新 HP(在 main-class 方法中使用非主类方法 (setHP))
Need to update HP via setHP in a Method in main-class (use non main-class method (setHP) in main-class method)
问:
因此,我正在创建一个基于文本的小型 RPG,目前我正在尝试将 HPUpdate 实现到方法中。
由于主类中的方法无法从对象类中访问 getter 和 setter,因此我需要找到不同的解决方案。
我找到了一个,不知道它是否正确,但它似乎只更新了一次 HP,之后它总是重复相同的 HPUPdate。
“哥布林损失了10点生命值!” “哥布林还剩下40点生命值!”
再次攻击后,还是一样。
所以不是剩下的 30HP,而是 40HP。
我制作了第二个主类,它在那里工作,没有使用方法。但我想用一种方法来做。
代码如下:
Characters Fiona = new Characters(100, 10, 50, "Fiona"); // PLAYER CHARACTER INIT, FIONA = TEMP NAME
Enemies Goblin = new Enemies(50, 10, 10, "Goblin"); // GOBLIN ENEMY INIT
battlesystem(Fiona.getSpd(), Goblin.getSpd(), Fiona.getName(), Goblin.getName(), Fiona.getDmg(),
Goblin.getDmg(), Fiona.setHp(setHPChar(Fiona.getHp(), Goblin.getDmg())),
Goblin.setHp(setHPEnem(Goblin.getHp(), Fiona.getDmg())), Fiona.Statstostring(), Goblin.Statstostring());
}
// BATTLE_SYSTEM --> WIP
public static int battlesystem(int playerspeed, int enemyspeed, String playername, String enemyname, int enemyDMG,
int playerDMG, int playerHPUpdate, int enemyHPUpdate, String playerstats, String enemystats) {
Scanner sc1 = new Scanner(System.in);
int newplayerhp = 0;
System.out.printf(" Battle start! %n"); // Begin Battle-Scenario
if (playerspeed <= enemyspeed) {
System.out.printf(" Goblin attacks! %n");
System.out.printf(" You lose %d HP! %n", enemyDMG);
System.out.printf(" You have %d HP left!%n", playerHPUpdate);
} else {
System.out.printf(" %n What is your Strategy? %n");
int i = 0;
while (i < 1) {
System.out.printf(" %n%n (A)ttack %n (D)efend %n (I)tems %n (S)tats %n (F)lee %n");
String choice = sc1.nextLine();
switch (choice.toUpperCase()) {
case "A":
System.out.printf(" You decide to attack the Goblin! %n");
System.out.printf(" %S attacks!", playername);
System.out.printf(" %S loses %d HP%n", enemyname, enemyDMG);
System.out.printf(" Goblin has %d HP left!%n", enemyHPUpdate);
break;
编辑:
下面是 UpdateHP 方法:
public static int setHPChar(int oldcharHP, int enemDMG) { // UPDATE Character HP through subtraction of the Enemy
// Damage
int updateCharHP = oldcharHP - enemDMG; // setHP = getHP - getDMG
return updateCharHP;
}
public static int setHPEnem(int oldenemHP, int charDMG) { // // UPDATE Enemy HP through subtraction of the Character
// Damage
int updateEnemHP = oldenemHP - charDMG; // setHP = getHP - getDMG
return updateEnemHP;
}
下面是对象类:
private int hp; // Health Points STAT OF OBJECT
private int dmg; // Damage Points STAT OF OBJECT
private int spd; // Speed Points STAT OF OBJECT
private String name; // Name OF OBJECT
private boolean haskey = false; // BOOLEAN if OBJECT HAS A KEY --> only used in first Scenario at the moment
public int getHp() { // PRINTS Health Points of Character
return hp;
}
public int setHp(int hp) { // INCREASES OR DECREASES Character Health Points
this.hp = hp;
return hp;
}
所以回顾一下,角色攻击敌人,敌人通过角色伤害失去生命值。
EnemyHP - CharacterDMG = newEnemyHP。
答: 暂无答案
评论