DrJava中基于文本的Java游戏存在问题

DrJava中基于文本的Java游戏存在问题,java,text-based,drjava,Java,Text Based,Drjava,菜单没有链接,在第一个菜单之后,它返回到开始,还试图弄清楚如何将其变成一个一次只有几个敌人出现的波浪系统,一旦这些敌人被击败,你就可以进入下一个浪潮和一个保存功能,该功能允许你保存到你的角色,然后在返回游戏时加载他们。我已经挣扎了一个星期了 import java.util.Random; import java.util.Scanner; public class Main3 { public static void main (String[] args) { me

菜单没有链接,在第一个菜单之后,它返回到开始,还试图弄清楚如何将其变成一个一次只有几个敌人出现的波浪系统,一旦这些敌人被击败,你就可以进入下一个浪潮和一个保存功能,该功能允许你保存到你的角色,然后在返回游戏时加载他们。我已经挣扎了一个星期了

import java.util.Random;
import java.util.Scanner;

public class Main3 
{


  public static void main (String[] args)
  {

    menu();  
  }


  static void menuDisp()
  {
    System.out.println("welcome");
    System.out.println("1. Start Game"); 
    System.out.println("2. Character select");
    System.out.println("3. Quit");
  }

  static void menu()
  {
    Scanner sc = new Scanner(System.in);

    int ch=0;
    for( ; ; )
    {
      menuDisp();
      ch = sc.nextInt();
      sc.nextLine();

      switch(ch)
      {
        case 1:
          game();
          break;

        case 2:
          System.out.println("Coming Soon");
          break;

        case 3:
          return;

        default:
           System.out.println("invalid input");

      }
    }
  }

  static Scanner sc = new Scanner(System.in);

  static Random ran = new Random();

  //Game variables 

  //enemies stat 
  static String[] enemies = {"Skeleton", "Zombie", "Warrior", "Assassin"};
  static int maxEnemyHealth = 125;
  static int enemyAttackDamage = 25;

  // Player stat
  static int health = 100;
  static int attackDamage = 50;
  static int fireball = 100;
  static int numHealthPotions = 3;
  static int healthPotionHealAmount = 30;
  static int healthPotionDropChance = 50; 
  static int experience = 100;
  static int playerLvl = 0;
  static int playerExp = 0; 
  static int score = 0;
  //static String GAME;

  static int enemyHealth = ran.nextInt(maxEnemyHealth);
  static String enemy = enemies[ran.nextInt(enemies.length)];


  public static void game()
  {

    boolean running = true; 

    System.out.println("Welcome to the game");

    /**ID*/
    GAME:
      while (running){
      //System.out.println("---------------------------------------------");
      //System.out.println("\t# " + enemy + " has appeared! #\n");

      gamemenu();


        if (health <1)
        {
          System.out.println("You limp out of the doungeon, weak from battle.");
          break;
        }

        System.out.println("---------------------------------------------");
        System.out.println(" # " + enemy + " was defeated! # ");
        playerExp += ran.nextInt(experience);
        System.out.println(" # You recieve " + playerExp + " xp from battle #");

        if (playerExp >= 100)
        {
          playerLvl += 1 ;
          health += 100;
          attackDamage += 10;
          playerExp -= 100;
          System.out.println(" # You have grown to level " + playerLvl + "#");
          System.out.println(" # You have gained 100hp # \n # Your max damage and increase +10 dmg");
        }

        System.out.println(" # You have " + health + " HP left. #");
        if(ran.nextInt(100) < healthPotionDropChance ){
          numHealthPotions++;
          System.out.println(" # the " + enemy + "Dropped a health postion!# ");
          System.out.println(" # You now have " + numHealthPotions + " health postion(s). # ");
        }
       leavemenu(); 
       /* System.out.println("---------------------------------------------");
        System.out.println("What would you like to do now?");
        System.out.println("1. Continue fighting");
        System.out.println("2. Exit Dungeon");

        String input = sc.nextLine();

        while(!input.equals("1") && !input.equals("2")){
          System.out.println("invalid command!");
          input = sc.nextLine(); 
        }


        if(input.equals("1"))
        {
          System.out.println("You continue on your adventrue!");
          gamemenu();
        }


        else if(input.equals("2"))
        {
          System.out.println("You exit the doungeon, successful from your adventures!");
          break;
        }*/

      }

      System.out.println("#######################");
      System.out.println("# THANKS FOR PLAYING! #");
      System.out.println("#######################");
      return;

    }

    public static void experience()
    {

    }

    /**Game Menu display  */
    static void gamemenuDisp()
    {
      System.out.println("---------------------------------------------");
      System.out.println("\t# " + enemy + " has appeared! #\n");
      System.out.println("\tYour HP: " + health);
      System.out.println("\tYour Exp: " + playerExp);
      System.out.println("\tYour Lvl: " + playerLvl);
      System.out.println("\t" + enemy + "'s HP: " + enemyHealth);
      System.out.println("\n\tWhat would you like to do?");
      System.out.println("\t1. Attack menu");
      System.out.println("\t2. Drink health potion");
      System.out.println("\t3. Run!");
    }

    static void gamemenu()
    {
      Scanner sc = new Scanner(System.in);

      int ch=0;

      while (enemyHealth > 0)
      {
        //for( ; ; )
        //{
          gamemenuDisp();
          ch = sc.nextInt();
          sc.nextLine();


          switch(ch)
          {
            case 1:
              attackmenu();


            case 2:
              potionHealth();
              break;

            case 3:
              run();
              return;

            default:
              System.out.println("invalid input");
          }
        break;
      }
     /* if (enemyhealth <= 0)
      {
        continue GAME;
      }*/
    }

    static void attack()
      {
            int damageDealt = ran.nextInt(attackDamage);
            int damageTaken = ran.nextInt(enemyAttackDamage);

            enemyHealth -= damageDealt;
            health -= damageTaken;

            System.out.println("\t> You strike the " + enemy + " for " +damageDealt + " damage.");
            System.out.println("\t> You recieve " + damageTaken + " in retaliation!");

            if(health <= 0){
              System.out.println("\t Yout have taken too much damage, you are too weak to go on!");
              System.exit(0);
            }
            gamemenu();
      }

    static void fireball()
      {
            int damageDealt = ran.nextInt(fireball);
            int damageTaken = ran.nextInt(enemyAttackDamage);

            enemyHealth -= damageDealt;
            health -= damageTaken;

            System.out.println("\t> You strike the " + enemy + " with a fire ball for " +damageDealt + " damage.");
            System.out.println("\t> You recieve " + damageTaken + " in retaliation!");

            if(health <= 0){
              System.out.println("\t> Yout have taken too much damage, you are too weak to go on!");
              System.exit(0);
            }
      }

    static void potionHealth()
      {
            if(numHealthPotions > 0) {
              health += healthPotionHealAmount;
              numHealthPotions--;
              System.out.println("\t> You drink a health potion, healing yourself for " +healthPotionHealAmount + "." 
                                   + "\n\t> You now have " + health + " HP"
                                   + "\n\t> You have " + numHealthPotions + " healthpotions left.\n");
            }
            else 
            {
              System.out.println("\t> You have no health potions left!");
            }
      }

    static void run()
     {
         System.out.println("\tYou run away from the " +enemy);
         //continue GAME;
     }


    /** fighting option display */  
    static void submenuDisp()
    {
      System.out.println("Attack menu");
      System.out.println("\t1. Attack"); 
      System.out.println("\t2. Fireball");
      System.out.println("\t3. back");
    }
    /** fighting option menu*/
    static void attackmenu()
    {
      Scanner sc = new Scanner(System.in);

      int ch=0;
      for( ; ; )
      {
        submenuDisp();
        ch = sc.nextInt();
        sc.nextLine();


        switch(ch)
        {
          case 1:
            attack();
            //return;
            break;

          case 2:
            fireball();
            return;
            //break;

          case 3:
            return;

          default:
            System.out.println("invalid input");  
        }
      }
    } 


  static void leavemenuDisp()
  {
    System.out.println("what would you like to do?");
    System.out.println("1. Continue fighting"); 
    System.out.println("2. Exit Dungeon");
  }

  static void leavemenu()
  {
    Scanner sc = new Scanner(System.in);

    int ch=0;

    for( ; ; )
    {
      menuDisp();
      ch = sc.nextInt();
      sc.nextLine();

      switch(ch)
      {
        case 1:
          gamemenu();
          break;

        case 2:
          System.out.println("You exit the doungeon, successful from your adventures!");
          break;


        default:
           System.out.println("invalid input");
      }
    }

  }
}
import java.util.Random;
导入java.util.Scanner;
公共类main 3
{
公共静态void main(字符串[]args)
{
菜单();
}
静态void menuDisp()
{
System.out.println(“欢迎”);
System.out.println(“1.开始游戏”);
System.out.println(“2.字符选择”);
System.out.println(“3.Quit”);
}
静态无效菜单()
{
扫描仪sc=新的扫描仪(System.in);
int ch=0;
对于(;;)
{
menuDisp();
ch=sc.nextInt();
sc.nextLine();
开关(ch)
{
案例1:
游戏();
打破
案例2:
System.out.println(“即将推出”);
打破
案例3:
返回;
违约:
System.out.println(“无效输入”);
}
}
}
静态扫描仪sc=新扫描仪(System.in);
静态随机运行=新随机();
//博弈变量
//敌人统计
静态字符串[]敌人={“骷髅”、“僵尸”、“战士”、“刺客”};
静态int-maxEnemyHealth=125;
静态int enemyAttackDamage=25;
//球员统计
静态int健康=100;
静态攻击伤害=50;
静态int火球=100;
静态智力健康药水=3;
静态int-healthPotionHealAmount=30;
静态int-healthPotionDropChance=50;
静态积分经验=100;
静态整数playerLvl=0;
静态int playerExp=0;
静态智力得分=0;
//静态弦乐游戏;
静态int-enemyHealth=ran.nextInt(maxEnemyHealth);
静态字符串敌人=敌人[ran.nextInt(敌人.length)];
公共静态无效游戏()
{
布尔运行=真;
System.out.println(“欢迎来到游戏”);
/**身份证*/
游戏:
(跑步时){
//System.out.println(“-------------------------------------------------------------”;
//System.out.println(“\t#“+敌人+”出现了!#\n”);
gamemenu();
如果(健康=100)
{
playerLvl+=1;
健康+=100;
攻击伤害+=10;
playerExp-=100;
System.out.println(“#您已成长到级别”+playerLvl+“#”);
System.out.println(“#你获得100点生命#\n#你的最大伤害并增加+10 dmg”);
}
System.out.println(“#您还有“+health+”生命值)。#”;
如果(run.nextInt(100)0)
{
//对于(;;)
//{
gamemenuDisp();
ch=sc.nextInt();
sc.nextLine();
开关(ch)
{
案例1:
攻击菜单();
案例2:
药剂健康();
打破
案例3:
run();
返回;
违约:
System.out.println(“无效输入”);
}
打破
}
/*如果(enemyhealth 0){
health+=healthPotionHealAmount;
健康药水;
System.out.println(“\t>你喝了一剂健康药水,为“+healthPotionHealAmount+”治疗自己。”
+\n\t>您现在拥有“+健康+”HP”
+“\n\t>您还有”+健康药水+”健康药水。\n”);
}
其他的
{
System.out.println(“\t>您没有剩余的健康药水!”);
}
}
静态无效运行()
{
System.out.println(“\t您逃离”+敌人);
//继续游戏;
}
/**战斗选项显示*/
静态void子菜单disp()
{
System.out.println(“攻击菜单”);
System.out.println(“\t1.Attack”);
System.out.println(