Python Pygame

Python Pygame — очень ценная библиотека.

Python Pygame — это пакет, который предназначен для написания компьютерных игр и мультимедиа-приложений и который базируется на мультимедийной библиотеке SDL.

Мой интерес к  Python Pygame был вызван такой информацией:

Для создания игр и приложений, требующих нестандартного интерфейса, можно использовать библиотеку Pygame. Она также предоставляет обширные средства работы с мультимедиа: с её помощью можно управлять звуком и изображениями, воспроизводить Видео.

Чтобы скачать пакет Python Pygame, пришлось изрядно повозиться: в Интернете полно устаревшей информации, что последней версией Python Pygame является версия 1.9.2, но её нет для Python версии 3.6, а версии, предназначенные для более ранних версий Python, неработоспособны на последней версии  Python.

Python Pygame версии 1.9.3 доступен на странице https://pypi.python.org/pypi/Pygame/1.9.3 - именно с этой страницы скачал используемую мной версию 1.9.3

Для освоения Python Pygame начал разыскивать информацию в Интернете. Скачал PDF-файл с англоязычной книгой Rapid Game Development In Python автора Richard Jones. Попробовал запустить описанную в этой книге игру, но ничего не получилось. Зарёкся скачивать древние книги и пытаться запускать программы, скопированные из PDF-файлов.

Нашёл сайт programarcadegames.com, содержащий удачный переводной онлайновый учебник книги автора Paul Vincent Craven — название книги переводчик Владимир Слав утаил по недомыслию. Судя по всему это 

Program Arcade Games With Python and Pygame (2016)

640 Р

Автор: Paul Vincent Craven
Название книги: Program Arcade Games With Python and Pygame (2016)
Формат: PDF
Жанр: Компьютеры
Страницы: 403
Качество: Изначально компьютерное, E-book

Приобретать за 640-к рублей PDF-файл книги на английском языке нет, по моему мнению, никакого смысла: лучше пользоваться переводным онлайновым учебником.

Привожу оглавление этого учебника:

Прежде чем начать…
1: Напишем простой калькулятор
2: Что такое компьютерный язык?
3: Игры-тесты и оператор If
4: Циклы; Игра с угадыванием случайного числа
5: Введение в графику
6: Возвращение к циклам
7: Знакомство со списками
8: Введение в анимацию
9: Функции
10: Устройства ввода и Графика
11: Растровая графика и звук
12: Введение в классы
13: Введение в спрайты
14: Библиотеки и модули
15: Поиск
16: Реализация поля с помощью массива
17: Сортировка
18: Исключения
19: Рекурсия
20: Форматирование
Labs
Appendix A: Example code and programs
Appendix B: Sample Tests
Appendix C: Worksheets
Appendix D: Version Control
Appendix E: Постойте-ка, что ещё мы можем сделать?

Просмотрев начальные страницы, перешёл к главе 11-ть, так как меня интересуют Графика и Звук. Внимательно прочитал 4-ре параграфа и затем из параграфа 11.5 скачал Полный код программы bitmapped_graphics.py

Сходу запустить программу не удалось: не хватало файлов laser5.ogg и playerShip1_orange.png

Фоновый рисунок saturn_family1.jpg скачал при чтении параграфа 11.2, а вот файл player.png по невнимательности не скачал — пришлось добывать его в Интернете.

laser5.ogg добыл так: нашёл на сайте freesound.org короткий ogg-файл и переименовал; в главе 11 файл laser5.ogg упомянут только в тексте программы и нет никакого намёка на место, откуда его можно скачать;

playerShip1_orange.png нашёл и скачал на сайте https://raw.githubusercontent.com/prodicus/spaceShooter/master/spaceshooter/assets/playerShip1_orange.png

После устранения двух затыков на отсутствующих файлах программа заработала. Можно считать, что Изображения и Звуки вчерне освоены, теперь хотелось бы разобраться с Видео.

Чтобы узнать начинку Python Pygame, запустил в интерпретаторе Python команду dir(pygame) — вот полученный результат:

