用Java创建数字作战系统后端
我一直在尝试调试这个简单的战斗系统,我一直在尝试实现。我处于一个非常基本的级别,并且已经制作了一个调试主文件来找出问题的根源。 我创建的主要作战功能包括:用Java创建数字作战系统后端,java,oop,Java,Oop,我一直在尝试调试这个简单的战斗系统,我一直在尝试实现。我处于一个非常基本的级别,并且已经制作了一个调试主文件来找出问题的根源。 我创建的主要作战功能包括: package great; import great.Player; import java.util.Scanner; public class battleFunc { public static void start(Player pLayer, Player Enemy){ while(pLayer.ge
package great;
import great.Player;
import java.util.Scanner;
public class battleFunc {
public static void start(Player pLayer, Player Enemy){
while(pLayer.getHealth() > 0 || Enemy.getHealth() > 0){
String result = askPlayer();
if(result.equals("Defend")){
playerDefend(pLayer, Enemy);
}
if(result.equals("Hit")){
playerHit(pLayer, Enemy);
}
EnemyHit(pLayer, Enemy);
}
}
public static String askPlayer(){
String x;
Scanner scanner = new Scanner(System.in);
System.out.println("What will you do?");
x = scanner.nextLine();
return x;
}
public static void reportEnemyHealth(Player Enemy){
System.out.println(Enemy.getName() + "'s health is: " + Enemy.getHealth());
}
public static void reportPlayerHealth(Player pLayer){
System.out.println(pLayer.getName() + "'s health is: " + pLayer.getHealth());
}
public static int reportPlayerHit(Player pLayer, Player Enemy){
int x = pLayer.getStrength() - Enemy.getDefense();
return x;
}
public static void reportEnemyHit(Player pLayer, Player Enemy){
System.out.println(Enemy.getName() + " hit for " + (Enemy.getStrength() - pLayer.getDefense()));
}
public static void playerDefend(Player pLayer, Player Enemy){
int x = Enemy.getStrength() - (pLayer.getDefense() + 1);
if (x <= 0) {x = 0;}
pLayer.setHealth(pLayer.getHealth() - x);
reportEnemyHit(pLayer, Enemy);
}
public static void playerHit(Player pLayer, Player Enemy){
int x = pLayer.getStrength() - Enemy.getDefense();
if (x <= 0){x = 0;}
Enemy.setHealth(4);
reportPlayerHit(pLayer, Enemy);
}
public static void EnemyHit(Player pLayer, Player Enemy){
int x = Enemy.getStrength() - pLayer.getDefense();
if (x <= 0){x = 0;}
pLayer.setHealth(pLayer.getHealth() - x);
reportEnemyHit(pLayer, Enemy);
}
}
我用来测试代码的主文件:
package great;
import great.Player;
import great.battleFunc;
public class MainG {
public static void main(String[] args) {
Player guy = new Player("Deez Nuts");
guy.setHealth(20);
guy.setStrength(7);
guy.setDefense(2);
Player fuckboi = new Player("Fuckboi");
fuckboi.setHealth(10);
fuckboi.setStrength(3);
fuckboi.setDefense(1);
battleFunc.start(guy, fuckboi);
}
}
当主文件运行时,所有攻击值返回并打印为0,并且不会删除任何运行状况。为什么会这样?这种方法:
public void setDefense(int x){
x = defense;
}
不会将玩家的防御设置为x,但会将x设置为玩家的防御。只需将
x
与defense
交换,值应正确更新。这同样适用于设置强度(…)
。数学返回0的原因很简单,就是两个玩家的力量和防御都是0。在battlefuncwhile(pLayer.getHealth()>0 | |敌军.getHealth()>0)
应该是和,而不是或。使用或将继续战斗,直到玩家和敌人的生命值均为0。发生的情况是,由于某种原因调用playerHit()时,在数学中返回0。这适用于我创建的所有其他命中和防御方法。因此,当打印回HP时,没有消耗任何HP,因为所有值都返回0非常感谢。我可能应该更仔细一点。我觉得有点经验不足,不过还是要谢谢你。干杯@DattManiels NP:)那只是时间和训练的问题
public void setDefense(int x){
x = defense;
}