2013-06-24 35 views
0

我是Scala的新手。我最近下載了Scalatron以學習Scala。我已經有用於IntelliJ的Scala插件,所以我認爲設置Scalatron最簡單的方法是在IntelliJ中創建bot,並將ScalatronBot.jar添加到Scalatron插件目錄。當我開始遇到問題時,我開始按照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。任何幫助表示讚賞。

回答

2

根據您提供的信息,很遺憾,我無法再現問題。如您所述,代碼在基於瀏覽器的編輯器編譯時工作良好。目前,我只有以下建議來嘗試解決問題:

  • 從命令行啓動Scalatron服務器。這將允許您在控制檯上查看它的日誌消息,該消息可能提供有關爲什麼插件被服務器禁用(通常是因爲與它進行通信有問題,無效響應或安全違規)的信息。你可以檢查額外的命令行選項「Scalatron服務器設置」文檔,如-verbose yes

  • 追溯爲「Scalatron播放器設置」文檔中您的IntelliJ Scalatron BOT項目的設置步驟:你編譯到正確的目錄?有什麼遺漏?

希望這有助於!

+1

因此,我做了命令行的詳細選項和它似乎找到我的插件成功;但是它會給出以下錯誤:error:例外時插件'Sam'的實例化控制函數:java.lang .NoSuchMethodError:scala.Predef $ .augmentString(Ljava/lang/String;)Ljava/lang/St ring; –

0

似乎與某些版本的Scala編譯器和Scalatron有一些不兼容的地方。我在Scala編譯器2.10.3中遇到了同樣的錯誤。降級到2.9.2後,一切都開始運行了。

不幸的是,我沒有任何信息Scala編譯器與Scalatron兼容的版本是什麼。我只能說2.9.2確實有效。

0

在我的情況下,它將Scala從2.11.4降級到2.9.2,並將IntelliJ的Java SDK設置爲我用來運行Scalatron服務器的相同。另外的IntelliJ更新本身和Scala插件從1.1.2到1.2.1在此期間(不知道如果相關)

起初,它似乎並沒有幫助,但後來我試圖通過Web UI編輯代碼,併成功地跑了那裏。之後,在IntelliJ中編輯和構建的代碼也開始工作(當然在擺脫了像「狀態(文本」+輸入+「)」這樣一個愚蠢的嘗試);)