Chi conosce il linguaggio Python dovrebbe sapere che il suo codice è suddiviso in vari files chiamati moduli.
Se abbiamo bisogno di usare le funzioni definite in un particolare modulo dobbiamo importarle con l'istruzione from
nome_modulo import *
o simili.
Questa scelta è importante perchè permette l'uso delle librerie: un programmatore può
scrivere delle funzioni che non sono nella distribuzione standard di Python e pubblicarle sotto forma di modulo separato
(libreria). Chi vuole usare queste funzioni dovrà installare il modulo in Python e poi potrà usare l'istruzione import
per accedere a tutte le nuove funzioni della libreria. E' così possibile aggiungere a Python moltissime funzionalità che non
sono presenti nella distribuzione base: si possono trovare su Internet molte librerie dedicate alla grafica, al suono, alla
matematica ...
Pygame è una libreria dedicata allo sviluppo di giochi: contiene funzioni per la grafica, il suono, il movimento delle immagini e così via. Per usare queste funzioni dovremo quindi installarla sulla nostra distribuzione di Python.
La versione attualmente disponibile di pygame è la 2.1.2. Il sito ufficiale www.Pygame.org ha una sezione apposita (in Inglese) che tratta dell'installazione nei diversi sistemi operativi. Pygame non è un'applicazione, ma una libreria aggiuntiva di Python, e quindi la sua installazione va gestita all'interno di Python stesso, tramite un programma di utilità aggiuntivo chiamato pip.
Il metodo consigliato è quello di aggiornare contemporaneamente Python alla versione più recente: a partire dalla versione 3.6.1, infatti, pip è incluso nella distribuzione base di Python.
Come ho detto, se avete una versione di Python precedente alla 3.6 vi conviene disinstallarla ed aggiornarla ad una versione più recente (il programma di installazione di Python non aggiorna la vecchia versione ma la lascia sul computer insieme a quella nuova). Se avete Windows 10 o 11 potete scaricare l'ultima versione (attualmente la 3.10.5) qui, se invece avete Windows 7 dovete installare la 3.8.10 (ultima versione compatibile e munita di installer, potete scaricare la versione a 32 bit o a 64 bit. A questo punto:
Se avete già una versione recente di Python potete partire da qui:
python -m pip install -U pygame --user
A questo punto i files necessari verranno scaricati da Internet ed installati automaticamente, senza che l'utente debba fare altro. Ad installazione effettuata digitate, sempre nel prompt di Windows che avete aperto per installare pygame:
python -m pygame.examples.aliens
e potrete vedere una demo per verificare che l'installazione è andata a buon fine.
Questi sono i problemi più comuni che possono sorgere durante l'installazione:
python -m pip install -U pip
In molte distribuzioni Linux sono già preinstallati sia Python 2 che Python 3, quindi in Linux l'interprete di Python 3 è chiamato
phyton3
(mentre digitando solamente python
chiamiamo Python 2). Inoltre in alcune distribuzioni è installato
anche pygame in una versione ottimizzata per la distribuzione stessa. Quindi potete provare direttamente a lanciare la demo aprendo
il terminale e digitando:
python3 -m pygame.examples.aliens
che vi risponde anche indicandovi la versione di pygame installata
Nel caso pygame non sia installato (o sia installata una versione meno recente della 2 e vogliate aggiornarlo) potete anche qui
usare pip (sempre ricordando di scrivere python3
)
python3 -m pip install -U pygame --user
Il sito di pygame (forse per evitare eventuali problemi se pip non è aggiornato) consiglia invece di usare i gestori di pacchetti standard delle varie distribuzioni
sudo apt-get install python3-pygame
sudo yum install python3-pygame
sudo zypper install python3-pygame
sudo pacman install python-pygame
In ogni caso provate alla fine a lanciare la demo per verificare che l'installazione sia andata bene e che pygame sia aggiornato almeno alla versione 2.
Dato che Pygame è una libreria piuttosto consistente che si occupa di molti elementi diversi (grafica, suono, input/output ...) i suoi programmatori hanno deciso di dividerlo a sua volta in sottomoduli, cioè in files separati nei quali sono raggruppate le funzioni che gestiscono determinati elementi. Nella terminologia di Python questo tipo di libreria divisa in sottomoduli si chiama package. Per capire la struttura di Pygame ci conviene tenere aperta la pagina ufficiale della documentazione:
In alto c'è un riquadro con una serie di link: soffermiamoci per ora solo su quelli con l'iniziale minuscola (cursors, display ...): questi sono i nomi dei vari sottomoduli di Pygame: ad esempio
cursors | contiene funzioni per modificare il cursore del mouse |
display | contiene funzioni per impostare le proprietà della finestra principale |
image | contiene funzioni per caricare e visualizzare immagini |
key | contiene funzioni per l'input da tastiera |
mixer | contiene funzioni per caricare e suonare files sonori |
Per usare le funzioni di Pygame bisogna inserire all'inizio del nostro programma l'istruzione import pygame
che importa
contemporaneamente tutti i sottomoduli. Questo vuol dire, se ricordate bene, che prima di usare qualunque funzione dovremo anteporre il
nome del package (pygame) e del sottomodulo (cursor, image ...) separati da un punto. Ad esempio:
pygame.display.set_mode() |
chiama la funzione set_mode() del sottomodulo display |
pygame.image.load() |
chiama la funzione load() del sottomodulo image |
pygame.time.wait() |
chiama la funzione wait() del sottomodulo time |
Come sapete esiste un'altra forma dell'istruzione import
: si potrebbe evitare di anteporre i nomi dei moduli
usando l'istruzione from pygame import *
, ma questa forma è considerata "poco seria" dai programmatori
esperti perchè porterebbe a confondersi senza più sapere a quale modulo appartengono le funzioni. Quindi dobbiamo adeguarci a
questa prassi, anche se a prima vista potrebbe sembrare più semplice l'altra forma.
pygame.init()
che, come vedremo nella prossima lezione, è la funzione che serve ad
inizializzare pygame; dovrebbe rispondervi con una lista di numeri che per il momento non ci interessaget_pos()
del sottomodulo mouse
: dovrebbe rispondere con la posizione
del cursore del mouse (0, 0).get_num_channels()
del sottomdulo mixer
: dovrebbe rispondere con il numero
di canali audio disponibili per il suono (8)wait()
del sottomodulo event
: questa funzione aspetta che nel computer
"succeda qualcosa" e restituisce una descrizione dell'evento accaduto. IDLE dovrebbe bloccarsi, ma basta muovere il mouse per
terminare la funzione, che risponderà con una descrizione piuttosto complessawait()
del sottomodulo time
; questa funzione vuole un parametro numerico
e blocca IDLE aspettando il corrispondente numero di millisecondi. Quindi se gli fornite come parametro 1000 aspetterà un
secondo e così via.Le ultime due funzioni sono un esempio di quello che potrebbe succedere usando la sintassi from pygame import *
;
esistono due funzioni wait()
con lo stesso nome in due sottomoduli diversi e, se non anteponessimo il nome del
sottomodulo, non sapremmo quale delle due abbiamo chiamato.
Fine della lezione