java - 需要在java中的某个点重新开始

标签 java loops

我对java真的很陌生,只是一般性的编程。我正在尝试制作一个简单的“故事游戏”。 我希望程序在我评论的“重新开始点 if walk.equals("b") (第二次)”处重新启动

这是我的代码: 附:如果写得不好请见谅

import java.util.*;

public class leikur1 {

   public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in);
     System.out.println("|---------Welcome to the adventure------------|"); 
     System.out.println("Please enter Name"); // inputs name
     String nafn = scan.nextLine();
     nafn = nafn.toLowerCase();

     System.out.println("Gender, male or female");
     String kyn = scan.nextLine();
     kyn = kyn.toLowerCase();
        while((!kyn.equals("male")) && (!kyn.equals("female")) )  //bara haegt ad velja male eda female
        {
          System.out.println("That is not valid input" );
          kyn = scan.nextLine();
          kyn = kyn.toLowerCase();
        }


     System.out.println("Are you ready for the adventure"); 
     String leikur = scan.nextLine();
     leikur = leikur.toLowerCase(); 
         while((!leikur.equals("yes")) && (!leikur.equals("no")) )  //impossible to input something else than male or female
         {
           System.out.println("That is not valid input" );
           leikur = scan.nextLine();
           leikur = leikur.toLowerCase();
         } 
     if(leikur.equals("no"))
          {
            System.out.println("Thank you anyway"); //if input = no program ends
           }


     // if input = yes the game begins
     else
          {
           System.out.println("Write Start to begin or Quit to exit"); 
     String start = scan.nextLine();
     start = start.toLowerCase();

     String gender;  
     if(kyn.equals("male"))
          {
          gender = "he"; 
          }
    else
    {
      gender = "she";
              }



     while((!start.equals("start")) && (!start.equals("quit")) )
     {
       System.out.println("That is not valid input" );
       start = scan.nextLine();
       start = start.toLowerCase();
     }


     if(start.equals("start")) 
     {
     System.out.println("Walking instructions: left - l    right - r     forward - f      back -  b    down - d     up - u\n");  
     System.out.println(nafn + " is in a abandoned house late at night, stuck in the basement with no light.\n");
     System.out.println("In wich way should " + gender + " go to find his way to the stairs?"   ); **// starting again point if walk.equals("b") (second time)**
     String walk = scan.nextLine();
     walk = walk.toLowerCase();

     //////////
     while((!walk.equals("f")) && (!walk.equals("b")) ) // not possible bcus of walls or no stairs
     {
       System.out.println("That is not possible" );
       walk = scan.nextLine();
     }


     if(walk.equals("f"))
          {
           System.out.println("Great choice, " + gender + " found the stairs right away. Should"+gender+" go upstairs or go back?" );
          }

     else if (walk.equals("b"))
          {
           System.out.println("Oh boy! " + nafn +" got stuck in a beartrap and died... GAME OVER" );
          }
   /////////

     walk = scan.nextLine();
     while(!walk.equals("u") && !walk.equals("b") )
     {
       System.out.println("That is not possible" );
       walk = scan.nextLine();
     }


     if(walk.equals("u"))
     {
     System.out.println("Excelent!" + nafn + " is now upstairs" );
     }

     **else if(walk.equals("b") )
     {
     System.out.println("Now " + nafn + " is at stage 1 again" );
     }**
     //////////////



     // code 4 the game should be here above
     }
     else if(start.equals("quit"))
     {
     System.out.println("Thank you anyway");
     }

    }        

  }
}

最佳答案

如果您只想重复内容,while 循环就足够了

boolean continue = true;

while(continue)
{
   else if(walk.equals("b") )
   {
       System.out.println("Now " + nafn + " is at stage 1 again" );
       continue = true;
   }
   else if(start.equals("quit"))
   {
       System.out.println("Thank you anyway");
       continue = false;
   }
}
<小时/>

我使用变量continue的原因是为了更好地说明while循环。您还可以使用 while(true) ,它通常会永远循环。要跳到下一次迭代的开头,可以使用 continue;;要中断,可以使用 break

while(true)
{
   else if(walk.equals("b") )
   {
       System.out.println("Now " + nafn + " is at stage 1 again" );
       continue;
   }
   else if(start.equals("quit"))
   {
       System.out.println("Thank you anyway");
       break;
   }
}
<小时/>

如果您真的希望将编码提升到一个新的水平,您可以采用更加数据驱动的方法,并使用数据模型来定义您的游戏。以下是xml数据模型示例

<Places>
    <Place name="YourRoom" text="You are in your room. Where would you like to go?">
        <Option text="Enter the hallway." result="Hallway"></Option>
    </Place>
    <Place name="Hallway" text="You are in the hallway. Where would you like to go?">
        <Option text="Go to your room" result="YourRoom"></Option>
    </Place>
</Places>

然后你就可以编写这样的程序

伪代码:

xmlElement currentRoom = // get starting element

while(true)
{
    print(currentRoom.Attributes[text])
    for(int i=0; i<currentRoom.Elements.length; i++)
    {
        print(currentRoom.Elements[i] + "type " + i+1;
    }
    int choice = getInt();
    int result = currentRoom.Elements[choice].result;
    currentRoom GetElementWithName(result);   
}

关于java - 需要在java中的某个点重新开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26873878/

相关文章:

PhP mysql插入语法错误

java - 设置 SelectElement 的选定选项

java - CheckBox 矩阵出现问题,循环不起作用

loops - *RPG 中的 INLR 和 while(true)

java - 最新的 Google Maps API V3(gwt-maps 3.10.0-alpha-7 除外)与 GWT 2.7.0 兼容吗?

java - 使用 ConcurrentMap 双重检查锁定

java - 我如何从 inp 文本读取 adjMatrix 图

java - 使用我创建的 Exception 类捕获抛出的异常

java - 如何从 Firebase 数据库获取此数据

javascript - 尝试理解 if/else 循环与函数的结合