motofan logo
> 

Python 2.5 + pyGame 0.9.1, Собираем игры и программы на Python'е!

shevayura
сообщение 27.11.2010, 18:30


Опытный
***

Группа: Пользователи
Сообщений: 143
Регистрация: 21.5.2006
Пользователь №: 84 197
Модель телефона: Defy+ MB526

Рейтинг: 36



Собственно я любитель сего чудного языка, но совсем не гений в ковыряниях (ни осей, ни прошивок). Совсем недавно в руки попал v8. Перепрошил его в Fusion3 Speed и в дебрях нашел python smile.gif
А именно по этому пути:
Код
/ezxlocal/download/mystuff/.system/LinXtend/usr/bin

Подключившись по ssh
Код
cd /ezxlocal/download/mystuff/.system/LinXtend/usr/bin
./python

И получил следующее:
Код
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
'import site' failed; use -v for traceback
Python 2.6.2 (r262:71600, Apr 30 2009, 09:52:21)
[GCC 3.4.3 (MontaVista 3.4.3-25.0.96.%{_mvl_build_id} 2007-11-17)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

Но тут совсем негусто..
Код
>>> sys.builtin_module_names
('__builtin__', '__main__', '_ast', '_codecs', '_sre', '_symtable', '_warnings', 'errno', 'exceptions', 'gc', 'imp', 'marshal', 'posix', 'pwd', 'signal', 'sys', 'thread', 'xxsubtype', 'zipimport')

Попытка импорта os не удалась.
А вот пути питона очень странные:
Код
>>> sys.path
['', '/root/Escritorio/Python1/lib/python26.zip', '/root/Escritorio/Python1/lib/python2.6/', '/root/Escritorio/Python1/lib/python2.6/plat-linux2', '/root/Escritorio/Python1/lib/python2.6/lib-tk', '/root/Escritorio/Python1/lib/python2.6/lib-old', '/root/Escritorio/Python1/lib/lib-dynload']

учитывая что в директории /root/ отсутствуют поддиректории..

Так вот пишу всё это в надежде что есть ещё ценители сего чуда на данном форуме. Может вместе доделаем питончик и будет нам радость? smile.gif

Сообщение отредактировал PItBuLL - 16.1.2011, 7:15
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
 
Ответ в темуСоздание новой темы
Ответов
EXL
сообщение 16.1.2011, 5:06


Rock The Microphone
********

Группа: Администраторы
Сообщений: 2 980
Регистрация: 12.5.2007
Из: г. Новосибирск
Пользователь №: 134 652
Модель телефона: XT894 / XT897
Прошивка: Различные


Настроение:
null



Рейтинг: 4612



Прикрепленное изображение

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):
  1. ZN5/Apps/pybrush.mgx (117.1 KiB)
  2. ZN5/Games/pyTetris.mgx (33.5 KiB)
  3. ZN5/Games/PyForce.mgx (1.9 МiB)
  4. ZN5/Games/barbie.mgx (360.9 KiB)
