Pygame är en plattforms-uppsättning Python-moduler som är utformade för att skapa spel. Modulerna är utformade för att vara enkla, enkla att använda och roliga - en viktig del av Pygams ideologi. I det här inlägget visar jag dig hur du använder Pygame och delar tips och resurser för att lära dig det.
Den här guiden förutsätter att du redan vet hur man kodar i Python. Om inte, kolla in det bästa sättet att lära dig Python, lära dig Python, Python-handledningen, Codecademy eller lära dig Python på det hårda sättet för att komma igång.
Python anses ofta som det bästa "första programmeringsspråket" för att lära sig, och har blivit lovordat för sin lättlästa syntax och gradvis inlärningskurva. Av denna anledning börjar många nya programmerare att lära sig Python.
Pygame utökar Python, adopterar Pythons filosofi och syftar till att vara lätt att använda. Dessutom kan aspirerande nya spelutvecklare utan programmeringserfarenhet använda Pygame, eftersom de snabbt kan plocka upp Python först.
Pygame har varit tillgängligt sedan 2000 och sedan dess har ett stort samhälle byggt upp runtom. Samhället hävdar att Pygame har laddats ner miljontals gånger och har haft miljontals besök på sin hemsida ". Som ett resultat av det stora samhället fixas rapporterade fel snabbt, hjälp är lättillgänglig och ett stort antal ytterligare funktioner har lagts till. Dessutom säkerställer samhället att Pygame-utveckling är kul. till exempel körs en tvåårig Python-tävling för att främja plattformen. Samhällets storlek är vad som skiljer Pygame från de andra Python-spelramarna.
Det faktum att Pygame är öppen källkod innebär att buggar i allmänhet fixas mycket snabbt av samhället. Det betyder också att du kan förlänga Pygame för att passa dina behov och kanske till och med ge tillbaka till samhället.
Pygame är skrivet i C, och koll på koden är ett bra sätt att bättre förstå hur Python och Pygame arbetar.
Pygame är mycket bärbar, eftersom den stöder Windows, Linux, Mac OS X, BeOS, FreeBSD, NetBSD, OpenBSD, BSD / OS, Solaris, IRIX och QNX. Förutom dessa beräkningsplattformar finns en Pygame-undergrupp för Android. Dessutom behöver Pygame inte OpenGL och kan använda DirectX, WinDIB, X11, Linux framebuffer och många andra API för att göra grafik. Detta säkerställer att ett större antal användare kan spela ditt spel.
Innan du installerar Pygame, se till att du har installerat Python. Du kommer märka att det finns två versioner av Python: Python 2 och Python 3. Personligen rekommenderar jag att du använder Python 2 tillsammans med Pygame, eftersom Python 2 är mer utbredd och det finns Pygame-moduler som inte stöder Python 3. Men du skulle fortfarande kunna göra bra spel med Python 3.
Efter att ha försökt att en version av Python körs på din maskin kan du hämta Pygame från dess nedladdningswebbplats.
Förutom att installera Pygame-modulerna rekommenderar jag att du installerar en Python IDE, vilket gör det enklare för dig att skapa och kompilera spel.
Observera att en integrerad utvecklingsmiljö, känd som IDLE, redan levereras med Python. Emellertid har IDLE ofta kritiserats för användbarhetsfrågor och jag kan personligen inte rekommendera det.
Min personliga preferens är PyScripter, men PyCharm, Wing IDE, Python Tools för Visual Studio och Netbeans är alla användbara alternativ. Som alltid kommer valet av en IDE att komma ner till personliga preferenser, så jag föreslår att du försöker dem alla och ser vilken du gillar bäst.
Här är några resurser som hjälper dig att komma igång med Pygame.
University of Colorado ger en bra introduktion till Pygame. De bifogade bilderna säkerställer att du vet om och hur du använder Pygame-nyckelkomponenterna. När du har läst det här dokumentet bör du förstå Pygams grundläggande begrepp.
Det finns en mängd olika handledning som kommer att lära dig Pygame i ett steg för steg. Jag har handplockat tre av mina favoriter:
Spelutveckling i Python 3 Med Pygame finns en videohandledningsserie tillgänglig som en YouTube-spellista. Serien innehåller 29 videor, som börjar med att visa bilder och rendering av text och går vidare för att undervisa animering och användarinmatning. Om du föredrar videoupptagningar till textbaserade handledning, missa inte den här serien.
Om du är nybörjare till både Python och Pygame, rekommenderar jag att du tittar på Invent Your Own Computerspel med Python. Den här boken börjar med att lära dig grunderna i Python och stöder denna instruktion genom att visa dig hur man gör enkla kommandoradsspel. Efter att du har förstått dig grunderna i Python, går boken vidare till att undervisa Pygame.
Å andra sidan, om du kliar för att hoppa rakt in i Pygame, är boken för dig att göra spel med Python & Pygame. I slutet av den här boken har du skapat 11 spel och är redo att gå på egen hand.
Alla dessa böcker är gratis och är online, så du kan komma igång direkt!
Ta en titt på dokumentationen är ett viktigt steg på din väg till Pygame-behärskning. Här hittar du dokument, handledning och referenser som täcker alla funktioner i Pygame. Dokumentationen ger dig möjlighet att få kunskap om alla aspekter av Pygame, som går utöver vad du skulle ha lärt dig genom de tidigare resurserna.
Pygame Wiki kommer också att hjälpa till att svara på eventuella frågor du kan ha om plattformen, så tveka inte att ta en titt.
Titta på kod hjälper dig att förstå hur olika delar av Pygame interagerar för att göra ett komplett spel. Dessutom kommer exempel att visa dig bästa praxis, och du kan hämta några knep på vägen.
Kolla in de officiella Pygame-exemplen för detaljer om hur du använder enskilda moduler, eller kolla in offentliga Pygame-projekt på GitHub för att se en fullständig uppsättning kod.
Pygame har en aktiv IRC-kanal och e-postlista. (Maillistan finns också i ett forumliknande gränssnitt.) Medlemmar i samhället är angelägna om att hjälpa nybörjare, var därför inte rädd för att ställa frågor.
När du väl blivit en Pygame-expert, bidrar du tillbaka till samhället och hjälper andra. Att undervisa andra hjälper dig att lära dig och stärka de begrepp du redan vet.
De resurser som anges ovan kommer att vara mer än tillräckligt för att få en solid förståelse för Pygame. Dessutom, om du arbetar dig igenom resurserna, har du gjort flera spel. Jag uppmanar dig dock att skapa din egen skapelse; gör mer än att bygga Tic-Tac-Toe eller Concentration. Vem som helst kan följa en handledning för att göra ett spel. Låt din kreativitet flöda och sätt dina färdigheter till testet genom att bygga en original- spel.
Pygame kommer med en riktigt kraftfull funktion som kallas grupper, genom pygame.sprite.Group
klass. En grupp är i huvudsak en behållare för spriteobjekt.
Till exempel, om jag skapar flera Kula
sprites, jag kan lägga till dem i en grupp som heter kulor
:
kulor = pygame.sprite.Group () för jag i intervallet (10): bullets.add (Bullet ())
Att arbeta med grupper är mycket snabbare än att arbeta med enskilda sprites. Du kan bara ringa Group.update ()
att uppdatera alla sprites inom en grupp, eller Group.draw ()
att blita innehållet i Grupp
till din Yta
. Vidare gör grupper enklare kollisionsdetektering, eftersom Pygame har en metod för att kontrollera kollisioner mellan två grupper: pygame.sprite.groupcollide ()
.
Se till att du konverterar en Yta
när du skapar en genom att ringa konvertera()
metod. Denna metod ändrar pixelformatet för a Yta
för att matcha det som visas på displayen Yta
. Om den här metoden inte kallas, måste en pixelomvandling göras varje gång du blitar något till dig Yta
-en mycket långsam operation.
Till exempel istället för:
ballPicture = pygame.image.load ('ball.png')
ring upp:
ballPicture = pygame.image.load ('ball.png'). konvertera ()
eller om du behöver ställa in alfabetet:
ballPicture = pygame.image.load ('ball.png'). convert_alpha ()
Anteckna det convert_alpha ()
kommer inte att resultera i samma prestationsökning som konvertera()
, eftersom pixelformatet inte kommer att vara en exakt matchning för Yta
fönster. Ändå resulterar det i en förbättrad blasthastighet.
Både pygame.display.update ()
och pygame.display.flip ()
uppdatera innehållet i spelfönstret. Om du bara ringer till dessa metoder uppdaterar du hela skärmen, vilket sänker bildhastigheten kraftigt. Istället kan du bara överväga att uppdatera en viss del av skärmen (vart ändringar ska göras) genom att ringa pygame.display.update ()
och passerar a rect
som representerar området som ska uppdateras till metoden. Genom att göra detta ser du en stor förbättring av prestanda.
Observera att ibland måste hela skärmen uppdateras, och i dessa fall fungerar båda metoderna bra.
Minns att jag nämnde Pygams stora och hjälpsamma samhälle tidigare i posten. Jag rekommenderar att du utnyttjar denna gemenskap genom att ladda ner ytterligare moduler som gjorts av dess medlemmar. Dessa moduler hjälper till att underlätta den snabba utvecklingen av ditt spel och förenkla skapandet av spel.
Mina personliga favoriter inkluderar:
Du kan hitta fler bibliotek på Pygams webbplats.
Om du vill att ditt spel ska vara verkligen plattform, måste du överväga det scenario där dina användare inte har Python och Pygame installerade på sina maskiner.
Tänk på py2exe-förlängningen för att göra Windows-körbara och py2app-förlängningen för att skapa program för Mac OS X.
Pygame har inte använts mycket ofta kommersiellt, eftersom Python inte är känt för sin spelutvecklingsförmåga. Ändå har Pygame använts för att skapa många framgångsrika oberoende spel:
Galcon är ett multiplayer galaktiskt action-strategispel, och kan vara det mest framträdande spelet som utvecklats med Pygame. Den mottogs som en utmärkelse som ett topp 10 årets spel 2007 från GameTunnel, en av de första indie spelrecensionsplatserna.
Frets on Fire, skapades en open-source Guitar Hero-klon i Pygame, som en tillträde till Assembly 2006 Game Development Competition av Unreal Voodoo.
Det prisbelönta rollspelet Dangerous High School Girls in Trouble!, Av oberoende utvecklaren Mousechief, var finalist i IndieCade 2008.
PyWeek är en tvåårig spelprogrammeringsutmaning som endast accepterar spel skapade i Python. Således skapas många inlagor med hjälp av Pygame. En lista över tidigare vinnare finns på PyWeek webbplats.
I det här inlägget har jag gett dig en introduktion till spelutveckling med Python och Pygame. Jag hoppas att jag har lyckats få dig intresserad av Pygame och att lära dig mer om det. Tveka inte att fråga dina frågor här eller på olika Pygame-forum. Du är nu redo att börja din resa till Pygams värld. Lycka till!