0

我是 Scala 的新手。我最近下载了 Scalatron 来学习 Scala。我已经有了 IntelliJ 的 Scala 插件,所以我认为设置 Scalatron 的最简单选择是在 IntelliJ 中创建机器人,并将 ScalatronBot.jar 添加到 Scalatron 插件目录。当我开始遇到问题时,我开始研究 Scalatron 教程中的基本示例。以下基本代码适用于我的机器人:

class ControlFunctionFactory { def create = new ControlFunction().respond _ }

class ControlFunction { def respond(input: String) = "Status(text=Hello World)" }

但是当我尝试从服务器访问输入字符串或“操作码”时出现问题;以下对我不起作用:

 class ControlFunctionFactory { def create = new ControlFunction().respond _ }
 class ControlFunction {
      def respond(input: String) = {
          val tokens = input.split('(')   
          if(tokens(0)=="React") {        
              "Move(direction=1:0)"       
          } 
          else { "" }
      }
  }

相反,我的机器人出现了,卡在原地,旁边有“禁用”的文字。我在这段代码中使用了 Scalatron 的在线编译器和“沙盒运行”,它运行得很好。对我来说很奇怪,我可以让基本的“Hello World”机器人运行得很好,但这个使用操作码的机器人却不行。如果相关,我正在使用 Windows 7 和 Google Chrome。任何帮助表示赞赏。

4

3 回答 3

2

不幸的是,根据您提供的信息,我还无法重现该问题。正如您所说,从基于浏览器的编辑器编译时,代码可以正常工作。目前我只有以下建议来尝试解决问题:

  • 从命令行启动 Scalatron 服务器。这将允许您在控制台上查看其日志消息,这些消息可能会提供有关插件为何被服务器禁用的信息(通常是因为与它通信时出现问题、无效响应或安全违规)。您可以查看“Scalatron 服务器设置”文档以获取其他命令行选项,例如-verbose yes

  • 在“Scalatron Player Setup”文档中追溯 IntelliJ Scalatron Bot 项目的设置步骤:您是否编译到正确的目录中?有什么遗漏吗?

希望这可以帮助!

于 2013-06-26T08:39:50.247 回答
0

就我而言,它需要将 Scala 从 2.11.4 降级到 2.9.2,并将 IntelliJ 的 Java SDK 设置为与我运行 Scalatron 服务器时使用的相同。与此同时,IntelliJ 将自身和 Scala 插件从 1.1.2 更新到 1.2.1(不确定是否相关)

起初它似乎没有帮助,但后来我尝试通过 Web UI 编辑代码并成功地从那里运行。之后,在 IntelliJ 中编辑和构建的代码也开始工作(当然,在摆脱了“状态(文本”+输入+“)”这样的愚蠢尝试之后;)

于 2015-01-07T11:16:41.550 回答
0

似乎与某些版本的 Scala 编译器和 Scalatron 存在一些不兼容性。我在使用 Scala 编译器 2.10.3 时遇到了同样的错误。降级到 2.9.2 后,一切都开始运行良好。

不幸的是,我不知道与 Scalatron 兼容的 Scala 编译器的版本是什么。我只能说 2.9.2 肯定有效。

于 2014-03-13T20:27:16.140 回答