让Scalatron工作(操作码有问题)

让Scalatron工作(操作码有问题),scala,bots,opcode,Scala,Bots,Opcode,我是斯卡拉的新手。为了学习Scala,我最近下载了Scalaton。我已经有了IntelliJ的Scala插件,因此我认为设置Scalatron最简单的方法是在IntelliJ中创建bot,并将ScalatronBot.jar添加到Scalatron插件目录。当我开始遇到问题时,我开始学习Scalatron教程中的基本示例。以下基本代码适用于我的bot: class ControlFunctionFactory { def create = new ControlFunction().respo

我是斯卡拉的新手。为了学习Scala,我最近下载了Scalaton。我已经有了IntelliJ的Scala插件,因此我认为设置Scalatron最简单的方法是在IntelliJ中创建bot,并将ScalatronBot.jar添加到Scalatron插件目录。当我开始遇到问题时,我开始学习Scalatron教程中的基本示例。以下基本代码适用于我的bot:

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 { "" }
      }
  }

取而代之的是,我的机器人出现了,卡在原地,旁边有文字“disabled”。我使用Scalatron的在线编译器和“沙盒运行”来处理这段代码,它运行得很好。对我来说很奇怪,我可以让基本的“Hello World”机器人运行得很好,但这个利用操作码的机器人却不行。如果相关的话,我正在使用Windows7和谷歌Chrome。非常感谢您的帮助。

根据您提供的信息,很遗憾,我还无法重现此问题。正如您所说,当从基于浏览器的编辑器编译代码时,代码工作正常。目前,我只有以下建议来解决这个问题:

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

  • 回顾“Scalatron Player安装”文档中IntelliJ Scalatron Bot项目的安装步骤:您是否编译到正确的目录中?少了什么


希望这有帮助

似乎与某些版本的Scala编译器和Scalatron不兼容。Scala编译器2.10.3也出现了同样的错误。降级到2.9.2后,一切都开始正常运行


不幸的是,我没有关于Scala编译器与Scalatron兼容的版本的信息。我只能说2.9.2确实有效。

在我的例子中,需要将Scala从2.11.4降级到2.9.2,并将IntelliJ的Java SDK设置为与我运行Scalatron服务器时使用的相同。同时IntelliJ也将自己和Scala插件从1.1.2升级到1.2.1(不确定是否相关)


起初它似乎没有帮助,但后来我尝试通过Web UI编辑代码,并成功地从那里运行。在那之后,代码编辑和内置IntelliJ也开始工作了(当然,在摆脱了“Status(text“+input+”)这样愚蠢的尝试之后)

所以我用verbose选项创建了命令行,它似乎成功地找到了我的插件;但随后它给出了以下错误:错误:实例化插件“Sam”的控制函数时异常:java.lang.NoSuchMethodError:scala.Predef$.augmentString(Ljava/lang/String;)Ljava/lang/St-ring;