1. diel - Pygame - Úvod & inštalácia
Naším cieľom v tomto kurze bude vytvoriť jednoduchú interaktívne 2D plošinovku v Pythone pomocou frameworku pygame.
Čo je pygame?
Pygame je herný framework a wrapper nad SDL (2), ktorý umožňuje vyvíjať hry vo vašom obľúbenom programovacom jazyku. Poskytuje sadu tried a funkcií, pomocou ktorých je možné na obrazovku ľahko vykresľovať rastre, prehrávať zvuky, zachytávať vstupy a podobne.
Keďže sa ale jedná iba o wrapper nad SDL (2), neponúka pygame žiadne pokročilé konštrukcie a tak celá logika hry závisí iba na vývojári. Výhodou tohto prístupu je, že ako vývojári máme veľkú voľnosť v tom, ako si svoju hru logicky usporiadame. Zároveň je vďaka SDL napríklad možné preložiť hry napísané v pygame aj na Android, čo si ukážeme v niektorej z neskorších lekcií.
Hry v pygame
Ak vás zaujíma, aké hry v pygame už existujú, môžete sa pozrieť na zoznam projektov na oficiálnych stránkach. Nižšie je niekoľko z nich:
Flappy Bird .<>
Prečo používať pygame?
Pre Python existuje nepreberné množstvo rôznych frameworkov na tvorenie klikátek a grafických aplikácií. Tie najrozšírenejšie z nich, či už sa jedná o vstavaný Tkinter, popr. rôzne verzie pre Qt, majú spoločné, že sú veľmi pomalé, ak sa ich vizuálna podoba rýchlo mení. Z toho dôvodu pri vývoji hier, kedy je čo možno najrýchlejší zmena obrazu jednou z kľúčových vlastností, siahneme radšej po pygame, ktorý je vytvorený v duchu tohto konceptu. Ďalšou výhodou pygame je, že je schopný použiť hardvérovú akceleráciu, ak je to možné.
Inštalácia pygame
V súčasnosti existujú dve vývojové vetvy pygame:
Hlavný rozdiel medzi týmito verziami je, že pygame_sdl2 (ako názov napovedá) používa namiesto SDL1 SDL2. My v kurze budeme používať verziu pre SDL2.
Inštalácia pygame 1.x
Inštalácia pygame 1.x je veľmi priamočiara, stačí použiť na
inštaláciu pythoního správcu balíčkov pip
:
pip install pygame
- alebo
python -m pip install pygame
Inštalácia pygame_sdl2
Tu je inštalácia bohužiaľ zložitejšie, lebo pygame_sdl2 je zostavila dostupná iba vo forme balíčka v Ubuntu pre dnes už zastaraný Python 2. My ale chceme používať trochu novšiu verziu Pythone a to 3.6 a vyššie.
V takom prípade máme k dispozícii len zdrojový kód, ktorý si sami
musíme skompilovať. Akonáhle máme skompilovať, stačí nám potom vykonať
pip install pygame_sdl2*.whl
.
Ak používate Linux s 64-bitovým systémom, môžete si stiahnuť už predkompilované verziu. Verziu pre systém Windows sa mi zatiaľ nepodarilo skompilovať. To ničomu ale nevadí, keďže všetky kódy v tomto kurze by mali byť spätne kompatibilný a môžete teda použiť verziu 1.x.
Spätná kompatibilita pygame_sdl2
Pygame_sdl2 je síce stále vo vývoji a niektoré časti ešte nie sú
hotové, avšak všeobecne sa snaží byť čo najviac spätne kompatibilný s
radom 1.x. Z toho tiež vyplýva možnosť, kedy pygame_sdl2
ponúka nechať sa importovať ako pygame
. Tým je veľmi často
umožnené spustiť staršie hru na novej verzii pygame bez akejkoľvek zmeny
samotného kódu.
Tento dvojaký import môže byť vykonaný napríklad nasledovne (a tiež ho tak budeme používať vo všetkých ukážkach v tomto kurze):
try: import pygame_sdl2 # tries to import pygame_sdl2 pygame_sdl2.import_as_pygame() # mask pygame_sdl2 as pygame except ImportError: pass # if pygame_sdl2 was sucessfully imported, then this only maps pygame to pygame_sdl2 # if not, then original pygame 1.x is imported instead import pygame
Test inštalácia
Záverom prvej lekcie si ešte otestujeme, či nám pygame naozaj funguje a prípadne v akej verzii. K tomu nám stačí vykonať vyššie uvedený kód a na koniec pridať napríklad:
print('Neplecha ukoncena')
Celý tento kód spustíme.
Ak sa nám na výstupe objaví iba neplecha ukoncena
, máme
správne nainštalovaný pygame_sdl2. Ak sa nám vo výstupe objaví text
podobný tomuto:
pygame 1.9.6 Hello from the pygame community. https://www.pygame.org/contribute.html neplecha ukoncena
máme nainštalovaný pygame radu 1.x.
Tretia možnosť je, že nám náš kód vypísal ImportError, čo by znamenalo, že sa nám nepodarilo správne nainštalovať ani jednu verziu pygame.
Čo bude nabudúce?
Nabudúce, v lekcii Pygame - Kreslenie a pohyb , sa pozrieme už na vytvorenie nejaké základné herné logiky, skúsime si nakresliť pár štvorcov a trochu ich rozhýbať.