Прикреплённые файлы:
Прикрепленный файл pybrush.mgx   ( 117.13 килобайт ) Кол-во скачиваний: 567
Прикрепленный файл pyTetris.mgx   ( 33.48 килобайт ) Кол-во скачиваний: 553
Прикрепленный файл games.7z   ( 9.27 мегабайт ) Кол-во скачиваний: 2448
Прикрепленный файл PyForce.mgx   ( 1.91 мегабайт ) Кол-во скачиваний: 572
Прикрепленный файл barbie.mgx   ( 360.92 килобайт ) Кол-во скачиваний: 547
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме
shevayura   Python 2.5 + pyGame 0.9.1   27.11.2010, 18:30
EXL   Компиляция Python 2.2.1 Для начала скачиваем [u...   27.11.2010, 19:16
shevayura   Если будет pyGame - цены мотору не будет :) Ещё оч...   27.11.2010, 19:38
shevayura   Что-то у меня не получилось запустить собранный мн...   3.12.2010, 12:26
shevayura   Собранный Python 2.6.2 Скачать Особенности: - Соб...   22.12.2010, 10:01
shevayura   Update Была ошибка в скрипте запуска! Вот ис...   14.1.2011, 10:53
are_ed   still not get it :helpsmilie:   15.1.2011, 20:02
EXL   [size=4]Python 2.5 + pyGame 0.9.1 [b]Вики: Pyt...   16.1.2011, 5:06
K()t   EXL, у меня на е8 запускается только тетрис. Лог д...   16.1.2011, 14:01
SanchoNT   5. Breakout Назначение: Арканоид Автор: John Chee...   16.1.2011, 14:14
EXL   Нужно смотреть лог, так я тебе сказать ничего не...   16.1.2011, 16:07
Hairo Carela   i'ts quite easy... :) but it seems to be some ...   18.1.2011, 17:42
EXL   Yes, unfortunately sound doesn't work yet. I...   19.1.2011, 14:59
Hairo Carela   You can install some new modules... - Look for a...   20.1.2011, 1:00
Hairo Carela   [size=4]7. Asteroids Infinity [color=#3333FF]Назн...   22.1.2011, 15:48
shevayura   Вот пережал Python 2.5 c PyGame. Оптимизировал пап...   26.1.2011, 8:48
EXL   [size=4]8. pyBlocks [color=#3333FF]Назначение: Кл...   29.1.2011, 18:09
Irony   Получилось запустить только питона 2.2 версии из п...   1.2.2011, 16:52
EXL   Выложите скрипты, которые запускаете ./start2.sh и...   1.2.2011, 17:01
Irony   Start2.sh #!/bin/sh mypath=${0%/*} expor...   1.2.2011, 19:46
EXL   Не знаю что за проблема. Как вариант, можно попроб...   2.2.2011, 7:22
Irony   Я сливал именно через ftp, сейчас попробую P.S. В...   2.2.2011, 10:23
Hairo Carela   [size=4]10. SHIPPU GSS [color=#3333FF]Назначение:...   3.2.2011, 16:09
Hairo Carela   This time, an app :laugh: 100 [size=4]11. EXIF ...   4.2.2011, 17:08
Hairo Carela   [size=4]12. pyDiskUsage [color=#3333FF]Назначение...   24.2.2011, 18:01
Hairo Carela   [size=4]13. pySlide [color=#3333FF]Назначение: Пя...   26.2.2011, 16:19
XXX_S_B   [size=4]14. RedGiant [color=#3333FF]Назначение: К...   28.2.2011, 13:24
(-EDGE-)   Я от этого далек, но все же рискну спросить. А ник...   21.4.2014, 8:37
EXL   Нет, топовые игры для N-Gage не написаны на пайто...   21.4.2014, 8:55
(-EDGE-)   Нет, топовые игры для N-Gage не написаны на пайт...   21.4.2014, 16:42
EXL   Нормального (портабельного) эмулятора N-Gage нет....   21.4.2014, 20:43
fill.sa   Питончик обновили до 2.7.16 Консольные приложения ...   6.1.2020, 0:05
fill.sa   Vinrarus захотел запустить youtube-dl, а он как ра...   26.1.2020, 20:14
EXL   Разве она на Python 2? Вроде как на Python 3, а э...   27.1.2020, 9:43
J()KER   Разве она на Python 2? Вроде как на Python 3, а ...   27.1.2020, 18:13
VINRARUS   Аааа, ну тогда это не ЯП, а собачий сюрприз в тап...   27.1.2020, 18:01
fill.sa   Тоже глянул в гите https://github.com/ytdl-org/yo...   28.1.2020, 13:05
EXL   fill.sa, Ну что там? Получается?   6.2.2020, 8:15
fill.sa   Пока с винрарусом никак не состыкуемся, последнее...   6.2.2020, 8:47
EXL   Кажется это значит, что где-то в этой строке или ...   6.2.2020, 8:55
fill.sa   Там идет сжатый файл питона, но т.к. zlib-python ...   7.2.2020, 14:10
EXL   zlib (libz) Должна быть как в самой прошивке теле...   10.2.2020, 7:44
fill.sa   EXL, Он то есть, но питон требует отдельно. Я так...   11.2.2020, 18:22
fill.sa   В продолжение темы, неплохая статья с хабра https...   20.2.2020, 22:02

Python 2.5 + pyGame 0.9.1, Собираем игры и программы на Python'е! · Motorola ZINE ZN5, ZN5 T-Mobile · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 1.6.2024, 23:24

Форум живёт: