Hoe Pygame te leren

Pygame is een platformonafhankelijke reeks Python-modules die is ontworpen voor het maken van spellen. De modules zijn ontworpen om eenvoudig, gebruiksvriendelijk en leuk te zijn - een belangrijk onderdeel van de ideologie van Pygame. In dit bericht laat ik zien hoe je Pygame gebruikt en deel tips en bronnen om het te leren.

Deze gids gaat ervan uit dat je al weet hoe je moet coderen in Python. Als dat niet het geval is, bekijk dan de beste manier om Python te leren, Python leren kennen, de Python-tutorial, Codecademy of leer Python op de moeilijke manier aan de slag te gaan.

Waarom Pygame?

Het is makkelijk

Python wordt vaak beschouwd als de beste "eerste programmeertaal" om te leren, en werd geprezen om zijn gemakkelijk te leren syntaxis en geleidelijke leercurve. Om deze reden beginnen veel nieuwe programmeurs met het leren van Python. 

Pygame breidt Python uit, gebruikt de filosofie van Python en is eenvoudig te gebruiken. Bovendien kunnen nieuwe gameontwikkelaars zonder programmeerervaring Pygame gebruiken, omdat ze Python snel kunnen oppikken.

Het heeft een grote gemeenschap

Pygame is beschikbaar sinds 2000 en sindsdien is er een grote gemeenschap rondom opgebouwd. De community beweert dat Pygame miljoenen keren is gedownload en miljoenen bezoeken aan zijn website heeft gehad ". Als gevolg van de grote community worden gerapporteerde bugs snel verholpen, is hulp direct beschikbaar en zijn een groot aantal extra functies toegevoegd. Verder zorgt de community ervoor dat Pygame-ontwikkeling leuk is; er wordt bijvoorbeeld een halfjaarlijkse Python-gamecompetitie georganiseerd om het platform te promoten. De grootte van de community is wat Pygame scheidt van de andere Python-gamekaders.

Het is Open Source

Het feit dat Pygame open source is, betekent dat bugs over het algemeen snel door de community worden opgelost. Het betekent ook dat je Pygame kunt uitbreiden naar jouw behoeften en misschien zelfs terug kunt geven aan de gemeenschap. 

Pygame is geschreven in C, en een kijkje nemen in de code is een geweldige manier om beter te begrijpen hoe Python en Pygame werken.

Het is zeer draagbaar

Pygame is zeer draagbaar, omdat het Windows, Linux, Mac OS X, BeOS, FreeBSD, NetBSD, OpenBSD, BSD / OS, Solaris, IRIX en QNX ondersteunt. Naast deze computerplatforms bestaat er een Pygame-subset voor Android. Verder heeft Pygame geen OpenGL nodig en kan het DirectX, WinDIB, X11, Linux framebuffer en vele andere API's gebruiken om grafische afbeeldingen te maken. Dit zorgt ervoor dat een groter aantal gebruikers uw spel kunnen spelen.

Ermee beginnen

Installatie

Voordat je Pygame installeert, moet je ervoor zorgen dat je Python hebt geïnstalleerd. Je zult merken dat er twee versies van Python zijn: Python 2 en Python 3. Persoonlijk raad ik je aan om Python 2 naast Pygame te gebruiken, aangezien Python 2 vaker voorkomt en er Pygame-modules zijn die Python 3 niet ondersteunen. zou nog steeds geweldige spellen kunnen maken met Python 3.

Nadat je ervoor hebt gezorgd dat een versie van Python op je computer draait, kun je Pygame ophalen van de downloadwebsite.

Ides

Naast het installeren van de Pygame-modules, raad ik aan dat je een Python IDE installeert, waardoor je gemakkelijker games kunt maken en compileren.

Merk op dat een geïntegreerde ontwikkelomgeving, bekend als IDLE, al gebundeld is met Python. IDLE is echter vaak bekritiseerd vanwege bruikbaarheidsproblemen en ik kan het persoonlijk niet aanbevelen.

Mijn persoonlijke voorkeur gaat uit naar PyScripter, maar PyCharm, Wing IDE, Python Tools voor Visual Studio en Netbeans zijn allemaal uitvoerbare opties. Zoals altijd komt de keuze van een IDE neer op persoonlijke voorkeur, dus ik raad u aan ze allemaal te proberen en te zien welke u het beste bevalt. 

Middelen

Hier zijn een paar bronnen die je kunnen helpen om met Pygame aan de slag te gaan.

Universiteit van Colorado

De Universiteit van Colorado biedt een geweldige introductie tot Pygame. De bijgevoegde dia's zorgen ervoor dat u de belangrijkste componenten van Pygame kent en gebruikt. Nadat je dit document hebt gelezen, moet je de kernbegrippen van Pygame begrijpen.

tutorials

Er zijn een groot aantal tutorials beschikbaar waarmee je Pygame stap voor stap leert. Ik heb drie van mijn favorieten met de hand geselecteerd:

  • PyGame Tutorials - Simpele introductie tot spelprogrammering: behandelt de basisfuncties van Pygame
  • PyGame Basics Zelfstudie: een zevendelige serie vanaf het begin, met een bijzonder goed hoofdstuk over muziek en geluidseffecten
  • Het Python-spelboek: begint met de basis, maar leert geavanceerde concepten zoals sprites, pixel-perfecte botsingsdetectie en scrollen

Videoserie

Spelontwikkeling in Python 3 Met Pygame is een video-tutorialserie beschikbaar als YouTube-afspeellijst. De serie bevat 29 video's, beginnend met het weergeven van afbeeldingen en het weergeven van tekst, en gaat verder met animatie en gebruikersinvoer. Als u videostudielessen prefereert boven op tekst gebaseerde zelfstudies, mag u deze serie niet missen. 

Boeken

Als je een beginner bent van zowel Python als Pygame, raad ik je aan eens een kijkje te nemen bij Invent Your Own Computer Games met Python. Dit boek begint met het onderwijzen van de basisprincipes van Python en ondersteunt deze instructie door je te laten zien hoe je eenvoudige opdrachtregelgames maakt. Nadat je zeker weet dat je de basisprincipes van Python begrijpt, gaat het boek verder om Pygame te leren.

Aan de andere kant, als je jeuk om recht in Pygame te springen, is Making Games with Python & Pygame het boek voor jou. Aan het einde van dit boek heb je 11 spellen gemaakt en ben je klaar om zelfstandig te spelen. 

Al deze boeken zijn gratis en zijn online, dus je kunt meteen aan de slag!

Volgende stappen

Lees de documentatie en Wiki

Een kijkje nemen in de documentatie is een belangrijke stap op weg naar Pygame meesterschap. Hier vind je documenten, tutorials en referenties die alle functies van Pygame behandelen. De documentatie stelt je in staat om kennis te nemen van alle aspecten van Pygame, die verder gaan dan wat je zou hebben geleerd door de eerdere bronnen.

De Pygame Wiki helpt ook bij het beantwoorden van al je vragen over het platform, dus aarzel niet om een ​​kijkje te nemen.

Kijk naar Code

Door naar code te kijken, kun je begrijpen hoe verschillende delen van Pygame samenwerken om een ​​compleet spel te maken. Bovendien laten voorbeelden u de beste werkwijzen zien en kunt u onderweg enkele trucjes oppikken.

Bekijk de officiële Pygame-voorbeelden voor details over het gebruik van individuele modules, of bekijk openbare Pygame-projecten op GitHub om een ​​volledige set code te zien. 

Neem deel aan de community

Pygame heeft een actief IRC-kanaal en een mailinglijst. (De mailinglijst is ook beschikbaar in een forum-achtige interface.) Leden van de community staan ​​te trappelen om beginners te helpen, dus wees niet bang om vragen te stellen. 

Zodra je Pygame-expert bent geworden, draag je een steentje bij aan de community en help je anderen. Anderen leren, zal je helpen om te leren en zal de begrippen die je al kent stollen. 

Maak je eigen spel

De hierboven genoemde hulpmiddelen zijn meer dan voldoende om een ​​goed begrip van Pygame te krijgen. Bovendien, als je je een weg banen door de middelen, heb je meerdere spellen gemaakt. Ik dring er echter bij u op aan om uw eigen creatie te maken; doe meer dan Tic-Tac-Toe of Concentration bouwen. Iedereen kan een zelfstudie volgen om een ​​spel te maken. Laat je creativiteit stromen en zet je vaardigheden op de proef door een origineel spel.  

Ontwikkelingstips

Gebruik Groepen

Pygame wordt geleverd met een echt krachtige functie die bekend staat als groepen, door het pygame.sprite.Group klasse. Een groep is in wezen een container voor sprite-objecten.

 Bijvoorbeeld, als ik meerdere maak Kogel sprites, ik kan ze toevoegen aan een groep met de naam bullets:

bullets = pygame.sprite.Group () voor i in bereik (10): bullets.add (Bullet ())

Werken met groepen gaat veel sneller dan werken met individuele sprites. Je kunt gewoon bellen Group.update () om alle sprites binnen een groep bij te werken, of Group.draw () om de inhoud van de Groep aan jouw Oppervlakte. Bovendien maken groepen het detecteren van botsingen gemakkelijker, omdat Pygame een methode heeft om te controleren op botsingen tussen twee groepen: pygame.sprite.groupcollide ()

Converteer uw oppervlakken

Zorg ervoor dat u een conversie uitvoert Oppervlakte wanneer je er een maakt door het te gebruiken converteren() methode. Deze methode verandert het pixelformaat van a Oppervlakte om dat van het display te evenaren Oppervlakte. Als deze methode niet wordt aangeroepen, moet een pixelconversie worden uitgevoerd elke keer dat u iets naar uw blit Oppervlakte-een zeer trage operatie.

 Bijvoorbeeld in plaats van:

ballPicture = pygame.image.load ('ball.png')

 bellen:

ballPicture = pygame.image.load ('ball.png'). convert ()

of als u de alpha moet instellen:

ballPicture = pygame.image.load ('ball.png'). convert_alpha ()

Let daar op convert_alpha () zal niet resulteren in dezelfde prestatieverhoging als converteren(), omdat het pixelformaat niet exact overeenkomt met de Oppervlakte venster. Desalniettemin resulteert dit in een verbeterde blitsnelheid.

Update versus omdraaien

Beide pygame.display.update () en pygame.display.flip () update de inhoud van het spelvenster. Door eenvoudigweg deze methoden te gebruiken, wordt het volledige scherm bijgewerkt, waardoor de framesnelheid sterk wordt vertraagd. Overweeg in plaats daarvan alleen om een ​​specifiek deel van het scherm bij te werken (waar wijzigingen ook moeten worden aangebracht) door te bellen pygame.display.update ()en passeren van een rect het gebied vertegenwoordigen dat moet worden bijgewerkt in de methode. Door dit te doen, zult u een enorme verbetering van de prestaties zien.

Merk op dat soms het hele scherm moet worden bijgewerkt en in beide gevallen zullen beide methoden goed werken. 

Extra modules

Bedenk dat ik eerder in de post de grote en behulpzame gemeenschap van Pygame noemde. Ik raad aan om te profiteren van deze community door extra modules te downloaden die zijn gemaakt door de leden. Deze modules zullen de snelle ontwikkeling van je spel vergemakkelijken en het proces van het maken van spellen vereenvoudigen.

 Mijn persoonlijke favorieten zijn onder meer:

  • Pyganim: maakt het eenvoudig om sprite-animaties aan je games toe te voegen
  • input.py: vereenvoudigt de besturing in Pygame bij het gebruik van meerdere controllermethoden
  • Python Game Utilities: een grote verzameling Pygame-hulpprogramma's

Je kunt meer bibliotheken vinden op de Pygame-website.

Uitvoerbare spellen

Als je wilt dat je game echt cross-platform is, moet je het scenario overwegen waarin je gebruikers Python en Pygame niet op hun computers hebben geïnstalleerd..

Overweeg de extensie py2exe om Windows-uitvoerbare bestanden te maken en de extensie py2app om toepassingen voor Mac OS X te maken. 

vitrine

Pygame is niet vaak commercieel gebruikt, omdat Python niet bekend staat om zijn game-ontwikkelingsmogelijkheden. Niettemin is Pygame gebruikt om veel succesvolle onafhankelijke spellen te maken:

Galcon

Galcon is een galactisch actie-strategiespel met meerdere spelers en is misschien wel het meest prominente spel dat met Pygame is ontwikkeld. Het ontving als een prijs als een Top 10 spel van het jaar in 2007 van GameTunnel, een van de eerste Indie-game reviewsites.

Frets in vuur en vlam

Frets on Fire, een open-source Guitar Hero-kloon werd gemaakt in Pygame, als een inzending voor de Assembly 2006 Game Development Competition door Unreal Voodoo.

Gevaarlijke middelbare schoolmeisjes in problemen!

Het meermaals bekroonde role-playing game Dangerous High School Girls in Trouble !, door onafhankelijke ontwikkelaar Mousechief, was een finalist in IndieCade 2008.

PyWeek

PyWeek is een tweejaarlijkse uitdaging voor het programmeren van spellen die alleen games accepteert die in Python zijn gemaakt. Veel inzendingen zijn dus gemaakt met Pygame. Een lijst met eerdere winnaars is beschikbaar op de PyWeek-website.

Conclusie

In deze post heb ik je een inleiding gegeven tot de ontwikkeling van spellen met Python en Pygame. Ik hoop dat ik erin geslaagd ben je geïnteresseerd te laten zijn in Pygame en je er meer over te leren. Aarzel niet om hier je vragen te stellen of in verschillende Pygame-forums. Je bent nu klaar om je reis naar de Pygame-wereld te beginnen. Veel succes!