Robocode. Как игры помогают в изучении Java?
Robocode. Как игры помогают в изучении Java? Совсем недавно среди новых Java-проектов на alphaworks.ibm.com появился Robocode. Многие отнеслись к этому событию весьма скептически. Однако те, кто все же опробовал Robocode, согласились, что это не просто очередная игрушка — это великолепный тренажер для программистов, которые хотели бы научиться программировать на Java и не только.
Что же особенного в этой игре, что заставило обратить на нее внимание столь многих людей? Сюжет игры заключается в организации боев роботов-танков. Каждый робот представляет собой отдельный класс, который наследует свойства и методы класса Robot. Таким образом каждый робот может быть запрограммирован игроком на определенное поведение. После того, как игроки создали свои классы роботов, можно создать бой (Battle) и выставить их друг против друга. В процессе игры роботы-танки ездят по выделенному участку поля определенных размеров и пытаются попасть друг в друга снарядами. Казалось бы, идея не так уж и нова. Вы наверняка помните программируемых змеек, которые кусали друг друга за хвост. Но в случае с Robocode вы имеете возможность использовать для описания поведения своих роботов один из самых лучших на сегодняшний день языков программирования — Java.
Игру можно скачать с сайта проекта на AlphaWorks — http://robocode.alphaworks.ibm.com . Вам необходимо скачать .jar файл, содержащий программу установки. После этого убедитесь в наличии у вас по крайней мере JRE (Java Runtime Environment). (JRE должен входить в поставку каждой уважающей себя операционной системы.) Однако, если вы хотите не только следить за боями чужих роботов, но и создавать свои, то вам понадобится также J2SDK (Java 2 Standard Development Kit). Причем второй включает JRE, поэтому вы можете просто скачать J2SDK с http://java.sun.com/ и не беспокоиться по поводу JRE. После этого запустите программу установки Robocode:
java -jar robocode-installer.jar
Будет запущен мастер установки программы, ответив на вопросы которого, вы будете иметь рабочий вариант игры. Запустить игру можно несколькими способами: использовать созданный ярлык на рабочем столе; запустить скрипт из директории, куда была установлена игра либо выполнить следующую команду (при этом вам необходимо находиться в директории с игрой):
java -Xmx256M -jar robocode.jar
После загрузки приложения вы увидите вполне привычное окно с графическим интерфейсом. Основную часть нашего окна занимает область, в которой будут воевать роботы. Она черного цвета. Вы также можете обратить внимание на меню, состоящее из четырех подменю: Battle — предназначен для создания, загрузки и сохранения боев; Robot — создание, изменение, экспортирование роботов, а также возможность создания команд (team) роботов; Options — позволяет вам настроить некоторые параметры игры и установить размер экрана по умолчанию; Help — справочная система, в основном ссылки on-line помощи.
Для начала давайте настроим нашу игру так, как нам нужно. Для этого выберем пункт меню Options -> Preferences. Вы видите следующее окошко, состоящее из двух закладок, позволяющих регулировать основные параметры игры.
Вот список параметров на закладке View Options (Опции отображения):
Visible Robot Enegry — флажок определяет, отображать ли энергию роботов над ними или нет. При каждом попадании в танк или при произведении выстрела его энергия уменьшается.
Visible Robot Name — если флажок включен, то под каждым роботом будет высвечиваться его имя.
Visible Scan Arcs — отображать ли области сканирования (поиска противника). Автор рекомендует не включать эту опцию на слабых машинах, но выглядит это довольно красиво.
Allow robots to change colors repeatedly — позволяет роботам изменять цвет. Тоже не рекомендуется на слабых машинах.
Display FPS in titlebar — отображать ли текущий FPS в заголовке окна.
На этой закладке также можно установить желаемое значение FPS (по умолчанию 30). Для установки этого параметра можно воспользоваться одной из четырех кнопок, задающих соответственно минимальный (Minimal), по умолчанию (Default), быстрый (Fast) и максимальный FPS (max FPS).
Следующая закладка называется Development Options (Опции разработки). На ней присутствует единственный параметр, который задает дополнительные пути CLASSPATH для ваших роботов, в случае если вы используете свою интегрированную среду разработки на Java (IDE) и хотите, чтобы ваши роботы собирались без вынужденного копирования их исходников и готовых классов в директорию robots программы Robocode.
Один из основных способов создания нового робота — это воспользоваться встроенным редактором. Его можно вызвать: Robot -> Editor. После этого у вас открывается новое окно редактора. Редактор имеет свое собственное меню. Для начала подкорректируем, если требуется, настройки компилятора роботов Compiler -> Options -> Preferences. Единственное, что может вызвать сомнение в текущих настройках — это внесен ли путь к javac в переменную окружения Path. Если нет, то вы можете изменить значение Compiler Binary, указав полный путь к javac. Далее нажимаем OK и продолжаем работу с редактором.
Для создания нового робота выбираем пункт меню File -> New -> Robot. Вводим имя нашего робота, например: Alex_Robot. Имя робота должно удовлетворять требованиям Java к именам классов. Ведь имя робота фактически присваивается имени класса. Далее вас попросят ввести имя, ник или другие, вас идентифицирующие данные, т.е. под этим именем вас будут знать другие создатели роботов, пытающихся заставить свой танк победить ваш. Здесь накладываются аналогичные ограничения, т.к. это имя используется в качестве имени пакета с вашими роботами.
После этого вы увидите окно редактора с уже сгенерированным шаблоном Java-кода вашего робота. Далее все зависит от вас, вашей фантазии и ваших умений. В этой статье не стану описывать приемы программирования роботов, оставлю это как тему для следующей статьи. Скажу лишь, что API для программирования роботов вы можете просмотреть в виде javadoc. Не бойтесь экспериментировать. Количество методов и свойств всех используемых классов открывает невообразимые горизонты для проявления ваших творческих способностей. Предусмотрены даже возможности программирования победных финтов. API постоянно усовершенствуется, поэтому не забывайте посещать домашнюю страничку Robocode.
Далее, сохранив вашего робота, скомпилируем его. Для этого вызовем пункт меню Compiler -> Compile. Возможно, сначала вам предложат протестировать работу вашего J2SDK автоматически или оставить это на вашей совести. Собственно, это всего лишь дополнительная возможность и вам не обязательно это делать. Программа всего-навсего попытается откомпилировать свой пример, выводящий на стандартное устройство вывода определенную строку, и проверит правильность вывода. Далее будет скомпилирован код вашего робота. Если в процессе написания кода были допущены ошибки, программа выведет их перечень.
Итак, вы успешно справились с компиляцией вашего робота и хотите его опробовать? Нет проблем. Для этого нам понадобится создать новый бой (Battle). Это можно сделать двумя способами. Первый — это создать его в обыкновенном текстовом редакторе. Пример вы можете взять в директории battles в домашней директории Robocode. Например, sample.battle:
#Battle Properties
#Mon Oct 01 20:58:23 EDT 2001
# Задает количество раундов
robocode.battle.numRounds=10
# Часть энергии, отнимаемой одним выстрелом
robocode.battle.rules.gunCoolingRate=0.1
# Ширина поля боя
robocode.battleField.width=800
# Время
robocode.battle.rules.inactivityTime=450
# Список роботов, участвующих в бое через запятую (имя_пакета.Имя_класса)
robocode.battle.selectedRobots=sample.Corners,sample.Fire,sample.MyFirstRobot,sample.SittingDuck,sample.Walls
# Высота поля боя
robocode.battleField.height=600
На основе такого шаблона вы без труда сможете создавать новые бои. Второй способ более простой и распространенный. Необходимо воспользоваться пунктом меню Battle -> New (или Open для уже созданных боев). Далее вы видите диалоговое окно, в котором можно изменить любые параметры боя. Все параметры соответствуют тем, что мы рассмотрели при анализе файла sample.battle. Далее нажимаем Start Battle и наблюдаем за происходящим на поле боя:).
Обратите внимание, что на поле могут присутствовать одновременно несколько роботов-танков, которые в свою очередь могут быть объединены в команды (teams). Вы можете приостановить и продолжить бой, нажав кнопку Pause и Resume соответственно. Также вы можете прервать бой кнопкой Stop. На панели справа присутствуют кнопки с именами роботов. Нажав на нужную кнопку с интересующим вас танком, вы можете увидеть его статистику, а также убить этого робота, если это необходимо.
Эта игра уникальна хотя бы тем, что написана на Java. Она может работать в любой операционной системе, для которой существует JVM, а сегодня это фактически все современные операционные системы. Она позволяет приятно проводить время не только для искушенных программистов, но также наделяет стремлением людей учить очень модный язык программирования. Да, именно модный.
Часто ли вам приходилось искать причину, чтобы учить тот или иной язык программирования? Часто ли ваши попытки выучить язык без применения на практике давали приемлемый результат? Как ни странно, эта игра дает и то, и другое. Она, как хороший учебник, увлекательна и полезна. Я бы всерьез посоветовал вам обратить на нее внимание. За дополнительной информацией обращайтесь на сайт разработчиков robocode.alphaworks.ibm.com.
Эта игра также позволяет программистам устраивать соревнования. А это уже серьезная перспектива.
Алексей Литвинюк (c) litvinuke@tut.by
www.litvinuke.hut.ru
Что же особенного в этой игре, что заставило обратить на нее внимание столь многих людей? Сюжет игры заключается в организации боев роботов-танков. Каждый робот представляет собой отдельный класс, который наследует свойства и методы класса Robot. Таким образом каждый робот может быть запрограммирован игроком на определенное поведение. После того, как игроки создали свои классы роботов, можно создать бой (Battle) и выставить их друг против друга. В процессе игры роботы-танки ездят по выделенному участку поля определенных размеров и пытаются попасть друг в друга снарядами. Казалось бы, идея не так уж и нова. Вы наверняка помните программируемых змеек, которые кусали друг друга за хвост. Но в случае с Robocode вы имеете возможность использовать для описания поведения своих роботов один из самых лучших на сегодняшний день языков программирования — Java.
Игру можно скачать с сайта проекта на AlphaWorks — http://robocode.alphaworks.ibm.com . Вам необходимо скачать .jar файл, содержащий программу установки. После этого убедитесь в наличии у вас по крайней мере JRE (Java Runtime Environment). (JRE должен входить в поставку каждой уважающей себя операционной системы.) Однако, если вы хотите не только следить за боями чужих роботов, но и создавать свои, то вам понадобится также J2SDK (Java 2 Standard Development Kit). Причем второй включает JRE, поэтому вы можете просто скачать J2SDK с http://java.sun.com/ и не беспокоиться по поводу JRE. После этого запустите программу установки Robocode:
java -jar robocode-installer.jar
Будет запущен мастер установки программы, ответив на вопросы которого, вы будете иметь рабочий вариант игры. Запустить игру можно несколькими способами: использовать созданный ярлык на рабочем столе; запустить скрипт из директории, куда была установлена игра либо выполнить следующую команду (при этом вам необходимо находиться в директории с игрой):
java -Xmx256M -jar robocode.jar
После загрузки приложения вы увидите вполне привычное окно с графическим интерфейсом. Основную часть нашего окна занимает область, в которой будут воевать роботы. Она черного цвета. Вы также можете обратить внимание на меню, состоящее из четырех подменю: Battle — предназначен для создания, загрузки и сохранения боев; Robot — создание, изменение, экспортирование роботов, а также возможность создания команд (team) роботов; Options — позволяет вам настроить некоторые параметры игры и установить размер экрана по умолчанию; Help — справочная система, в основном ссылки on-line помощи.
Для начала давайте настроим нашу игру так, как нам нужно. Для этого выберем пункт меню Options -> Preferences. Вы видите следующее окошко, состоящее из двух закладок, позволяющих регулировать основные параметры игры.
Вот список параметров на закладке View Options (Опции отображения):
Visible Robot Enegry — флажок определяет, отображать ли энергию роботов над ними или нет. При каждом попадании в танк или при произведении выстрела его энергия уменьшается.
Visible Robot Name — если флажок включен, то под каждым роботом будет высвечиваться его имя.
Visible Scan Arcs — отображать ли области сканирования (поиска противника). Автор рекомендует не включать эту опцию на слабых машинах, но выглядит это довольно красиво.
Allow robots to change colors repeatedly — позволяет роботам изменять цвет. Тоже не рекомендуется на слабых машинах.
Display FPS in titlebar — отображать ли текущий FPS в заголовке окна.
На этой закладке также можно установить желаемое значение FPS (по умолчанию 30). Для установки этого параметра можно воспользоваться одной из четырех кнопок, задающих соответственно минимальный (Minimal), по умолчанию (Default), быстрый (Fast) и максимальный FPS (max FPS).
Следующая закладка называется Development Options (Опции разработки). На ней присутствует единственный параметр, который задает дополнительные пути CLASSPATH для ваших роботов, в случае если вы используете свою интегрированную среду разработки на Java (IDE) и хотите, чтобы ваши роботы собирались без вынужденного копирования их исходников и готовых классов в директорию robots программы Robocode.
Один из основных способов создания нового робота — это воспользоваться встроенным редактором. Его можно вызвать: Robot -> Editor. После этого у вас открывается новое окно редактора. Редактор имеет свое собственное меню. Для начала подкорректируем, если требуется, настройки компилятора роботов Compiler -> Options -> Preferences. Единственное, что может вызвать сомнение в текущих настройках — это внесен ли путь к javac в переменную окружения Path. Если нет, то вы можете изменить значение Compiler Binary, указав полный путь к javac. Далее нажимаем OK и продолжаем работу с редактором.
Для создания нового робота выбираем пункт меню File -> New -> Robot. Вводим имя нашего робота, например: Alex_Robot. Имя робота должно удовлетворять требованиям Java к именам классов. Ведь имя робота фактически присваивается имени класса. Далее вас попросят ввести имя, ник или другие, вас идентифицирующие данные, т.е. под этим именем вас будут знать другие создатели роботов, пытающихся заставить свой танк победить ваш. Здесь накладываются аналогичные ограничения, т.к. это имя используется в качестве имени пакета с вашими роботами.
После этого вы увидите окно редактора с уже сгенерированным шаблоном Java-кода вашего робота. Далее все зависит от вас, вашей фантазии и ваших умений. В этой статье не стану описывать приемы программирования роботов, оставлю это как тему для следующей статьи. Скажу лишь, что API для программирования роботов вы можете просмотреть в виде javadoc. Не бойтесь экспериментировать. Количество методов и свойств всех используемых классов открывает невообразимые горизонты для проявления ваших творческих способностей. Предусмотрены даже возможности программирования победных финтов. API постоянно усовершенствуется, поэтому не забывайте посещать домашнюю страничку Robocode.
Далее, сохранив вашего робота, скомпилируем его. Для этого вызовем пункт меню Compiler -> Compile. Возможно, сначала вам предложат протестировать работу вашего J2SDK автоматически или оставить это на вашей совести. Собственно, это всего лишь дополнительная возможность и вам не обязательно это делать. Программа всего-навсего попытается откомпилировать свой пример, выводящий на стандартное устройство вывода определенную строку, и проверит правильность вывода. Далее будет скомпилирован код вашего робота. Если в процессе написания кода были допущены ошибки, программа выведет их перечень.
Итак, вы успешно справились с компиляцией вашего робота и хотите его опробовать? Нет проблем. Для этого нам понадобится создать новый бой (Battle). Это можно сделать двумя способами. Первый — это создать его в обыкновенном текстовом редакторе. Пример вы можете взять в директории battles в домашней директории Robocode. Например, sample.battle:
#Battle Properties
#Mon Oct 01 20:58:23 EDT 2001
# Задает количество раундов
robocode.battle.numRounds=10
# Часть энергии, отнимаемой одним выстрелом
robocode.battle.rules.gunCoolingRate=0.1
# Ширина поля боя
robocode.battleField.width=800
# Время
robocode.battle.rules.inactivityTime=450
# Список роботов, участвующих в бое через запятую (имя_пакета.Имя_класса)
robocode.battle.selectedRobots=sample.Corners,sample.Fire,sample.MyFirstRobot,sample.SittingDuck,sample.Walls
# Высота поля боя
robocode.battleField.height=600
На основе такого шаблона вы без труда сможете создавать новые бои. Второй способ более простой и распространенный. Необходимо воспользоваться пунктом меню Battle -> New (или Open для уже созданных боев). Далее вы видите диалоговое окно, в котором можно изменить любые параметры боя. Все параметры соответствуют тем, что мы рассмотрели при анализе файла sample.battle. Далее нажимаем Start Battle и наблюдаем за происходящим на поле боя:).
Обратите внимание, что на поле могут присутствовать одновременно несколько роботов-танков, которые в свою очередь могут быть объединены в команды (teams). Вы можете приостановить и продолжить бой, нажав кнопку Pause и Resume соответственно. Также вы можете прервать бой кнопкой Stop. На панели справа присутствуют кнопки с именами роботов. Нажав на нужную кнопку с интересующим вас танком, вы можете увидеть его статистику, а также убить этого робота, если это необходимо.
Эта игра уникальна хотя бы тем, что написана на Java. Она может работать в любой операционной системе, для которой существует JVM, а сегодня это фактически все современные операционные системы. Она позволяет приятно проводить время не только для искушенных программистов, но также наделяет стремлением людей учить очень модный язык программирования. Да, именно модный.
Часто ли вам приходилось искать причину, чтобы учить тот или иной язык программирования? Часто ли ваши попытки выучить язык без применения на практике давали приемлемый результат? Как ни странно, эта игра дает и то, и другое. Она, как хороший учебник, увлекательна и полезна. Я бы всерьез посоветовал вам обратить на нее внимание. За дополнительной информацией обращайтесь на сайт разработчиков robocode.alphaworks.ibm.com.
Эта игра также позволяет программистам устраивать соревнования. А это уже серьезная перспектива.
Алексей Литвинюк (c) litvinuke@tut.by
www.litvinuke.hut.ru
Компьютерная газета. Статья была опубликована в номере 24 за 2002 год в рубрике программирование :: java