Как известно, хорошая мысля приходит опосля. Вот и мне только пришла в голову мысль использовать для уроков систему контроля версий. Те, кто знаком с этим понятием, могут сразу перейти в конец статьи к описанию сделанных изменений и ссылке на репозиторий, для остальных попробую вкратце описать суть. Теория. Вот что говорит нам википедия "Система управления версиями (от англ. Version Control System, VCS или Revision Control System) — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости, возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение и многое другое." В нашем случае изменяющаяся информация - это код, меняющийся от урока к уроку. В качестве системы контроля версий я буду использовать Mercurial, а размещаться это всё будет на гуглькоде. Почему Mercurial а не более популярная CVS? Ну, наверно выбор пал на него потому что он на питоне написан :). Про Mercurial более подробно можно прочитать на той же википедии. Для чего это нам всё нужно: чем больше становится кода, тем сложнее отследить что и где поменялось в новом уроке. Система контроля версий легко решает эту проблему, отслеживая изменения от ревизии к ревизии - добавление, удаление, изменение файлов, а с помощью инструмента diff можно наглядно видеть изменения в конкретном файле. Теперь как с этим работать: отправляемся по ссылке http://code.google.com/p/panda-rpg-tutorial/source/checkout и видим следующую надпись "Get a local copy of the panda-rpg-tutorial repository with this command: hg clone https://panda-rpg-tutorial.googlecode.com/hg/ panda-rpg-tutorial " Данная команда предназначена в основном для пользователей Linux, привыкших работать в командной строке Для всех остальных рекомендую скачать и поставить TortoiseHg - графический фронтенд для системы контроля версий Mercurial. После установки создадим где-нибудь директорию с именем panda-rpg-tutorial, щёлкнув на ней правой кнопкой обнаружим, что в контекстном меню появился новый пункт - TortoiseHg. Выберем его и выполним команду "клонировать", в открывшемся диалоге в качеств исходного пути впишем https://panda-rpg-tutorial.googlecode.com/hg/ и нажмём "Ок". Названия и расположения нужных пунктов могут несколько отличаться для разных версий и операционных систем, поэтому скринов не привожу, чтобы не путать людей. Суть же остаётся одна - нам необходимо будет сделать локальный клон репозитория у себя на компе, чтобы в дальнейшем можно было с ним работать. В принципе, можно всего этого и не делать - гугль предоставляет все необходимые инструменты для просмотра и сравнения изменений напрямую через веб-интерфейс, так что можно сравнивать и скачивать файлы необходимой ревизии и вручную. Практика. Перейдём к практическому рассмотрению работы. Я внёс некоторые изменения в файлы. Смотрим сюда http://code.google.com/p/panda-rpg-tutorial/source/list . На момент написания статьи список изменений в проекте выглядел следующим образом: Первая ревизия - "Урок 6. Да будет жизнь." - здесь я просто закачал файлы последнего на данный момент урока в качестве стартовой точки. После этого внёс изменения в проект и сделал следующую ревизию - она у меня называется "Урок 7. Контроль версий.". Чтобы увидеть какие изменения были внесены, щёлкнем на нужную ревизию. Видим примерно следующее: Mercurial с помощью гугловского фронтэнда рассказывает нам о том, что в данной ревизии были внесены изменения в файлы /modules/character.py и /modules/control.py. Щёлкнув на ссылку diff мы сможем посмотреть что же конкретно изменилось: В данном случае показан файл control.py. Слева у нас старая ревизия, справа - новая. Цветами наглядно подсвечены изменения. Аналогично можно глянуть и другой файл - может показаться, что там изменений больше, однако, посмотрите - на самом деле всего лишь сдвинут блок в связи с добавлением условного оператора. Суть внесённых изменений. Суть внесённых изменений в следующем - я немного доработал класс персонажа: 1. добавил переменную - флаг, сигнализирующую о том, кем должен контролироваться персонаж - игроком или ИИ (NPC). Это птребуется для следующего урока; 2. изменил работу с точками пути. Тепрь в качестве точки пути добавляется кортеж, в котором первым элементом идёт команда, а вторым - параметры команды ('goto', Vec3(10.0,20.0,0.0)). Ведь наш персонаж должен будет уметь не только ходить, но и взаимодействовать с окружающим миром. Пока что, конечно, он умеет только перемещаться и понимает только команду "goto", но в дальнейшем мы обучим его и другим командам, например команде атаки.
Репозиторий http://code.google.com/p/panda-rpg-tutorial/source/checkout
|