Вики: Python - высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций. Python поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное. Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Питоне организовывается в функции и классы, которые могут объединяться в модули (которые в свою очередь могут быть объединены в пакеты). Pygame - это кроссплатформенная библиотека языка Python, предназначенная для написания компьютерных игр и мультимедиа приложений. Pygame базируется на библиотеке SDL. Изначально Pygame был написан Питом Шиннерсом (Pete Shinners). Начиная примерно с 2004/2005 года поддерживается и развивается сообществом свободного программного обеспечения. От себя: Python - достаточно лёгкий и удобный язык для понимания и изучения. То что, написано на питоне воспринимается достаточно легко. Теперь у любителей этого языка появилась возможность запускать и портировать pyGame игры с сайта pygame.org Огромное спасибо rock88 за подсказку с компиляцией. Установка: 1. Качаем архив games.7z, распаковываем в корень карты памяти. 2. Устанавливаем нужные пакеты, запускаем. Примечания: - Архив games.7z содержит кроме питона и pyGame так же и SDL (и др. необходимые) библиотеки, собранные для ZN5. Если вы устанавливаете питон + pyGame на другую модель телефона (Z6/E8/EM30/VE66/V8 etc.) То сохраните свою папку games/lib и не заменяйте её той, что с архива. - В архиве много файлов, кидать лучше через картридер, в противном случае кидаться будет долго. - Если у вас что-то не получается, не стесняйтесь спросить в этой теме. Для разработчиков: Рассмотрим пример портирования на игре PyForce. PyForce - это скроллшутер написанный на питоне для телефонов Nokia под Symbian OS. 1. Скачиваем исходный код игры со страницы (Source), распаковываем. Видим папки и файлы: - lib - исходный код игры, либа - res - ресурсы, датафайлы - run.pyw - файл для запуска игры. 2. Создаём файл run.sh и кидаем его в папку с игрой, структура скрипта run.sh: Code #!/bin/sh mypath=${0%/*} export HOME=$mypath LIBDIR1=/ezxlocal/download/mystuff/games/lib LIBDIR2=/mmc/mmca1/games/lib LIBDIR3=$mypath/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBDIR1:$LIBDIR2:$LIBDIR3 export SDL_QT_INVERT_ROTATION=1 PYTHONHOME=/mmc/mmca1/games/python export PYTHONHOME PYTHONPATH=${PYTHONHOME}/lib/python2.5/site-packages:$PYTHONPATH PYTHONPATH=${PYTHONHOME}/lib/python2.5:$PYTHONPATH PYTHONPATH=${PYTHONHOME}:$PYTHONPATH export PYTHONPATH LD_LIBRARY_PATH=${PYTHONHOME}/extras:${LD_LIBRARY_PATH} export LD_LIBRARY_PATH cd $mypath
exec $PYTHONHOME/bin/python.elf $mypath/run.pyw 3. Кидаем папку на телефон, например в каталог mgxbox. Подключаемся по телнету, пробуем запустить игру. В телнет кидает такой лог: Code /mmc/mmca1/mgxbox/pyForce/run.sh hide splash: -1 map framebuffer at 0x40de8000 (size 262144) QT Show: 3345 setAltitude and requestFocus, winId:1821, fget:1, alt:0, fixed:1, order:1
psyco NOT installed, program may run slower Traceback (most recent call last): File "/mmc/mmca1/mgxbox/test/run.pyw", line 35, in <module> game = PyForce() File "lib/pyforce.py", line 31, in __init__ self.screen = pygame.display.set_mode(RESOLUTION) pygame.error: Couldn't create screen bitmap ~SDL_QWin(): done QT Show: 3345 requestFocus: lost, winId:1821 Где видны следующие ошибки: 1). psyco NOT installed, program may run slower - Компилятор psyco не установлен, программа может выполняться медленно. (Игнорируем эту ошибку, psyco компилятор под x86 архитектуру) 2). self.screen = pygame.display.set_mode(RESOLUTION) pygame.error: Couldn't create screen bitmap - Именно с этой ошибкой нам и нужно бороться. Это ошибка создания экрана, связанная с разрешением экрана. Разрешение устанавливается 31-ой строкой self.screen = pygame.display.set_mode(RESOLUTION) в файле lib/pyforce.py. Ищем слово RESOLUTION по всем исходникам игры. Для этого можно использовать удобный текстовой редактор Notepad++. Находим в файле lib/const.py RESOLUTION = (360, 480) и правим на RESOLUTION = (320, 240) для landscape режима и RESOLUTION = (240, 320) для портретного. Во многих играх разрешение может устанавливаться как pygame.display.set_mode((640, 480)) В любом случае чтобы поменять разрешение ищем строку pygame.display.set_mode Для некоторых игр придётся ещё править размеры картинок (Если игра под 640*480 - уменьшать в 2 раза, если 800*600 - в 2,5 раза.) Для данной игры это не требуется. После того, как исправили разрешение, пробуем запустить игру ещё раз. 4. Игра теперь отлично запускается, но нужно настроить управление. Т.к отсутствует кнопка огонь. Ищем в исходниках по слову K_, находим следующее: Code lib\battlefield.py 134 - if key[K_UP]: # Движение корабля вверх 136 - if key[K_DOWN]: # Движение корабля вниз 138 - if key[K_LEFT]: # Движение корабля влево 140 - if key[K_RIGHT]: # Движение корабля вправо 142 - if key[K_SPACE]: # Огонь lib\pyforce.py 52 - if event.key == K_ESCAPE: # Выход У нас нет клавиши, SPACE, поэтому заменяем if key[K_SPACE]: на if key[K_RETURN]: для центра джойстика. Или на if (key[K_RETURN]) or (key[K_PLUS]): для центра джойстика и клавиши Громкость "+". Список клавиш и их соответствие: Code K_0 0 K_1 1 K_2 2 K_3 3 K_4 4 K_5 5 K_6 6 K_7 7 K_8 8 K_9 9 K_ASTERISK * K_HASH # K_BACKSPACE (<-) K_TAB Send K_RETURN Center joy K_PAUSE Camera K_ESCAPE Red key (HangUp) K_F9 Left Soft K_F11 Right Soft K_PLUS Volume "+" K_MINUS Volume "-" K_UP up arrow K_DOWN down arrow K_RIGHT right arrow K_LEFT left arrow 5. Сохраняем все сделанные нами изменения, кидаем на флешку и запускаем. Если всё отлично работает - делаем MGX пакет. 6. Пример скрипта, который нужно использовать для запуска: Code #!/bin/sh mypath=${0%/*} export HOME=$mypath LIBDIR1=/ezxlocal/download/mystuff/games/lib LIBDIR2=/mmc/mmca1/games/lib LIBDIR3=$mypath/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIBDIR1:$LIBDIR2:$LIBDIR3 export SDL_QT_INVERT_ROTATION=1 PYTHONHOME=/mmc/mmca1/games/python export PYTHONHOME PYTHONPATH=${PYTHONHOME}/lib/python2.5/site-packages:$PYTHONPATH PYTHONPATH=${PYTHONHOME}/lib/python2.5:$PYTHONPATH PYTHONPATH=${PYTHONHOME}:$PYTHONPATH export PYTHONPATH LD_LIBRARY_PATH=${PYTHONHOME}/extras:${LD_LIBRARY_PATH} export LD_LIBRARY_PATH cd $mypath
exec $PYTHONHOME/bin/python.elf $mypath/my_prog.py где my_prog.py - ваша запускаемая программа на питоне. Для pyGame следует использовать python.elf, т.к в нём прописаны нужные иниты SDL библиотеки. Для скриптов используйте просто python. Пакет pyForce можно скачать на сайте. Приветствуются любые вопросы по теме! Скачать: Окружение от 16.01.2011
|