Каковы некоторые причины, по которым консоль Eclipse очищалась во время работы программы? - PullRequest
0 голосов
/ 07 апреля 2019

Я делаю RPG (текстовую) игру в Eclipse.

Я попытался отладить свой код с помощью "System.err.println", однако консоль ничего не показывает и, похоже,быть в бесконечном цикле печати новых строк ("\ n")

Это цикл, который я должен запустить до сих пор:

while(Health > 0) {
    if(!ENEMY) {
    output("\n");
    ERRoutput("CHECK1");
    encounterEnemy(classBase.lvl);
    }
    move();
    if(Health > MAX_HEALTH) {
     Health = MAX_HEALTH;
     output("\n");
     ERRoutput("CHECK2");
    }
    if(!ENEMY && classBase.XP >= classBase.neededXP){ 
        classBase.lvlUp();
        output("\n");
    }
    if(classBase.LVLUP()) {
     output("\n");
     ERRoutput("CHECK3");
     distributePoints();
     if(Strength < 2) Strength = 2;
     }
}

Это также единственное место, которое использует"\ n" (создает новую строку)

Я ожидаю, что выходной код будет:

  1. Создает врага, если противник еще не создан
  2. Запрашивает пользователяубить врага, пока враг не умер (метод перемещения)
  3. Проверить, достаточно ли опыта (XP) для повышения уровня
  4. Перезапустить цикл

Что на самом деле происходит:

  1. Появляет врага
  2. Предлагает пользователю убивать врага до тех пор, пока враг не умер (метод перемещения)
  3. Проверяет, достаточно ли опыта (XP) для повышения уровня
  4. Создает врага
  5. Консоль очищается и застревает в бесконечном цикле

Консоль показывает NO выход вообще

Для человека, который спросил, где назначен "ENEMY":

static boolean ENEMY = false;
public static void encounterEnemy(int lvl) {
    eHealth = 20;
    eHealth *= lvl + 1;
    eStamina *= lvl;
    eStamina *= lvl;
    eStrength *= lvl;
    eSpeed *= lvl;
    eSpeed /= 2;
    eDamage = 8;
    eDamage *= lvl;
    if(lvl > 7) {
        eDamage /= 2;
    }

    ENEMY = true;
    output("A LVL" + lvl + " enemy has appeared!");
    showEnemyHealth();
}

Он назначен внутри "meetEnemy« (и снова устанавливается в false в« move () », когда враг убит)

Код повышения:

public static void lvlUp() {
    upgrade = true;
    lvl++;
    Main.output(" _ _ _ _ _ _ _ _");
    Main.output("|               |");
    Main.output("|    LVL UP     |");
    Main.output("|  LEVEL: " + lvl + "     |");
    Main.output("|  HEALTH:+25   |");
    Main.output("|  STAMINA:+15  |");
    Main.output("|  STEALTH:+5   |");
    Main.output("|  STRENGTH:+15 |");
    Main.output("|  SPEED:+2     |");
    Main.output("| _ _ _ _ _ _ _ |");

    Main.Health += 25;
    Main.Stamina += 15;
    Main.Stealth += 5;
    Main.Strength += 15;
    Main.Speed += 2;

    neededXP = 35*lvl;
    XP = 0;
}

Для человека, который спросилчто делает метод повышения уровня во всех заглавных буквах:

public static boolean LVLUP() {
    if(upgrade) {
        upgrade = false;
        Main.points += 2;
        return true;
    } else {
        upgrade = false;
        return false;
    }

}

Последний, но не менее важный, метод перемещения:

static boolean proceed;
static boolean Continue;
public static void move() {
    while(Health > 0 && eHealth > 0 && Health > 0) {
        showStats();
        proceed = true;
        Continue = true;
        output("What do you do?");
        if(classBase.dmg_Spls == true) {
            output("[10] Damage enemy with spell (Damage: " + (7.5*classBase.lvl) + ")");
        }
        if(classBase.heal_Spls == true) {
            output("[2] Heal self with spell (Health Restore: 10 * lvl)");
        }
        output("[33] Attack with class weapon (Damage: " + (Strength/2) + " (Strength / 2))");
        output("[41] Drink Elixer of Death");
        try {
            validMove = false;
            while(!validMove) {
                input(" -> ");
                int move = Integer.parseInt(scan.nextLine());
                if(move < 0 || move > 4) {
                    proceed = false;
                }
                if(move != 10 && move != 2 && move != 33 && move != 41) {
                    proceed = false;
                }
                if(move == 10 || move == 2 || move == 33 || move == 41) proceed = true;
                if(move == 10 && (classBase.sselcClass == "Mage" || classBase.sselcClass == "Demon")) {
                    Damage = 0;
                    Damage = (15 * classBase.lvl);
                    Damage /= 2;
                    validMove = true;
                } else if(move == 2 && (classBase.sselcClass == "Mage" || classBase.sselcClass == "Priest")) {
                    Damage = 0;
                    Health += (10*classBase.lvl);
                    if(Health > MAX_HEALTH) {
                        Health = MAX_HEALTH;
                    }
                    validMove = true;
                } else if(move == 33) {
                    Damage = Strength / 2;
                    validMove = true;
                } else if(move == 41) {
                    Health = 0;
                    output("You Killed Yourself! (Health: " + Health + " )");
                    System.exit(-1);
                }
            }
        } catch (NumberFormatException e) {
            ERRoutput("Please enter a valid numberical value!");
        }
        if(!proceed) {
            Continue = false;
            while(!proceed) {
                output("What do you do? (Select Number)");
                if(classBase.dmg_Spls == true) {
                    output("[10] Damage enemy with spell (Damage: " + (7.5*classBase.lvl) + ")");
                }
                if(classBase.heal_Spls == true) {
                    output("[2] Heal self with spell (Health Restore: 10 * lvl)");
                }
                output("[33] Attack with class weapon (Damage: " + (Strength/2) + " (Strength / 2))");
                output("[41] Drink Elixer of Death");
                try {
                    validMove = false;
                    while(!validMove) {
                        input(" -> ");
                        int move = Integer.parseInt(scan.nextLine());
                        if(move < 0 || move > 4) {
                            proceed = false;
                        }
                        if(move != 10 && move != 2 && move != 33 && move != 41) {
                            proceed = false;
                        }
                        if(move == 10 || move == 2 || move == 33 || move == 41) proceed = true;
                        if(move == 10 && (classBase.sselcClass == "Mage" || classBase.sselcClass == "Demon")) {
                            Damage = 0;
                            Damage = (15 * classBase.lvl);
                            Damage /= 2;
                            validMove = true;
                        } else if(move == 2 && (classBase.sselcClass == "Mage" || classBase.sselcClass == "Priest")) {
                            Damage = 0;
                            Health += (10 * classBase.lvl);
                            if(Health > MAX_HEALTH) {
                                Health = MAX_HEALTH;
                            }
                        } else if(move == 33) {
                            Damage = Strength / 2;
                        } else if(move == 41) {
                            Health = 0;
                            output("You Killed Yourself! (Health: " + Health + " )");
                            System.exit(-1);
                        }
                    }
                } catch (NumberFormatException e) {
                    ERRoutput("Please enter a valid numberical value!");
                }
            }
        }
        eHealth -= Damage;
        showEnemyHealth();
        int allowed;
        int am = 0;
        if(Stealth != 0) {
            for(int i = 0; i < Stealth/2; i++) {
                am++;
            }
        } else {
            am = 0;
        }
        allowed = r.nextInt(am);
        if(allowed == 0) {
            if(proceed && eHealth > 0) {
                output("Enemy attacked and dealt " + eDamage + " damage!");
                Health -= eDamage;
                if(Health <= 0) {
                    output("You have died! (Health: " + Health + ")");
                    System.exit(-1);
                }
            } else if(eHealth <= 0) {
                output("Enemy defeated!");
                classBase.XP += 5;
                ENEMY = false;
            }
        } else {
            output("The enemy missed it's attack!");
        }
    }
    if(Health == 0) {
        output("You have died! (Health: " + Health + ")");
        System.exit(-1);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...