LXF110:Python
|
|
|
- Программирование Стрелялка в стиле «убей-их-всех» на PyGame для ретро-аркадных приколов
Создаем свою игру
- Руки чешутся пострелять? А также попрограммировать? Присоединяйтесь к Майку Сондерсу: возродим классическую аркаду 1978 года всего 100 строками кода.
Программирование – великая вещь. Можно создавать нечто абсолютно новое, стимулировать свой мозг и получать удовольствие в процессе – особенно если вы пишете игру. В последние месяцы вы просили нас опубликовать более проектно-ориентированный учебник, и сегодня мы попытаемся написать наше видение игры Space Invaders [Космические захватчики] под названием PyInvaders. Кто устал от сухой теории программирования, не паникуйте: мы займемся созданием Клевых Штук™ и сделаем игру рабочей, а не станем трещать об алгоритмах, структурах данных и объектно-ориентированном инкапсулированном полиморфизме. Или о чем-то типа этого.
Однако следование данному руководству возможно, только если у вас есть опыт программирования. Мы не собираемся все разжевывать; если вы баловались написанием кода и раньше и знаете ваши массивы как свои пять пальцев, проблем у вас не будет. Для полных нулей в программировании некоторые термины будут загадочными, но вы не обязаны понимать их все. Почерпните из статьи то, что сможете, возьмите исходный код с LXFDVD и начните эксперименты, внося собственные изменения. Так начинали все программисты!
Наш выбор языка программирования – Python, потому что его простой синтаксис и чистота кода очень удобны для чтения. PyGame, расширение языка, являющееся оберткой мультимедийной библиотеки SDL вокруг Python, обеспечит графический водопровод для нашей программы, спасая нас от тяжкой ручной работы манипулирования изображениями. Большинство дистрибутивов имеют Python предустановленным, а PyGame доступен в ближайшем репозитории, поэтому собирайте инструменты, открывайте текстовый редактор, и начнем кодирование…
Часть 1 Пример на Python
Прежде чем приступать к любому программному проекту, важно разобраться в языке, который вы собираетесь использовать, хотя бы в его основах. Учитывая, что 99% программ комбинируют манипулирование переменными (типизированные хранилища данных), вызов подпрограмм (отдельных кусков кода), и действий с результатом (если a = b делаем с), можно показать работу Python на очень кратком примере. (Если вы заядлый Python’щик, просто пропустите его)
def Multiply(x, y): z=x*y return z a=5 b = 10 print “a is”, a, “and b is”, b answer = Multiply(a, b) if answer > 10: print “Result is bigger than 10” else: print “Less or equal to 10”
Программа короткая, но она демонстрирует массу возможностей Python в действии. Сохраните этот код в файле под именем test.py в вашей домашней директории, затем откройте терминал и введите python test.py для его запуска. Вы должны увидеть несколько строк вывода на экране – это не интерактивная программа, поэтому она возвратит вас назад в командную строку.
Первые три строки определяют (define) функцию с именем Multiply – это кусок кода, который не запускается при старте приложения, а является разновидностью подпрограммы, вызываемой позже. x и y в строке описания функции – две переменные, которые нам надо послать в подпрограмму при ее вызове. Далее вы можете увидеть новую переменную z, созданную внутри функции – ей присваивается произведение x и y. Потом мы возвращаем значение этой переменной обратно в вызывающую программу.
После функции Multiply начинается выполнение основного кода. Мы знаем это, потому что здесь нет отступов – то есть знаков табуляции или пробелов в начале строки. В Python все завязано на использовании отступов, показывающих, где идет код, где он – часть функции или цикла и т.п. В нашем случае отступов нет, потому что это не часть предшествующей функции Multiply, и запуск программы начинается отсюда.
Мы создаем две переменные с именами a и b, присваивая им значения 5 и 10 соответственно. (Переменная является контейнером для данных – она может содержать разную информацию в течение всего времени работы программы.) Мы выводим содержимое переменных и затем посылаем его в функцию Multiply, которую создали ранее. Помните return в теле функции? Так вот, он вернет результат умножения, и мы сохраним его в новой переменной answer. Наконец, проверим, не больше ли переменная answer десяти; если да, печатаем сообщение. Если она меньше (или равна 10), печатаем другое сообщение. Попробуйте менять значения в этой программе и поэкспериментировать с кодом, чтобы освоиться с Python – не бойтесь, вы не сотрете все ваши файлы и не уничтожите вашу систему, допустив ошибку!
Нужна помощь?
Чтобы разобраться в этом уроке, не обязательно быть гуру Python. Если вы полностью поняли предыдущий фрагмент кода и пояснения к нему, вы готовы идти дальше. Но если вы хотите получше разобраться в Python, в интернете для этого есть много великолепных ресурсов. См. превосходное руководство пользователя от Гвидо ван Россума, создателя Python, на http://docs.python.org/tut.