Python 2.5 + pyGame 0.9.1Вики: 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:
Код
#!/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. Подключаемся по телнету, пробуем запустить игру. В телнет кидает такой лог:
Код
/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_, находим следующее:
Код
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]): для центра джойстика и клавиши Громкость "+".
Список клавиш и их соответствие:
Код
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. Пример скрипта, который нужно использовать для запуска:
Код
#!/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
Собранные пакеты:1. pyBrushНазначение: Простенький графический редактор
Автор: Barnesy
Портировал на ZN5: EXL
Язык: English
Дополнительно: Есть возможность сохранения и открытия изображения из файловой системы.
Скриншоты приложения: 2. pyTetrisНазначение: Тетрис
Автор: Barnesy
Портировал на ZN5: EXL
Язык: English
Дополнительно: Управление:
Джойстик - Движение, поворот.
Клавиши громкости - Движение, поворот.
Красная трубка - Выход.
Камера - Пауза.
Скриншоты приложения:3. PyForceНазначение: Shoot 'em up
Автор: Xueqiao Xu
Портировал на ZN5: EXL
Дополнительно: Управление:
Джойстик - Движение, поворот.
Громкость "+", центр джойстика - Огонь.
Красная трубка - Выход.
Скриншоты приложения:4. BarbieНазначение: Аркада
Автор: The Olde Battleaxe
Портировал на ZN5: EXL
Дополнительно: Очень красивая аркада про морского конька! Управление:
Джойстик - Движение.
Громкость "-", центр джойстика - Огонь.
Громкость "+" - Прыжок.
Красная трубка - Выход.
Скриншоты приложения:Имена установочных пакетов и файлов в
общем архиве |
зеркало |
зеркало на Yandex.Disk (2.4 GiB, md5sum:
3624b858a4a053a534f0a2f4071bcacc):
- ZN5/Apps/pybrush.mgx (117.1 KiB)
- ZN5/Games/pyTetris.mgx (33.5 KiB)
- ZN5/Games/PyForce.mgx (1.9 МiB)
- ZN5/Games/barbie.mgx (360.9 KiB)
Прикреплённые файлы: