Programmare un videogioco può sembrare una cosa semplice, ma il realtà è molto complessa. Una volta era anche necessario conoscere le specifiche della macchina sulla quale doveva girare il videogioco, ora tutto questo è facilitato grazie a delle librerie reperibili anche da internet e il tutto senza spendere nulla. Infatti non è necessario usare del denaro per creare il proprio videogioco, basta solo guardarsi intorno e avere tanta passione e pazienza.
Per dare vita al nostro gioco per PC abbiamo bisogno di accedere alle periferiche che ci permettono di interagire con il computer, come scheda video, tastiera, mouse ecc… tutto questo lo possiamo fare con librerie come l’OpenGL, SDL ed altre ancora.
Alcune persone, utilizzando queste librerie oppure hanno creato addirittura dei motori grafici, o di gioco, in base alle feature che hanno incluso nel loro tool. Per esempio Crystal Space offre anche un gestore delle collisioni, mentre Irrlicht è un semplice motore grafico che può essere utilizzato insieme ad altre librerie per gestire anche l’audio, la rete ecc…
Se prendiamo invece Panda3D, nel suo pacchetto include tutto quello che necessita per un videogioco, anche online, compresa la gestione dell’IA (n.b. : è da controllare lo stato di quest’ultima). Inoltre in questo pentolone è possibile scegliere il linguaggio che più vi aggrada, che dipende naturalmente dal motore che scegliete; ma sostanzialmente sono tutti legati al C++ come impostazione.
Gestire tutte queste cose da soli è impensabile, ma nulla vieta di provare a creare un piccolo videogioco, anche solo per divertirsi con gli amici e il tutto utilizzando solo il tempo libero, quindi come passatempo. In questo caso ci vengono in aiuto le librerie SDL, semplici e basilari per capire il funzionamento di un gioco per computer ed il linguaggio di programmazione Python, veloce ed intuitivo.
Andremo quindi alla scoperta della libreria Pygame per creare il nostro primo videogioco, imparando a utilizzare i ferri del mestiere a piccole dosi e con un linguaggio alla portata di tutti.
Installazione
Per prima cosa si deve installare l’interprete Python e le rispettive librerie Pygame. Infatti se date un’occhiata alla sezione download del sito potete notare che sono divise in base alla versione Python che dovete utilizzare. Vorrei sottolineare che sia Python che le librerie SDL sono multipiattaforma, quindi potete utilizzarle su tutti gli OS più conosciuti ed utilizzati al momento.
Per gli utenti Windows basta scaricare l’installer Python dal sito ufficiale.
Una volta installato bisogna procurarsi la versione Pygame compatibile. Per esempio se abbiamo installato Python 3.1 dobbiamo scaricare la versione Pygame compatibile, quindi quella che finisce con win32-py3.1 . Una volta avviata l’installazione basta specificare la cartella dove Python è installato. Gli utenti che hanno Windows a 64 bit devono installare le versioni a 32 bit sia dell’interprete Python, sia della libreria Pygame.
Per gli utenti Linux, basta cercare il pacchetto Pygame relativo alla propria distribuzione in uso. Le più conosciute hanno Python installato nativamente e quindi basta installare Pygame utilizzando i repository della propria distribuzione.
Anche in OSX Python dovrebbe essere preinstallato, quindi basta scaricare Pygame dal sito ufficiale e installarlo seguendo le instruzioni.
Una volta completata l’installazione possiamo verificare il corretto funzionamento aprendo l’IDLE Python e dando i comandi :
>>>import pygame >>>pygame.init()
Se non risultano errori, l’installazione è avvenuta con successo e potete subito iniziare ad utilizzare le librerie.
Python
Per chi già conosce un linguaggio di programmazione C++ like, non sarà difficile utilizzare il Python. Online sono disponibili svariate guide gratuite, come questa del sito ufficiale :
Potete poi trovare tutti i riferimenti al Python in lingua italiana qui.
La conoscenza di questo linguaggio di programmazione ha una curva molto bassa di apprendimento, quindi mi limiterò a sottolineare le differenze più evidenti, come per esempio il fatto che, al contrario di molti linguaggi di programmazione, il Python non necessita di parentesi per identificare il blocchi di codice. Un blocco si differenzia dall’altro in base alle indentature (spazi o tab) che li separa dal bordo. Ecco un esempio:
>>>Blocco A >>> Blocco B >>>Blocco A >>> Blocco C >>> Blocco D >>> Blocco D >>> Blocco C >>>Blocco A
L’altra differenza importante è che si lavora sostanzialmente con oggetti. Naturalmente non sarà niente di nuovo per quelle persone che già programmano, ma per chi non si è mai cimentato, si consiglia almeno di leggere il tutorial, per capire il codice che poi andremo a scrivere.
Ciao Mondo!!!
Come primo file di esempio, creeremo una semplice finestra dove disegneremo un’immagine fatta da noi. Commenteremo riga per riga il codice.
imm_sfondo = "ciaomondo.jpg" import pygame from pygame.locals import * from sys import exit pygame.init() screen = pygame.display.set_mode((640,480), DOUBLEBUF | HWSURFACE, 32) pygame.display.set_caption("Ciao Mondo!!!") sfondo = pygame.image.load(imm_sfondo).convert() while True: for event in pygame.event.get(): if event.type == QUIT: exit() screen.blit(sfondo,(0,0)) pygame.display.flip()
Commenti al codice
imm_sfondo = "ciaomondo.jpg"
Con questa riga di codice memorizziamo il nome della nostra immagine di sfondo, che per essere visualizzata corretamente dovrà essere di 640×480 pixel, vedremo poi perché.
import pygame from pygame.locals import * from sys import exit
Con questi comandi importiamo le librerie necessarie, ovvero le librerie pygame nella prima riga, le variabili locali nella seconda e l’uscita per il programma dalle librerie di sistema nell’ultima. Fra poco vedremo a cosa servono.
pygame.init()
La libreria Pygame è divisa in moduli che gestiscono vari tipi di eventi, per esempio display gestirà lo schermo, mentre mixer servirà per caricare e gestire eventi sonori. Tutti i moduli sono avviabili singolarmente, ma con pygame.init() li avvieremo tutti insieme, così che rimarranno a nostra disposizione quando ne avremo bisogno.
Caricare i moduli singolarmente ne guadagnerà in velocità, perché se per esempio non abbiamo bisogno dell’audio, si caricheranno cose inutilizzate in memoria, rallentando di conseguenza il programma. Per questo codice di esempio non fa nessuna differenza, ma in un progetto più complesso, l’ottimizzazione ha la sua buona parte per la riuscita del videogioco.
screen = pygame.display.set_mode((640,480), DOUBLEBUF | HWSURFACE, 32)
Con questa creiamo una finestra 640×480 con doppio buffer (da notare che dobbiamo scrivere solo DOUBLEBUF e non pygame.DOUBLEBUF perché abbiamo importato le variabili locali), accelerazione hardware (HWSURFACE) e con profondità 32 bit.
pygame.display.set_caption("Ciao Mondo!!!")
Qui settiamo il nome della finestra che abbiamo creato.
sfondo = pygame.image.load(imm_sfondo).convert()
Ora carichiamo lo sfondo e lo convertiamo in una superficie per essere visualizzato sullo schermo. La conversione è necessaria per essere correttamente disegnato sullo schermo.
while True: for event in pygame.event.get(): if event.type == QUIT: exit() screen.blit(sfondo,(0,0)) pygame.display.flip()
Questo è il vero corpo di gioco, per ora. Il primo ciclo equivale in poche parole ad una frame di gioco, mentre il secondo è indispensabile per controllare gli eventi al di fuori del gioco per far interagire l’utente. In questo caso basta controllare solamente se viene premuto il tasto di uscita della finestra (la ‘x’ della cornice).
Grazie a screen.blit, disegniamo il nostro sfondo dalle coordinate (0,0) in poi. Essendo la nostra finestra 640×480 pixel, è per questo motivo che l’immagine da visualizzare deve essere altrettanto grande, altrimenti sarebbe visualizzata solo una porzione. Vi ricordo che le coordinate dello schermo hanno l’origine nell’angolo in alto a sinistra e quindi anche le operazioni che fate sulle immagini tengono conto di questo.
L’ultima riga è un po’ più complessa da spiegare: avendo utilizzato l’accelerazione hardware abbiamo aggiunto un secondo buffer; in poche parole in questo secondo buffer il computer si prepara il prossimo frame da visualizzare. Quindi quando stampiamo a video la nostra immagine non dobbiamo ridisegnare da capo, ma dobbiamo semplicemente scambiare il buffer attuale con quello successivo. In questo modo si evitano discrepanze visive dovute al refresh della memoria video che deve ridisegnare ogni volta la stessa immagine sullo stesso buffer.
Conclusioni
Con questo primo articolo abbiamo introdotto i rudimenti della libreria per scrivere un piccolo codice di esempio, più avanti entreremo nel dettagli per affinare tutti gli strumenti necessari per la creazione del nostro videogioco.
carino questo tutorial, anche se preferisco di gran lunga il caro vecchio C++ per fare i miei giochi :-)
Grazie 1000 per avermi fatto conoscere questo nuovo strumento informatico per creare dei videogiochi. Ho già in mente un videogame molto originale, il titolo sarà “SUPER DON LEMON”. Il protagonista è un nuovo supereroe (il suo vestito sarà di colore bianco e giallo, il mantello verde). Il nostro guerriero dovrà combattere contro orde assassine di troll e cloni che minacciano il nostro pianeta. Alla fine di ogni livello è previsto un mostro gigantesco da demolire entro un tempo prestabilito. SDL avrà a disposizione uno scudo di protezione ed una scorta di agrumi da lanciare contro i nemici… non vedo l’ora di iniziare il lavoro…
A lavoro completato, manderò una copia del videogioco alla redazione di AD ed a tutti gli utenti che ne faranno richiesta…
Un altro pythonista nel team di AD… mi piace (un giorno conquisteremo il mondo :P )
Con pygame ho fatto qualcosa in passato ed è una libreria fantastica. Seguirò con interesse la serie di articoli.
Ciao ragazzi. Senza offesa, ma siete dei bast–di. Di seguito la motivazione… Sono un sysadmin che lavora in Asia per un’azienda italiana. Fra impegni, famiglia e qualche interesse ho gia’ pochissimo tempo a disposizione. Premesso che, per forza di cose, conosco altri linguaggi di programmazione, un giorno pero’ cominciai a leggere i fantastici articoli di Emanuele Rampichini sul linguaggio Python. Adesso, sul mio laptop con os Gentoo, c’e’ anche Netbeans + plugin Python + shell Dreampie. Per colpa vostra, sto scoprendo ed imparando a piccoli passi questo magnifico linguaggio di programmazione. A volte pero’ mi becco le lamentele di mia moglie che, dopo aver sbirciato al video (ed eventualmente aver letto la parola Python), essendo straniera mi urla in inglese: “If you don’t turn off your fuc—g laptop, I’ll cut your snake…!!!”. Chissa’ cosa intende dire?
@ MK77.
In parole povere ti invita gentilmente a spegnere il pc… in caso contrario, ti decapita il pitone (già che parliamo di Python). ;-)
@ Alessio Di Domizio.
Aspetto un tuo articolo sul nuovo AmigaOne X1000, è stato presentato lo scorso mese.
scandalo il python…
Per i giochi python non è troppo lento? probabilemnte andrà bene solo per quelli a bassa interazione tipo scacchi (o simili)?
@floriano
no non credo.
Con Python ci hanno fatto pure un Mmassive Multiplayer Online Game: Eve Online
http://www.ccpgames.com/en/company/technology.aspx
http://www.slideshare.net/Arbow/stackless-python-in-eve
MK77
Non è tua moglie ad essere straniera, sei TU ad essere straniero nel suo paese, non dimenticarlo!
Eh sì, credo che il Python di cui parla non sia il linguaggio…
@floriano: anche se ultimamente si sta imponendo l’equazione videogame == gigalioni di teraflops, questa cosa non è sempre vera :D
Ci sono giochi veramente belli e divertenti che richiedono poca potenza di calcolo. Anche linguaggi poco prestanti (in relazione al C++) come Python sono perfetti per questi giochi.
C’è anche un’altra importante questione da tenere in considerazione: Il Python è un linguaggio molto più semplice da imparare rispetto al C++, quindi i rudimenti di programmazione possono essere “digeriti” abbastanza facilmente da chi è intenzionato a partire senza alcuna base teorica/pratica a disposizione. Poi una volta raggiunta la dovuta esperienza si può pensare di usare un game engine open source come Sylphis3D oppure Panda3D, quest’ultimo sponsorizzato dalla Disney. Con il Panda3D, per esempio, hanno sviluppato “Pirates of the Caribbean Online”, praticamente a costo zero (riguardo le licenze). Non è pesante/zavorrato come l’ultra-pubblicizzato/sopravvalutato UDK, ha un’ottima documentazione (soprattutto i cheat sheets riassuntivi) ed è ottimo per farsi le ossa riguardo allo sviluppo di applicativi 3D, che risultano veloci e fluidi anche su macchine ritenute obsolete dai giochi moderni.
Non dimentichiamo che anche Blender 3D usa Python come linguaggio di scripting, con cui è possibile sfruttare nativamente il game engine integrato (un po’ ostico rispetto agli standard, ma pur sempre valido)… ;)
Dulcis in fundo Python sembra essere IL linguaggio preferito per i Multiplayer Massive Online, a dispetto del LUA… non solo Eve Online, ma anche la Blizzard in World of Warcraft lo usa… e scusate se è poco! :)
C’è un errore di sintassi nella riga 01.
Battlefield 2 ha una grossa componente python al suo interno, se non ricordo male tutta la gestione della fisica!
@ Stefano “Jimmy3dita” Pepe
Non solo la fisica, ma tutta la componentistica di scripting
http://bf2tech.org/index.php/Scripts
Oltre alla gestione degli eventi
http://bf2tech.org/index.php/Python
Grande Python… :D
guardate che anche il python(come moltissimi altri linguaggi) può essere “compilato” per la macchina su cui si esegue, quindi addio pesantezza. è un ottimo linguaggio, spero di trovare il tempo per approfondirlo un giorno
Ad onor del vero, World of Warcraft si magna quintali e quintali di LUA più che di python in tutto il frangente scripting… è Starcraft2 a strizzare pesantemente l’occhio a python, più che WoW.
Quello che alla CCP han fatto con python ed EVE Online è una cosa faraonica, soprattutto in relazione ai modesti mezzi di cui la software house islandese ai tempi che EVE veniva creato disponeva. La bontà della cosa è che questo loro investimento in python è riverberatosi positivamente in tutta la platea di programmatori per poi concretizzarsi nella partecipazione di CCP alla creazione di estensioni (soprattutto C#) per “bindare” python dentro molti ambienti eterogenei.
@Nicola: di norma con python produci un bytecode intermedio, come con molti altri linguaggi di questo tipo. In opportuni scenari, puoi dare in pasto la faccenda a compilatori JIT. Ad ogni modo le prestazioni non son quelle del C, c’è sempre una sensibile differenza, roba del tipo un fattore 100 ;-)
@ Maurelio
Già il fatto stesso che la Blizzard, fra le più rinomante e valide software house gaming al mondo, utilizzi il Python, concede un surplus a questo linguaggio di programmazione. Ancora meglio sapere che è proprio Starcraf2, l’ultimo mega-prodotto creato, a sfruttarlo massivamente. E’ una conferma che è stata fatta una decisa scelta a suo favore rispetto al LUA. Beninteso che non ho nulla contro quest’ultimo, ma spesso si ha il dubbio verso quale linguaggio puntare. Fra le decine e decine di alternative e “dialetti” non è semplice scegliere quello adatto ai propri fabbisogni, ma il Python ha le fattezze di un “jolly”, con cui è possibile fare un po’ di tutto, con buoni risultati… diciamo che ha un buon rapporto tempo dedicato/risultato garantito… ;)
Mi chiedo come mai non venga scelto di default come linguaggio di programmazione di studio nelle scuole superiori ad indirizzo informatico. Ha una sintassi elegante e semplificata, tale da renderlo un degno successore “spirituale” del Pascal. Inoltre possiede tutte le caratteristiche di un linguaggio “moderno” e completo, senza la complessità che sovente impregna questa categoria. Forse il motivo principale che ne esclude l’utilizzo nelle scuole è per l’esistenza di un “monopolio” che detta legge ed impone l’uso di pacchetti rinomati al posto di scelte forse più oculate e propedeutiche. Peccato… :(
Al MIT, dopo diversi anni a insegnare Scheme quale linguaggio per il corso d’introduzione alla programmazione, hanno cambiato e utilizzano Python. Qualcosa vorrà pur significare. ;)
Quanto a Python vs LUA, quest’ultimo è un linguaggio decisamente povero a livello di costrutti sintattici, e per questo anche più veloce.
Da questo punto di vista è l’ideale se serve inserire un linguaggio di scripting in un progetto di piccole dimensioni e/o risorse richieste.
Per esigenze diverse Python è decisamente più indicato.
Sulla questione Lua/Python non aggiungo altro perché all’atto pratico bazzico poco (se non niente :P) da entrambe le parti.
Volevo solo aggiungere che in aggiunta al MIT segnalato da Cesare, vivendo in USA una significativa parte dell’anno ho conoscienza diretta anche di diverse scuole superiori ed università statunitensi che hanno messo Python sulla porta d’ingresso ai corsi di informatica.
Motivo ufficiale il fatto che avendo sintassi molto facilmente leggibile, permette di focalizzare l’attenzione sui concetti base della programmazione che devono ancora esser appresi dagli studenti più che sulla sintassi da dover padroneggiare per esprimerli…
Non è un discorso campato in aria in effetti, la semplicità di Python è palese a tutti e la potenza non è scontata come quest’articolo sta a dimostrare. E’ una cosa radicalmente differente, ma tra le tante cose che può fare questo serpente credo anche io che possa raccogliere l’eredità del Pascal come entrata preferenziale al mondo della programmazione.
Grandioso !!!
Prima gli articoli di Emanuele Rampichini ed ora questa nuova serie sui video game. Ragazzi siete fantastici ! Grazie mille per quello che fate, ora spero solo di potervi dedicare un pò di tempo. Saluti.
@Maurelio
si lo so come funzionano i linguaggi interpretati, ma da esperienza diretta, posso dirti che il divario prestazionale non è più così alto. tranne in casi specifici, dove anche la più piccola differenza prestazionale può incidere sul risultato, la differenza la si coglie solo analizzando il comportamento dei software con strumenti appositi. Poi, a titolo di esempio, con C# e la piattaforma .Net è possibile anche inserire codice assembly insieme a codice gestito, quindi, a mio avviso, a meno di esigenze particolarissime, è sempre meglio utilizzare i linguaggi di moderna concezione, senza nulla togliere alle vecchie glorie eh…
Io cerco sempre di tenere a mente questa massima:
http://it.wikipedia.org/wiki/Donald_Knuth
D’altra parte un linguaggio come python mette a disposizione strumenti per ottimizzare dove necessario (jit, moduli in c e quant’altro).
Ragazzi proprio stamattina ho letto, quasi per caso, che in Civilization IV viene utilizzato il Python (precisamente il boost.python) per editare lo stile ed il contenuto delle interfacce, per randomizzare la generazione delle mappe e finanche scriptare gli eventi, soprattutto quelli \complessi\. Insomma, se scaviamo a fondo scopriamo che il Python è più diffuso di quello che si crede in apparenza… ;) … peccato non venga pubblicizzato con la stessa enfasi che viene riposta per altri linguaggi… :(
http://en.wikipedia.org/wiki/Boost_library
http://en.wikipedia.org/wiki/Civilization_IV
(vedere paragrafo \Development\)
@ Cesare Di Mauro
Beati gli studenti del MIT, allora… :) … la domanda è d’obbligo: ma in Italia quando potrà avvenire un cambiamento di rotta all’americana? Qualcuno dovrebbe avvertire la cara Gelmini che è necessario \svecchiare\ di parecchio i programmi ministeriali vigenti attualmente, adottando almeno il Python come base, non chiediamo mica poi tanto… basterebbe menzionarle il MIT! :)
Non so se la nostra ministra conosca il MIT… :D
@ Cesare di Mauro
Ne dubito anche io fortemente… :) … ma di sicuro se le parli di innovazioni di stampo informatico apportate dal Governo per le superiori ti rimanda a questo link:
http://archivio.pubblica.istruzione.it/riforma_superiori/nuovesuperiori/index.html
Dove praticamente c’è di tutto, miscelato fra una serie di taglia/incolla e rimpasti dei governi precedenti, fuorché l’innovazione… ;) … ah si! Ora è possibile trovare l’Istituto scolastico di interesse su Google Maps… :D
http://oc4jese1.pubblica.istruzione.it/ricscuolesup/
Non so se ridere oppure entrare nello sconforto più assoluto.
P.S.: Perdonatemi per l’off-topic, ma è anche da questi piccoli particolari che si recepisce la marcata differenza fra Italia e resto del mondo in ambito di disciplina informatica insegnata nelle scuole. Mi sa che i giovani studenti in informatica dovranno gioco-forza approfondire il Python ‘ad personam’. Ad essere ottimisti ci sarà qualche sparuto gruppetto di studenti che avrà la fortuna spacciata di approfondirlo sui banchi di scuola grazie alla lungimiranza di qualche giovane Prof. pythonista, che in maniera del tutto autonoma e con forte spirito di iniziativa si prenderà la responsabilità di inculcarlo ai propri ragazzi.
Per me il pascal è più che ottimo per iniziare insegnare l’informatica nelle scuole superiori. Il problema è che spesso (complici gli scarsi mezzi economici) si fa insegnare l’informatica a professori di matematica che vedono la cosa più come un obbligo che altro. Credo che il problema sia più culturale che altro.
Poi se si insegnasse il python ovviamente sarei il primo a esserne felice. :D
Tristemente vero. D’altra parte un laureato in informatica non cerca di sicuro la strada dell’insegnamento, per cui è comprensibile la penuria di gente competente / qualificata alla scuola dell’obbligo.
Coi risultati che, purtroppo, si vedono… :(
Seguirò gli articoli visto che ho usato qualche volta PyGame.
Riguardo all’insegnamento è tristemente vero. Quando ero alle superiori io l’ECDL era l’espressione massima dell’informatica sia per i ragazzi che per i professori :-( Tristezza…
Wow avevo sempre avuto curiosità nei confronti di pygame (colpa del remake di Solarwolf che usa quel modulo) e l’estate è una buona occasione per dare uno sguardo ai rudimenti “dietro le quinte”.
Da come ho capito, ci saranno dei seguiti a questo tutorial giusto?
Continua così!
a me non me lo apre quando lo eseguo,mi da errore e mi dice che l’applicazione non risponde
Ciao Matteo,
se riesci a segnalare l’errore da te riportato si può capire meglio dov’è il problema. Ti ricordo comunque di controllare l’installazione sia di python che della libreria pygame e di dare i comandi “import pygame” e “pygame.init()” nell’IDLE python per verificare il corretto funzionamento di tutti i moduli. Se tutto è ok, il metodo “pygame.init()” dovrà restituire la tupla (6, 0) , cioè che tutti e sei i moduli pygame sono stati caricati ed inizializzati.
Salve, complimenti, vorrei porvi un quesito che mi affligge, sono da poco appassionato di pyton per i game.
Potete per favore risolvermi questo errore che mida?
Vi ringrazio anticipatamente, a presto ROBERTO
Traceback (most recent call last):
File “”, line 1, in
screen = pygame.display.set_mode((640,480), DOUBLEBUF | HWSURFACE, 32)
error: No available video device
@ roberto
Salve,
da quello che ho potuto leggere sulla rete, forse dipende da qualche installazione malvenuta delle librerie sdl. Non conosco il sistema operativo che utilizzi ne quale versione di python o di pygame hai, quindi non vorrei azzardare troppo la risposta, però, sopratutto se sei in ambienti linux, prova a reinstallare le librerie, comprendendo le sdl-dev (cioè per lo sviluppo).
Se il problema non si risolve, scrivi altre informazioni che possono farci risalire al “colpevole”. :D
Salve ragazzio ,
allroa io o scaricato python 2.7.3 , pero poi sono andato su pugame e ce questo sito :”pygame-1.9.1.win32-py2.7.msi 3.1MB” , lo scarico e poi mi dice di rimuovere o di modificare pythol … qualsiasi cosa fcc o rimuovi o modifica non me lo scarica, mi dite come posso fare per favore??
grazie in anticipo.
Buona programmazzione :))
Salve ragazzi ,
allora io ho scaricato python 2.7.3 , pero poi sono andato su pygame e ce questo sito :”pygame-1.9.1.win32-py2.7.msi 3.1MB” , lo scarico e poi mi dice di rimuovere o di modificare pythol … qualsiasi cosa faccio o rimuovi o modifica non me lo scarica, mi dite come posso fare per favore??
grazie in anticipo.
Buona programmazzione :)) *
Prima devi installare Python. Successivamente devi installare quella versione di PyGame che hai scaricato.
Se hai problemi, riporta esattamente tutto.
ciao,
bellissima guida
ma ce un piccolo problema che ora il sito di pygames non ha le library aggiornate alla versione che ce ora ovvero la 3.4.2!!!
cavolo e ora come faccio???
@federico
Per prima cosa hai sempre la possibilità di installare pygame utilizzando i sorgenti, sezione source nei download del sito ufficiale. Questo vale per tutti gli os.
In secondo luogo, puoi controllare se per il tuo os è stato già creato un pacchetto apposito, come accade spesso per le distro linux. Se sei un utente windows trovi l’apposito installer qui: pygame binaries (per python 3.4 c’è l’exe sia a 32 che a 64 bit, dipende dalla versione di python che hai di sistema).
grazie mille ho risolto!
Ciao Mirco, grazie innanzitutto per l’articolo.
In linux ho copiato il listato in un file ed ho provato ad eseguirlo da terminale, ma mi da questo errore:
Traceback (most recent call last):
File “primoEsempio.py”, line 17, in
sfondo = pygame.image.load(imm_sfondo).convert()
pygame.error: Couldn’t open ciaomondo.jpg
Hai idea di come risolvere il problema?
@Alessio
Dall’errore mi sembra che non hai il file denominato ciaomondo.jpg. Quindi crea un file immagine con quel nome e mettilo nella stessa cartella dello script, così che la libreria possa caricare l’immagine indicata.
io ho python 3.6.1 e non trovo la versione compatibile di pygame inoltre quando scrivo (import pyagame) mi dice che c’ è un errore:Traceback (most recent call last):
File “”, line 1, in
import pygame
ModuleNotFoundError: No module named ‘pygame’
@Luca
Qui c’è il pacchetto per le versioni più recenti di Python su windows:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame
ok grazie mille
non riesco a risolvere il problema del import pygame
E se io volessi che sia l’utente a fornire l’immagine da visualizzare? (Il classico bottone “sfoglia..”)
@Luca
Il problema di import riguarda solo l’installazione della libreria. Verifica la versione python installata e la relativa versione di pygame.
@Phantom
Per fare questo occorre creare un’interfaccia più avanzata, come le GUI normali. Ci sono progetti che già fanno questo utilizzando pygame:
http://www.pygame.org/project-PGU+-+Phil%27s+pyGame+Utilities-108-.html
Una volta che hai l’interfaccia sarà possibile far selezionare all’utente un file, magari filtrando la lista per formato o locazione.