Использование компьютерных игр для обучения программированию

Даниил Кальченко

Colobot

CeeBot

Подводя итоги

 

Язык программирования CBot

 

Нахождение глубинной простоты в запутанном клубке
сущностей — это и есть творчество в программировании.
Х.Д. Миллс, IBM, 1973

В настоящее время необходимость изучения программирования, ставшего неотъемлемой частью подготовки современных специалистов в разных областях, мало у кого вызывает сомнения. Одни считают программирование искусством, другие — наукой, но и те и другие сходятся во мнении, что для того, чтобы добиться успехов в этой области, необходимо целенаправленно и профессионально учиться. Эту дисциплину проходят в школе и преподают в высших и специальных учебных заведениях. Обучение программированию современных детей и подростков — это довольно сложная задача. Они избалованы современными компьютерными играми: различными аркадами, трехмерными шутерами и стратегиями реального времени, — и порой их бывает непросто заинтересовать такой деятельностью, как разработка программ.

Решение квадратного уравнения или разработка простой диалоговой программы в качестве учебных заданий вызывает у подростков гораздо меньше энтузиазма, чем у их предшественников 10-15 лет назад, когда персональные компьютеры были не так широко распространены, как сейчас. Созданы различные методики изучения программирования. Одна из них заключается в использовании специальных программ и игрового процесса, который позволяет погрузить обучаемого в особую среду и визуализировать выполнение программ, за счет чего достигается хорошая наглядность и усваиваемость материала. В настоящей статье рассматривается серия обучающих игр, разработанных швейцарской компанией Epsitec, которые могут быть с успехом использованы для самостоятельного освоения программирования или для изучения дисциплины под руководством преподавателя.

Colobot

