2017-05-08 25 views
0
Welcome to the dungeon! 
Type Start to begin 
Start 
Start 
-------------------------------------- 
# Gang Member has appeared! # 

Your HP: 200 
Gang Member's HP: 75 

What would you like to do? 
1. Attack 
2. Drink health potion 
3. Run 
Invalid command 
Your HP: 200 
Gang Member's HP: 75 

What would you like to do? 
1. Attack 
2. Drink health potion 
3. Run 
Invalid command 
Your HP: 200 
Gang Member's HP: 75 

私はロボティクスクラブのためにJavaを練習するためのテキストベースのアドベンチャーゲームを作っています。そして、私のコードは敵を述べ、コンソール上で何を繰り返すのかを繰り返し続けます。全体のコードが下にある、それは単純な構文エラーかもしれないが、私はどこで何が間違っているかを見つけることができません。コードが繰り返されないときに繰り返す

package idk; 
import java.util.Random; 
import java.util.Scanner; 
import java.util.Arrays; 
/** 
* 
* @author Jack 
*/ 
public class Idk{ 

/** 
* 
* @param args 
*/ 
public static void main(String[] args) { 

    // System objects 
    Scanner in = new Scanner(System.in); 
    Random rand = new Random(); 


    // Player variables 
    int health = 200; 
    int attackDmg = 50; 
    int numHealthPots = 3; 
    int healthPotionHealAmount = 45; 
      //String enemy = [rand.nextInt(idk.enemies.enems.length 
      boolean running = false; 

    System.out.println("Welcome to the dungeon!"); 
      System.out.println("Type Start to begin"); 
      String input = in.nextLine(); 
      if(input.equals("Start")){ 
       running = true; 
      } 



    // Label 
      GAME: 

    while (running) {      
       int enemyNumber = rand.nextInt(6); 
       int enemyHealth; 
       int enemyAttackDamage; 
       int healthPotionDropChance; 
       String enemy /*= "no enemy"*/;   
      switch(enemyNumber){ 
       case 0: 
        enemy = "Alien"; 
        enemyHealth =75; 
        enemyAttackDamage = 25; 
        healthPotionDropChance = 35; 
        break; 

       case 1: 
        enemy = "Thief"; 
        enemyHealth = 90; 
        enemyAttackDamage = 30; 
        healthPotionDropChance = 45; 
        break; 
       case 2: 
        enemy = "Ravager"; 
        enemyHealth = 100; 
        enemyAttackDamage = 36; 
        healthPotionDropChance = 45; 
        break; 
       case 3: 
        enemy = "Gang Boss"; 
        enemyHealth = 150; 
        enemyAttackDamage = 45; 
        healthPotionDropChance = 45; 
        break; 
       case 4: 
        enemy = "Gang Member"; 
        enemyHealth = 75; 
        enemyAttackDamage = 55; 
        healthPotionDropChance = 35; 
        break; 
       case 5: 
        enemy = "Mercenary"; 
        enemyHealth = 250; 
        enemyAttackDamage = 18; 
        healthPotionDropChance = 25; 
        break; 
       case 6: 
        enemy = "Gang Boss With His Crew"; 
        enemyHealth = 205; 
        enemyAttackDamage = 25; 
        healthPotionDropChance = 65 ; 
        break; 
       default: 
        enemy = "no enemy showed up"; 
        enemyHealth = 1; 
        enemyAttackDamage = 1; 
        healthPotionDropChance = 1 ; 
        break; 
       } 
        input = in.nextLine(); 
        System.out.println("--------------------------------------");      
     System.out.println("\t# " + enemy + " has appeared! #\n"); 

     while (enemyHealth > 0) { 
      System.out.println("\tYour HP: " + health); 
      System.out.println("\t" + enemy + "'s HP: " + enemyHealth); 
      System.out.println("\n\tWhat would you like to do?"); 
      System.out.println("\t1. Attack"); 
      System.out.println("\t2. Drink health potion"); 
      System.out.println("\t3. Run"); 
      if (input.equals("1")) { 
       int damageDealt = rand.nextInt(attackDmg); 
       int damageTaken = rand.nextInt(enemyAttackDamage); 

       enemyHealth -= damageDealt; 
       health -= damageTaken; 

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

       if (health < 1) { 
        System.out.println("\t You have taken too much damage, you are too weak to go on"); 
        break; 
       } 
      } else if (input.equals("2")) { 

       if (numHealthPots > 0) { 
        health += healthPotionHealAmount; 
        numHealthPots--; 
        System.out.println("\t> You drank a health potion, healed for: " + healthPotionHealAmount + "." 
          + "\n\t> You now have" + health + "HP." 
          + "\n\t> You now have" + numHealthPots + " health potions left.\n"); 
       } else { 
        System.out.println("\t> You have no health potions, defeat enemies for a chance to get one"); 
       } 

      } else if (input.equals("3")) { 
       System.out.println("\t> You run away from the " + enemy); 
       continue GAME; 
      } else { 
       System.out.println("\tInvalid command"); 
      } 
     } 
     if (health < 1) { 
      System.out.println("You limp out of the dungeon, weak from battle."); 
      break; 
     } 
     System.out.println("--------------------------------------"); 
     System.out.println(" # " + enemy + " was defeated! # "); 
     System.out.println(" # You have " + health + "HP left # "); 
     // If the random number is less than 50 it drops 
     if (rand.nextInt(100) < healthPotionDropChance) { 
      numHealthPots++; 
      System.out.println(" # The " + enemy + " dropped a health potion. # "); 
      System.out.println(" # You now have " + numHealthPots + " health potion(s). # "); 
     } 
     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"); 

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

     } 
     if (input.equals("1")) { 
      System.out.println("You continue your adventure."); 
     } else if (input.equals("2")) { 
      System.out.println("You exit the dungeon."); 
      break; 
     } 
    } 
    System.out.println("######################"); 
    System.out.println("# THANKS FOR PLAYING #"); 
    System.out.println("######################"); 
} 
} 
+0

問題を解決したら、コードレビューに投稿することを検討してください。あなたは 'main()'メソッドであまりにも多くをやろうとしています。 – jsheeran

答えて

0

ユーザーに選択肢を求めた後input.nextInt()を忘れてしまった弟。

関連する問題