Игровое обучение программированиюПредисловиеС данной работой я принимал участие в конкурсе Интернет-разработок в рамках Интернет-фестиваля «МАТРИЦА-ДонНТУ 2009» в номинации "Идея сервиса". Идея сервиса:Пользователям предоставляется возможность обучиться основам программирования на примере программирования роботов. Сервис включает в себя многопользовательские мини-игры, в которых главными действующими лицами являются запрограммированные пользователями роботы. Постоянно улучшая свой код с целью улучшения качества поведения своих роботов, пользователи познают основные идеи алгоритмизации и совершенствуют свои навыки в программировании. Бои роботовИгровое поле представляет собой двухмерное пространство в виде огороженного прямоугольника. На игровом поле могут находиться различные препятствия. Цель участников боя – выйти единственным победителем, т.е. добиться уничтожения всех соперников. Каждый игрок программирует своего робота на встроенном языке программирования. Составные части робота
Рис. 1 – Схематический вид робота Тело робота – это его основа, его габариты. Именно по телу робота необходимо попасть из пушки для нанесения повреждения. Тело робота можно разворачивать, разгонять и замедлять. Пушка – управляется отдельно от тела. Пушку робота необходимо нацеливать на противника и производить выстрелы. Радар – устройство, с помощью которого робот обнаруживает противника. Робот обладает двумя видами энергий. Первый вид энергии – защитный. Она тратится в результате повреждений либо от выстрелов других роботов, либо при столкновении с препятствием. Второй вид – атакующий. Эта энергия расходуется на выстрелы. ПрограммированиеПрограмма пишется на встроенном языке программирования, синтаксис которого похож на C++ и Java. Написанная программа сначала проходит через синтаксический анализатор, а затем отдается внутреннему интерпретатору. Можно объявлять переменные (пользуясь встроенными типами), использовать циклы for, while и do, создавать не только функции, но и классы и объекты. Во встроенном языке присутствуют стандартные математические функции, необходимые для расчета траекторий движения робота и траектории выстрела. Фрагмент программы: move(20); //продвинуться вперед на 20 шагов bodyturn(90); //развернуть тело на 90 градусов gunturn(45); //развернуть пушку на 45 градусов fire(5); //выстрелить с мощностью 5 Кроме стандартных команд управления роботом, присутствуют также команды опроса работоспособности составных частей робота и команды реагирования на внешние события. Команды из программы выполняются последовательно, но они не являются блокирующими, т.е. можно, например, одновременно двигаться вперед и разворачивать пушку. Большинство стандартных действий пользователь может сгруппировать в функции (например, написать свою стандартную реакцию на столкновение с препятствием). Писать программу можно как на локальном компьютере в любом редакторе кода, так и на сайте во встроенном редакторе. После написания программы для робота (и загрузки ее на сервер, если она писалась на локальном компьютере) можно проверить её в бою с роботами, программы для которых заранее написаны (тестовые роботы или боты). Тестовые роботы имеют различные уровни мастерства (интеллекта). Также можно запустить пошаговое выполнение программы своего робота и отладить её – для этого во встроенном редакторе кода будет присутствовать простейший отладчик. Все загруженные программы сохраняются в профиле пользователя в соответствующем разделе. Для удобства редактирования и контролирования своих программ, пользователю предоставляется встроенная система контроля версий. Игровая часть сайтаГлавная цель игры – соревнования пользователей между собой. Пользователи могут сами создавать открытые игры на определенное количество человек, куда может присоединиться любой желающий. Кроме этого, сайт будет проводить глобальные конкурсы для пользователей. Пользователи сами могут устраивать долгосрочные турниры и приглашать туда друзей. У каждого пользователя имеется свой рейтинг, который начисляется по результатам боев. Текстовая часть сайтаКроме программно-игровой части, на сайте будет присутствовать текстовая часть, которая будет наполняться как администрацией, так и пользователями. В качестве статической информации будет присутствовать описание принципов и идеи игры, встроенного языка программирования и галерея скриншотов. Также будет находиться учебный материал для обучения основам игрового программирования. Пользователи могут сами наполнять сайт различными записями (постами, статьями). Например, отчетами о прошедшей битве, описанием тактики ведения боя, описанием тонкостей встроенного языка программирования и просто новостями из ИТ-мира на данную тематику. Дополнительные возможностиПосле окончания битвы её видеозапись сохраняется в профилях участвовавших пользователей во внутреннем формате представления данных, т.е. в таком формате, чтобы эту запись можно было в последующем времени открыть и проанализировать действия роботов. Также имеется возможность экспортировать игру в один из стандартных видео-форматов. Другие игрыКроме стандартных боев роботов, сервис может включать в себя еще несколько разновидностей игр.
Игры могут пополняться в процессе развития сервиса. Возможная программная реализация
Целевая аудиторияСервис предназначен для студентов младших курсов, а также для школьников, которые желают обучиться программированию. Школы и Вузы (факультеты) могут создавать свои группы на сайте для определения рейтинга своих учащихся. |