Colobot (рис. 1, http://www.ceebot.com/colobot/) — это приключенческий квест с элементами стратегии, разработанный компанией Epsitec. Игра начинается с того, что игрок готовит космический корабль к исследовательской экспедиции на другие планеты. Ему необходимо вручную собрать и доставить к стартовой площадке все необходимое для полета снаряжение, в которое входят различные ресурсы (титановые слитки, энергетические батареи) и несколько ботов (специализированных программируемых роботов).

 

Рис. 1. Colobot

Рис. 1. Colobot

Через несколько миссий выполнять эти задачи вручную станет утомительно, а количество подконтрольных роботов потихоньку возрастет; кроме того, из центра начинают присылать первые программы, облегчающие управление. Например, батарею бота можно поменять одной кнопкой, запускающей соответствующую программу. Когда сложность и число задач, возложенных на плечи игрока, превышает некоторый предел, волей-неволей приходится браться за автоматизацию соответствующих процессов, таких как перезарядка батарей, автоматический ремонт, поиск ресурсов и защита от вражеских нападений (которые осуществляются различными инопланетными существами) и др. Для этого доступен мощный объектно-ориентированный язык (информацию о нем можно найти во врезке). Программы приходится адаптировать, дорабатывать, усложнять, приспосабливая к текущей миссии или к привычкам игрока.

Кстати, игра содержит обширный набор тренировочных миссий, которые интересны сами по себе. В них можно найти много полезных заданий, которые позволяют хорошо изучить и освоить доступные возможности и основы программирования ботов (две учебные задачи и решающие их исходные коды представлены во врезке).

Чтобы пользователь лучше разобрался в алгоритмах, лежащих в основе той или иной тренировочной программы, ему предлагаются соответствующие иллюстрации (рис. 2), способствующие выработке алгоритмического мышления. Учебник подсказывает, каким образом следует разложить решение той или иной задачи на простейшие алгоритмические шаги, какие функции из богатой библиотеки функций и методов надо использовать и какие у них входные параметры.

 

Рис. 2. Иллюстрации к алгоритмам

Рис. 2. Иллюстрации к алгоритмам

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

Игрок может наблюдать за происходящим со стороны или переключиться на одну из камер, установленных на каждом боте, и уже из его кабины следить за событиями. При желании можно открыть исходный код исполняемой программы и наблюдать за ее работой (рис. 3). Пользователю доступен удобный редактор с изменяемым размером шрифта, подсветкой синтаксиса и контекстными подсказками по функциям и методам.

 

Рис. 3. Слежение за ходом выполнения программы из редактора

Рис. 3. Слежение за ходом выполнения программы из редактора

Кроме того, игра содержит встроенную документацию по языку и информацию по заданиям каждой миссии (рис. 4). Таким образом, справочник по CBot, доступным типам данных, функциям и методам, ботам, строениям и другим объектам будет всегда под рукой.

 

Рис. 4. Инструктирование по выполнению тренировочной миссии

Рис. 4. Инструктирование по выполнению тренировочной миссии

Благодаря написанным программам оживают целые группы объектов и на базе начинается жизнь: одни боты меняют батареи, другие исследуют окрестности в поисках титановой руды, используя информацию с радара, третьи ведут прицельный огонь по атакующим базу врагам. По сути, игрок программирует автономных агентов и искусственный интеллект. Глядя на то, какой слаженности и эффективности работы можно добиться, можно только удивляться, почему в некоторых стратегиях эта часть бывает так слабо реализована.

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

 

Рис. 5. Атака на базу

Рис. 5. Атака на базу

     

Язык программирования CBot

Язык программирования CBot предназначен для управления объектами и обеспечения их взаимодействия в рамках игрового мира. Этот мощный объектно-ориентированный язык использует синтаксис таких языков, как C++ и Java. Он поддерживает закрытые и открытые члены классов, позволяет создавать методы с ключевым словом synchronized, которое гарантирует, что соответствующий метод в любой момент времени будет выполняться не более чем одним ботом.

Среди поддерживаемых типов данных — целые числа и числа с плавающей запятой, булевы переменные, текстовые сроки, переменные для хранения трехмерных координат и специальные переменные, содержащие информацию об объекте. Присутствует даже ключевое слово void, предназначенное для объявления нетипизированных переменных. CBot имеет полный набор управляющих конструкций, циклов, такие операторы, как break и continue, а также функции для работы с файлам, что дает возможность выгружать данные на диск и загружать их при необходимости.

Все предметы в игре являются объектами, которые можно разделить на следующие типы: здания, боты, переносные объекты, враги, а также ряд дополнительных объектов, в числе которых — месторождения полезных ископаемых и группа цветных флагов.

В группе почти 20 строений, существующих в игре, помимо таких специальных объектов, как центр управления миссий и космический корабль, присутствуют здания, которые необходимы для поиска, добычи и переработки ресурсов, для производства ботов и зарядки энергетических батарей, для проведения научных исследований, ремонта ботов и защиты базы от врагов. Игрок может строить большинство из них по мере развития технологий и при условии наличия всех необходимых для этого ресурсов.

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

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

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

У каждого бота существует свой набор встроенных (поддерживаемых) методов, который определяется его устройством и функциональными возможностями. Используя доступные функции в программах, можно рассчитывать координаты точек и находить расстояние до них, выдерживать паузы, перемещаться в заданные координаты, определять высоту текущей точки, изменять направление движения, напрямую управлять двигателями и др. Роботы, имеющие оружие, могут атаковать врагов, сборщики — переносить грузы, а исследователи — зондировать почву.

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

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

Вторая программа, предназначена для крылатого стрелка, на которого возложена задача защищать базу от атакующих муравьев. Бот сначала поднимается на заданную высоту, а потом начинает стрелять по врагам, находящимся в зоне досягаемости его оружия.

 

 
В начало В начало

CeeBot

Серия из четырех игр под общим названием CeeBot (http://www.ceebot.com/ceebot/) появилась примерно через год после выхода оригинальной игры и является ее развитием. В CeeBot была улучшена графика, появился трехмерный позиционируемый звук, усовершенствован язык CBot и добавлена поддержка непосредственного общения и взаимодействия ботов. Кроме того, в CeeBot появились пошаговый отладчик программ и новые возможности для роботов: например, аналог старой доброй «черепашьей графики», когда, передвигаясь, бот может отмечать свой путь линией разных цветов. Но, к сожалению, из игр был исключен развлекательный аспект, и теперь они представляют собой подробный, расширенный обучающий курс, содержащий набор отдельных заданий, а не связанных миссий в рамках некоторой кампании.

Первая игра — CeeBot-Teen — ориентирована на детей от 10 до 15 лет. Для выполнения различных миссий на настольном компьютере или на рабочем столе им предстоит программировать небольших специальных роботов. После того как будут изучены основы, игрок сможет программировать роботов уже в более сложной внешней среде. Игра предназначена для изучения основных понятий алгоритмов и языков программирования — это последовательные инструкции, циклы и повторения, принятие решений, условные переходы и переменные.

Игра CeeBot-A является прямой наследницей Colobot. Игра подходит и для подростков, и для взрослых. Для решения задач в окружающей среде и на различных планетах игрок должен программировать разных роботов. При этом пользователю доступен мощный объектно-ориентированный язык с поддержкой обработки исключений и рядом улучшений по сравнению с версий, доступной в Colobot. Игра CeeBot-A предназначена для изучения и закрепления таких тем, как циклы, проверка условий, переменные, массивы, функции и классы.

Игра CeeBot-3 ориентирована на детей от 10 до 15 лет; ее основная цель заключается в том, чтобы создавать программы для робота-чертежника, который, передвигаясь, должен рисовать заданные изображения набором цветных карандашей.

CeeBot-4 можно использовать и как игру, и как программу, предназначенную для самостоятельного изучения программирования или для преподавания дисциплины, например в школе. Задача игрока состоит в том, чтобы использовать объектно-ориентированный язык, близкий к C++ и Java, для программирования роботов, которые должны решать различные задачи — от поиска выхода из лабиринта и управления автомобилем на гонках до игры в футбол.

 

Таким образом, все четыре игры в большей степени ориентированы на обучение программированию, чем оригинальная игра, которая носит развлекательный и квестово-стратегический характер.

Пользователям доступны две версии каждой из игр. Персональная версия предназначена для частного использования. Для ее работы необходимо наличие CD-диска с игрой в приводе компакт-дисков, а программы-решения всегда доступны для просмотра. Школьная версия предназначена для инсталляции программы на любое количество компьютеров в рамках одной образовательной организации. После установки она не требует оригинального диска для работы и позволяет заблокировать доступ к решениям, чтобы избежать подглядывания при выполнении упражнений. Также можно запретить изменение настроек программы.

Существует специальная версия программы — CeeBot-Hemisson, которая позволяет программировать настоящего внешнего аппаратного робота Hemisson (рис. 6, http://www.hemisson.com/), разработанного компанией K-Team. С помощью этого программно-аппаратного комплекса можно изучать и преподавать программирование и робототехнику. По информации, опубликованной на сайте компании-разработчика, пакет CeeBot-Hemisson можно приобрести по той же цене, что и стандартный пакет Hemisson.

 

Рис. 6. Hemisson Robot

Рис. 6. Hemisson Robot

CeeBot-Hemisson содержит более 30 упражнений, которые позволяют изучить основные понятия робототехники и различные понятия алгоритмов, необходимые для программирования роботов. Эта игра представляет собой полную обучающую программу, которая может быть с успехом использована и для того, чтобы изучать программирование с преподавателем, и для самостоятельного обучения. В качестве языка для программирования робота используется CBot.

В начало В начало

Подводя итоги

В наши дни программирование нередко называют второй грамотностью. Его изучают и в школе, и в вузах, хотя, к сожалению, далеко не всегда успешно. Важность освоения этой дисциплины не вызывает сомнения с учетом тенденций внедрения информационных технологий в различные аспекты нашей жизни, будь то программирование домашнего видеомагнитофона или составление макроса в офисном пакете.

Обучение через игры — плодотворный и перспективный метод, который может с успехом использоваться на практике, особенно при работе с детьми и подростками. Ведь порой бывает достаточно небольшого толчка, чтобы пробудить интерес и мотивацию к изучению этой темы. И вот уже игрок сам, начиная с небольших скриптов, создает целые программные комплексы, которые решают поставленные перед ними задачи.

Любители компьютерных игр, наверное, уже подумали, каких результатов и эффективности можно было бы добиться, если бы подобные возможности были доступны в современных стратегиях. Возможно, это всего лишь вопрос времени и игры, в которых можно будет автоматизировать те или иные аспекты, создавая специальные программы, появятся на рынке в ближайшее время — как только подрастет поколение, воспитанное на играх Epsitec. Как знать…

На прилагаемом к журналу компакт-диске вы найдете демонстрационные версии описанных в статье программ, а также документацию по CBot на английском языке в формате HTML.

КомпьютерПресс 9'2005


Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует