1: COS' E' PYGAME E COME SI INSTALLA

COS'E' PYGAME

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.

COME SI INSTALLA

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.

Per Windows:

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:

  1. Fate partire l'installer con il doppio click sul file scaricato
  2. Durante l'installazione selezionate l'opzione "Add Python 3.x.x to PATH";

Se avete già una versione recente di Python potete partire da qui:

  1. Aprite il prompt dei comandi di Windows digitando "cmd" sulla barra dei programmi in basso a sinistra;
  2. Nella riga di comando digitate:

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:

Per Linux:

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

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.

COME SI USANO LE FUNZIONI DI PYGAME

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:

www.pygame.org/docs

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.

ESERCIZIO 1.1: Proviamo a chiamare alcune funzioni di pygame direttamente da IDLE. Aprite IDLE e cercate di seguire queste istruzioni:
ATTENZIONE! Ricordate nella chiamata il nome della funzione va sempre seguito dalle parentesi tonde: se la funzione non accetta parametri le parentesi vanno aperte e subito richiuse, se invece vuole dei parametri essi vanno scritti all'interno delle parentesi.
SOLUZIONI

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