让Scalatron工作(操作码出现问题)

时间:2013-06-24 04:01:14

标签: scala bots opcode

我是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)" }

但是当我尝试从服务器访问输入字符串或'opcode'时出现问题;以下内容对我不起作用:

 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和谷歌浏览器。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

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

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

  • 在" Scalatron播放器设置"中回溯IntelliJ Scalatron Bot项目的设置步骤文档:您是否正在编译到正确的目录中?什么遗失?

希望这有帮助!

答案 1 :(得分:0)

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

不幸的是,我没有任何信息与Scalatron兼容的Scala编译器的版本是什么。我只能说2.9.2肯定有效。

答案 2 :(得分:0)

在我的情况下,它将Scala从2.11.4降级到2.9.2,并将IntelliJ的Java SDK设置为与我用来运行Scalatron服务器时相同。此外,IntelliJ自身更新,Scala插件从1.1.2升级到1.2.1(不确定是否相关)

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