2013-06-24 1 views
0

Я новичок в Scala. Недавно я загрузил Scalatron, чтобы узнать Scala. У меня уже есть плагин Scala для IntelliJ, поэтому я решил, что самым простым вариантом для настройки 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 и «sandbox run» с этим кодом, и он прошел отлично. Для меня странно, что я могу получить базовый бот «Hello World», который будет работать отлично, но не этот бот, который использует код операции. Я использую Windows 7 и Google Chrome, если это актуально. Любая помощь приветствуется.

ответ

2

На основании полученной информации, к сожалению, я пока не могу воспроизвести проблему. Код, как вы заявляете, отлично работает при компиляции из браузера. На данный момент у меня есть только следующие рекомендации, чтобы попытаться решить проблему:

  • Запуск сервера Scalatron из командной строки. Это позволит вам видеть свои сообщения журнала на консоли, что может предоставить информацию о том, почему подключаемый модуль был отключен сервером (как правило, из-за того, что с ним возникла проблема, связанная с ним, неверный ответ или нарушение безопасности). Вы можете проверить «Настройка Scalatron сервера» документации на дополнительные опции командной строки, такие как -verbose yes

  • повторить шаги для вашего проекта IntelliJ Scalatron Bot в документации «Установка Scalatron игрока» настройки: вы компиляции в правильный каталог ? Что-нибудь не хватает?

Надеюсь, это поможет!

+1

Итак, я сделал командную строку с подробным вариантом и он, похоже, успешно находит мой плагин; но затем он дает следующую ошибку: error: exception при создании управляющей функции плагина '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 и установки Java SDK IntelliJ на то же, что я использовал для запуска сервера Scalatron. Также IntelliJ обновил себя и плагин Scala с 1.1.2 до 1.2.1 тем временем (не уверен, что релевантно)

Сначала это не помогло, но затем я попытался отредактировать код через веб-интерфейс и успешно работал с там. После этого код, отредактированный и встроенный в IntelliJ, тоже начал работать (после того, как он, конечно же, избавился от такой глупой попытки, как «Status (текст« + input + »)»;)