[‘ACTIVEEVENT’, ‘ANYFORMAT’, ‘ASYNCBLIT’, ‘AUDIO_S16′, ‘AUDIO_S16LSB’, ‘AUDIO_S16MSB’, ‘AUDIO_S16SYS’, ‘AUDIO_S8′, ‘AUDIO_U16′, ‘AUDIO_U16LSB’, ‘AUDIO_U16MSB’, ‘AUDIO_U16SYS’, ‘AUDIO_U8′, ‘BIG_ENDIAN’, ‘BLEND_ADD’, ‘BLEND_MAX’, ‘BLEND_MIN’, ‘BLEND_MULT’, ‘BLEND_PREMULTIPLIED’, ‘BLEND_RGBA_ADD’, ‘BLEND_RGBA_MAX’, ‘BLEND_RGBA_MIN’, ‘BLEND_RGBA_MULT’, ‘BLEND_RGBA_SUB’, ‘BLEND_RGB_ADD’, ‘BLEND_RGB_MAX’, ‘BLEND_RGB_MIN’, ‘BLEND_RGB_MULT’, ‘BLEND_RGB_SUB’, ‘BLEND_SUB’, ‘BUTTON_X1′, ‘BUTTON_X2′, ‘BufferError’, ‘BufferProxy’, ‘Color’, ‘DOUBLEBUF’, ‘FULLSCREEN’, ‘GL_ACCELERATED_VISUAL’, ‘GL_ACCUM_ALPHA_SIZE’, ‘GL_ACCUM_BLUE_SIZE’, ‘GL_ACCUM_GREEN_SIZE’, ‘GL_ACCUM_RED_SIZE’, ‘GL_ALPHA_SIZE’, ‘GL_BLUE_SIZE’, ‘GL_BUFFER_SIZE’, ‘GL_DEPTH_SIZE’, ‘GL_DOUBLEBUFFER’, ‘GL_GREEN_SIZE’, ‘GL_MULTISAMPLEBUFFERS’, ‘GL_MULTISAMPLESAMPLES’, ‘GL_RED_SIZE’, ‘GL_STENCIL_SIZE’, ‘GL_STEREO’, ‘GL_SWAP_CONTROL’, ‘HAT_CENTERED’, ‘HAT_DOWN’, ‘HAT_LEFT’, ‘HAT_LEFTDOWN’, ‘HAT_LEFTUP’, ‘HAT_RIGHT’, ‘HAT_RIGHTDOWN’, ‘HAT_RIGHTUP’, ‘HAT_UP’, ‘HAVE_NEWBUF’, ‘HWACCEL’, ‘HWPALETTE’, ‘HWSURFACE’, ‘IYUV_OVERLAY’, ‘JOYAXISMOTION’, ‘JOYBALLMOTION’, ‘JOYBUTTONDOWN’, ‘JOYBUTTONUP’, ‘JOYHATMOTION’, ‘KEYDOWN’, ‘KEYUP’, ‘KMOD_ALT’, ‘KMOD_CAPS’, ‘KMOD_CTRL’, ‘KMOD_LALT’, ‘KMOD_LCTRL’, ‘KMOD_LMETA’, ‘KMOD_LSHIFT’, ‘KMOD_META’, ‘KMOD_MODE’, ‘KMOD_NONE’, ‘KMOD_NUM’, ‘KMOD_RALT’, ‘KMOD_RCTRL’, ‘KMOD_RMETA’, ‘KMOD_RSHIFT’, ‘KMOD_SHIFT’, ‘K_0′, ‘K_1′, ‘K_2′, ‘K_3′, ‘K_4′, ‘K_5′, ‘K_6′, ‘K_7′, ‘K_8′, ‘K_9′, ‘K_AMPERSAND’, ‘K_ASTERISK’, ‘K_AT’, ‘K_BACKQUOTE’, ‘K_BACKSLASH’, ‘K_BACKSPACE’, ‘K_BREAK’, ‘K_CAPSLOCK’, ‘K_CARET’, ‘K_CLEAR’, ‘K_COLON’, ‘K_COMMA’, ‘K_DELETE’, ‘K_DOLLAR’, ‘K_DOWN’, ‘K_END’, ‘K_EQUALS’, ‘K_ESCAPE’, ‘K_EURO’, ‘K_EXCLAIM’, ‘K_F1′, ‘K_F10′, ‘K_F11′, ‘K_F12′, ‘K_F13′, ‘K_F14′, ‘K_F15′, ‘K_F2′, ‘K_F3′, ‘K_F4′, ‘K_F5′, ‘K_F6′, ‘K_F7′, ‘K_F8′, ‘K_F9′, ‘K_FIRST’, ‘K_GREATER’, ‘K_HASH’, ‘K_HELP’, ‘K_HOME’, ‘K_INSERT’, ‘K_KP0′, ‘K_KP1′, ‘K_KP2′, ‘K_KP3′, ‘K_KP4′, ‘K_KP5′, ‘K_KP6′, ‘K_KP7′, ‘K_KP8′, ‘K_KP9′, ‘K_KP_DIVIDE’, ‘K_KP_ENTER’, ‘K_KP_EQUALS’, ‘K_KP_MINUS’, ‘K_KP_MULTIPLY’, ‘K_KP_PERIOD’, ‘K_KP_PLUS’, ‘K_LALT’, ‘K_LAST’, ‘K_LCTRL’, ‘K_LEFT’, ‘K_LEFTBRACKET’, ‘K_LEFTPAREN’, ‘K_LESS’, ‘K_LMETA’, ‘K_LSHIFT’, ‘K_LSUPER’, ‘K_MENU’, ‘K_MINUS’, ‘K_MODE’, ‘K_NUMLOCK’, ‘K_PAGEDOWN’, ‘K_PAGEUP’, ‘K_PAUSE’, ‘K_PERIOD’, ‘K_PLUS’, ‘K_POWER’, ‘K_PRINT’, ‘K_QUESTION’, ‘K_QUOTE’, ‘K_QUOTEDBL’, ‘K_RALT’, ‘K_RCTRL’, ‘K_RETURN’, ‘K_RIGHT’, ‘K_RIGHTBRACKET’, ‘K_RIGHTPAREN’, ‘K_RMETA’, ‘K_RSHIFT’, ‘K_RSUPER’, ‘K_SCROLLOCK’, ‘K_SEMICOLON’, ‘K_SLASH’, ‘K_SPACE’, ‘K_SYSREQ’, ‘K_TAB’, ‘K_UNDERSCORE’, ‘K_UNKNOWN’, ‘K_UP’, ‘K_a’, ‘K_b’, ‘K_c’, ‘K_d’, ‘K_e’, ‘K_f’, ‘K_g’, ‘K_h’, ‘K_i’, ‘K_j’, ‘K_k’, ‘K_l’, ‘K_m’, ‘K_n’, ‘K_o’, ‘K_p’, ‘K_q’, ‘K_r’, ‘K_s’, ‘K_t’, ‘K_u’, ‘K_v’, ‘K_w’, ‘K_x’, ‘K_y’, ‘K_z’, ‘LIL_ENDIAN’, ‘MOUSEBUTTONDOWN’, ‘MOUSEBUTTONUP’, ‘MOUSEMOTION’, ‘Mask’, ‘NOEVENT’, ‘NOFRAME’, ‘NUMEVENTS’, ‘OPENGL’, ‘OPENGLBLIT’, ‘Overlay’, ‘PREALLOC’, ‘PixelArray’, ‘QUIT’, ‘RESIZABLE’, ‘RLEACCEL’, ‘RLEACCELOK’, ‘Rect’, ‘SCRAP_BMP’, ‘SCRAP_CLIPBOARD’, ‘SCRAP_PBM’, ‘SCRAP_PPM’, ‘SCRAP_SELECTION’, ‘SCRAP_TEXT’, ‘SRCALPHA’, ‘SRCCOLORKEY’, ‘SWSURFACE’, ‘SYSWMEVENT’, ‘Surface’, ‘SurfaceType’, ‘TIMER_RESOLUTION’, ‘USEREVENT’, ‘USEREVENT_DROPFILE’, ‘UYVY_OVERLAY’, ‘VIDEOEXPOSE‘, ‘VIDEORESIZE’, ‘YUY2_OVERLAY’, ‘YV12_OVERLAY’, ‘YVYU_OVERLAY’, ‘__builtins__’, ‘__cached__’, ‘__color_constructor’, ‘__color_reduce’, ‘__doc__’, ‘__file__’, ‘__loader__’, ‘__name__’, ‘__package__’, ‘__path__’, ‘__rect_constructor’, ‘__rect_reduce’, ‘__spec__’, ‘__version__’, ‘base’, ‘bufferproxy’, ‘cdrom’, ‘color’, ‘colordict’, ‘compat’, ‘constants’, ‘cursors’, ‘display’, ‘draw’, ‘encode_file_path’, ‘encode_string’, ‘error’, ‘event’, ‘fastevent’, ‘font’, ‘get_array_interface’, ‘get_error’, ‘get_sdl_byteorder’, ‘get_sdl_version’, ‘image’, ‘init’, ‘joystick’, ‘key’, ‘mask’, ‘math’, ‘mixer’, ‘mixer_music’, ‘mouse’, ‘movie’, ‘overlay’, ‘packager_imports’, ‘pixelarray’, ‘pixelcopy’, ‘quit’, ‘rect’, ‘register_quit’, ‘rev’, ‘rwobject’, ‘scrap’, ‘segfault’, ‘set_error’, ‘sndarray’, ‘sprite’, ‘surface’, ‘surfarray’, ‘sysfont’, ‘threads’, ‘time’, ‘transform’, ‘ver’, ‘vernum’, ‘version’, ‘warn_unwanted_files’]

Начинка весьма солидная — чтобы освоить возможности Python Pygame, нужно изучить много документации. Я же надеюсь освоить основные возможности Python Pygame с помощью онлайнового учебника programarcadegames.com

Команда help(VIDEOEXPOSE) не срабатывает — придётся искать другие способы запустить Видео.

Приглашаю всех высказываться в Комментариях. Критику и обмен опытом одобряю и приветствую. В хороших комментариях сохраняю ссылку на сайт автора!

И не забывайте, пожалуйста, нажимать на кнопки социальных сетей, которые расположены под текстом каждой страницы сайта.
Python PygameПродолжение тут…

Deviz_2

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Проверка комментариев включена. Прежде чем Ваши комментарии будут опубликованы пройдет какое-то время.