文字冒险问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文字冒险问题相关的知识,希望对你有一定的参考价值。

我正在做一个简单的文字冒险项目。但是,当我运行代码时,当我尝试两次输入向右/向左/向前/向后时,它将不起作用。它只是停止。另外,当我向前执行然后向左执行时,程序将进入我的故障保护模式。不仅如此,故障保护也不起作用。我输入左键,故障保护继续。我该如何解决这些问题?

if(direction.equals("right") || direction.equals("Right"))
  {
    x++;
    System.out.println("You walk to the right.");
    direction = key.next();
  }

  if (direction.equals("left") || direction.equals("Left"))
  {
    x--;
    System.out.println("You walk to the left.");
    direction = key.next();
  }

  if (direction.equals("forward") || direction.equals("Forward"))
  {
    y++;
    System.out.println("You walk Forward.");
    direction = key.next();
  }

  if (direction.equals("backwards") || direction.equals("Backwards"))
  {
    y--;
    System.out.println("You walk backwards.");
    direction = key.next();
  }

  do{
    System.out.print("Sorry, you can't do that.  Try again:");
    direction = key.next();
  }while(!direction.equals("right") || !direction.equals("Right") || !direction.equals("left") || !direction.equals("Left") || !direction.equals("forward") || !direction.equals("Forward") || !direction.equals("backwards") || !direction.equals("Backwards") || !direction.equals("c"));
答案

您的do块总是被执行,因为缺少else语句。您可能想做

if { ... }
else if { ... }
else if { ... }
else if { ... }
else {
  do { ... }
}

在您的情况下,else if在您的情况下并不是完全强制性的,但是它更安全,并且可以节省无用的比较。

最后一个else是真正丢失的那个。

以上是关于文字冒险问题的主要内容,如果未能解决你的问题,请参考以下文章

swift 文字冒险游戏

html5文字冒险类游戏《归途》从零开始

我正在制作基于文本的冒险游戏,但动作命令不起作用

谷歌地图不显示在片段中

如何组合绑定片段而不将它们包装在 XML 文字中

Android Place自动填充片段:无法设置文字