Java L oop, пока все методы не будут выполнены - PullRequest
0 голосов
/ 11 апреля 2020

Я занимаюсь простой текстовой игрой OOP java. Я немного застрял в данный момент и надеюсь на помощь

Вот код

    while(true){

        if(question==1){
            String input1 = inputString("You have entered the Dungeon, here you find a " + t.getDesc() + " would you like to fight it? Type Yes/No");
        chooseDungeonbattle(input1);    


        }
          if(question == 2){

       String input2 = inputString("You have entered the Underworld, it is dark and creepy, but you are not scared...\n SNAP! There is a " + d.getDesc() + " do you wish to fight it?");
      chooseUnderworldBattle(input2);



        }else if(question == 3){
       askUser("You have entered the Dark Forest and you met the Evil Elf, do you wish to fight it? ");
       String input3 = inputString("You have entered the Underworld, here you find a " + t.getDesc() + " would you like to fight it? Type Yes/No");
       //chooseAbattle3(input3);


        }
   //If user choose to go to Dungeon



          public static void chooseDungeonbattle(String questionInput){
        if(questionInput.equals("Yes")||questionInput.equals("yes")){
            Battle b = new Battle();
            Troll enemy = new Troll(10);
            MainPlayer main = new MainPlayer( 100, 100,150,0 );
            BadPlayer p = new BadPlayer("",0,0,0);

            int goldReceivedDungeon;



          b.getOutcome(enemy, main);

         if(b.getOutcome(enemy, main).equals("You win")){
        System.out.println("You win and receive " + enemy.awardCarried());
        goldReceivedDungeon=main.getGold()+ enemy.awardCarried();
        System.out.println("You currently have " + enemy.awardCarried());

        }else{
        System.out.println("Sorry you lost");
        }

       }



        }


        public static void chooseUnderworldBattle(String questionInput){
        if(questionInput.equals("Yes")||questionInput.equals("yes")){
            Battle b = new Battle();
            Demon enemy = new Demon(20);
            MainPlayer main = new MainPlayer( 100, 100,150,0 );
            String asknext;
            int goldReceivedDungeon;



          b.getOutcome(enemy, main);

         if(b.getOutcome(enemy, main).equals("You win")){
        System.out.println("You win and receive " + enemy.awardCarried());
        goldReceivedDungeon=main.getGold()+ enemy.awardCarried();
        asknext = inputString("Would you like to move to you next quest? Press 1 for the Dungeon or 3 for The Dark forest");


        }else{
        System.out.println("Sorry you lost");
        }

       }



        }
public static void chooseForestBattle(String questionInput){
    if(questionInput.equals("Yes")||questionInput.equals("yes")){
        Battle b = new Battle();
        Elf enemy = new Elf(20);
        MainPlayer main = new MainPlayer( 100, 100,150,0 );

        int goldReceivedDungeon;



      b.getOutcome(enemy, main);

     if(b.getOutcome(enemy, main).equals("You win")){
    System.out.println("You win and receive " + enemy.awardCarried());
    goldReceivedDungeon=main.getGold()+ enemy.awardCarried();
    asknext = inputString("Would you like to move to you next quest? Press 1 for the Dungeon or 3 for The Dark forest");


    }else{
    System.out.println("Sorry you lost");
    }

   }





    }

Что я пытаюсь сделать, так это главный персонаж для ввода места, где они хотят go сначала (Подземелье, Подземный мир или Темный лес), если они решат сначала go в подземный мир и победят там, чтобы ввести, где они хотят go после этого - Подземелье или Темный лес. И так до тех пор, пока квесты не будут завершены и они не получат вознаграждение за каждый квест. Я пытался некоторое время l oop, но, к сожалению, просто повторяет тот же метод :( Любая помощь очень ценится:)

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

@ Yani , если циклы должны быть лестницей if-else для лучшей производительности, а переменная question должна быть переназначена с новым значением для перехода к другим битвам, например asknext следует использовать в каждом методе, т.е. также в chooseDungeonBattle. И в случае окончания вашего квеста вы должны сломать время l oop после вашего последнего else , чтобы закончить бесконечное l oop.

0 голосов
/ 11 апреля 2020

вопрос переменной никогда не назначается новое значение, поэтому после выхода из одного "мира" вам придется обновить вопрос новым значением. Вы l oop бесконечны, вам нужен перерыв или возврат для выхода из l oop.

...