Hvordan lære Pygame

Pygame er et kryssplattformsett med Python-moduler designet for å skape spill. Modulene er designet for å være enkle, enkle å bruke og morsomme - en viktig del av Pygams ideologi. I dette innlegget vil jeg vise deg hvordan du bruker Pygame, og dele tips og ressurser for å lære det.

Denne veiledningen forutsetter at du allerede vet hvordan du skal kode i Python. Hvis ikke, sjekk ut den beste måten å lære python, lære python, pythonveiledningen, codecademy eller lære python den harde måten å komme i gang.

Hvorfor Pygame?

Det er enkelt

Python regnes ofte som det beste "første programmeringsspråket" for å lære, og har blitt rost for sin lette å lære syntaks og gradvis læringskurve. Av denne grunn begynner mange nye programmerere ved å lære Python. 

Pygame utvider Python, vedtar Pythons filosofi, og tar sikte på å være enkel å bruke. I tillegg kan håper nye spillutviklere uten programmeringsopplevelse bruke Pygame, da de raskt kan plukke opp Python først.

Det har et stort fellesskap

Pygame har vært tilgjengelig siden 2000, og siden da har et stort samfunn bygget opp rundt det. Samfunnet hevder at Pygame har blitt lastet ned millioner ganger, og har hatt millioner av besøk på sin nettside ". Som et resultat av det store samfunnet, rapporteres feilene raskt, hjelp er lett tilgjengelig, og et stort antall ekstra funksjoner er lagt til. Videre sikrer samfunnet at Pygame-utviklingen er morsom; For eksempel drives en toårig Python-spillkonkurranse for å fremme plattformen. Størrelsen på samfunnet er det som skiller Pygame fra de andre Python-spillene.

Det er åpen kildekode

Det faktum at Pygame er åpen kildekode betyr at bugs vanligvis settes raskt av samfunnet. Det betyr også at du kan utvide Pygame for å dekke dine behov og kanskje til og med gi tilbake til samfunnet. 

Pygame er skrevet i C, og å ta en titt på koden er en fin måte å bedre forstå hvordan Python og Pygame jobber.

Det er svært bærbart

Pygame er svært bærbar, da den støtter Windows, Linux, Mac OS X, BeOS, FreeBSD, NetBSD, OpenBSD, BSD / OS, Solaris, IRIX og QNX. I tillegg til disse databehandlingsplattformene finnes en Pygame-undergruppe for Android. Videre krever Pygame ikke OpenGL og kan bruke DirectX, WinDIB, X11, Linux framebuffer og mange andre APIer for å gjengi grafikk. Dette sikrer at et større antall brukere kan spille spillet ditt.

Starter

Installasjon

Før du installerer Pygame, sørg for at du har installert Python. Du vil merke at det er to versjoner av Python: Python 2 og Python 3. Personlig anbefaler jeg at du bruker Python 2 ved siden av Pygame, da Python 2 er mer utbredt, og det finnes Pygame-moduler som ikke støtter Python 3. Men du vil fortsatt kunne lage flotte spill med Python 3.

Etter at du har sikret at en versjon av Python kjører på maskinen, kan du hente Pygame fra nedlastingswebsiden.

IDE

I tillegg til å installere Pygame-modulene, anbefaler jeg at du installerer en Python IDE, som gjør det enklere for deg å lage og kompilere spill.

Legg merke til at et integrert utviklingsmiljø, kjent som IDLE, allerede kommer med Python. IDLE har imidlertid ofte blitt kritisert for bruksproblemer, og jeg kan ikke personlig anbefale det.

Min personlige preferanse er PyScripter, men PyCharm, Wing IDE, Python Tools for Visual Studio og Netbeans er alle levedyktige alternativer. Som alltid kommer valget av en IDE til personlig preferanse, så jeg foreslår at du prøver dem alle og ser hvilken du liker best. 

ressurser

Her er noen ressurser som hjelper deg med å komme i gang med Pygame.

University of Colorado

University of Colorado gir en flott introduksjon til Pygame. Slides festet vil sikre at du vet om og hvordan du bruker nøkkelkomponentene til Pygame. Etter at du har lest dette dokumentet, bør du forstå kjernekonseptene til Pygame.

Guider

Det finnes en rekke opplæringsprogrammer som vil lære deg Pygame i en trinnvis måte. Jeg har håndplukket tre av mine favoritter:

  • PyGame Tutorials - Enkel introduksjon til Game Programming: Dekker de grunnleggende funksjonene til Pygame
  • PyGame Basics Tutorial: En syv-delt serie fra begynnelsen, med en spesielt stor del om musikk og lydeffekter
  • Python Game Book: Starter av det grunnleggende, men lærer avanserte konsepter, inkludert sprites, piksel-perfekt kollisjonsdeteksjon og rulling

Video Series

Spillutvikling i Python 3 Med Pygame er en videoopplæringsserie tilgjengelig som en YouTube-spilleliste. Serien inneholder 29 videoer, som begynner med å vise bilder og gjengi tekst, og går videre for å undervise animasjon og brukerinngang. Hvis du foretrekker videoopplæringer til tekstbaserte opplæringsprogrammer, ikke gå glipp av denne serien. 

bøker

Hvis du er nybegynner til både Python og Pygame, anbefaler jeg å ta en titt på Invent dine egne dataspill med Python. Denne boken starter ved å lære deg grunnleggende om Python og støtter denne instruksjonen ved å vise deg hvordan du lager enkle kommandolinjespill. Etter at du har forstått grunnleggende om Python, går boken videre til å undervise Pygame.

På den annen side, hvis du er kløe å hoppe rett inn i Pygame, er å lage spill med Python & Pygame boken for deg. Ved slutten av denne boken har du laget 11 spill og vil være klar til å gå alene. 

Alle disse bøkene er gratis og er online, slik at du kan komme i gang med en gang!

Neste skritt

Les dokumentasjonen og Wiki

Ta en titt på dokumentasjonen er et viktig skritt på veien til Pygame mastery. Her finner du dokumenter, veiledninger og referanser som dekker alle funksjonene i Pygame. Dokumentasjonen vil gi deg kunnskap om alle aspekter av Pygame, og går utover det du ville ha lært gjennom de tidligere ressursene.

Pygame Wiki vil også hjelpe deg med å svare på eventuelle spørsmål du måtte ha om plattformen, så ikke nøl med å ta en titt.

Se på koden

Å se på kode vil hjelpe deg å forstå hvordan ulike deler av Pygame samhandler for å lage et komplett spill. I tillegg vil eksempler vise deg beste praksis, og du kan hente opp noen triks underveis.

Ta en titt på de offisielle Pygame-eksemplene for detaljer om hvordan du bruker individuelle moduler, eller sjekk ut offentlige Pygame-prosjekter på GitHub for å se et komplett sett med kode. 

Delta i Fellesskapet

Pygame har en aktiv IRC-kanal og mailingliste. (Postliste er også tilgjengelig i et forumlignende grensesnitt.) Medlemmer av samfunnet er ivrige etter å hjelpe nybegynnere, så vær ikke redd for å stille spørsmål. 

Når du blir en Pygame-ekspert, bidrar du tilbake til samfunnet og hjelper andre. Undervisning andre vil hjelpe deg å lære, og vil styrke de konseptene du allerede vet. 

Lag ditt eget spill

Ressursene som er gitt ovenfor, vil være mer enn nok til å få en solid forståelse av Pygame. Videre, hvis du jobber deg gjennom ressursene, har du laget flere spill. Men jeg oppfordrer deg til å lage din egen skapelse; gjør mer enn å bygge Tic-Tac-Toe eller Concentration. Alle kan følge en veiledning for å lage et spill. La kreativiteten flyte og sette ferdighetene dine til test ved å bygge en opprinnelig spill.  

Utviklingstips

Bruk grupper

Pygame kommer med en veldig kraftig funksjon kjent som grupper, gjennom pygame.sprite.Group klasse. En gruppe er i hovedsak en beholder for spriteobjekter.

 For eksempel, hvis jeg lager flere Kule sprites, jeg kan legge dem til en gruppe som heter kuler:

kuler = pygame.sprite.Group () for jeg i rekkevidde (10): bullets.add (Bullet ())

Arbeide med grupper er mye raskere enn å jobbe med individuelle sprites. Du kan bare ringe Group.update () å oppdatere alle sprites innenfor en gruppe, eller Group.draw () å tømme innholdet i Gruppe til din Flate. Videre gjør grupper enklere kollisjonsdeteksjon, fordi Pygame har en metode for å sjekke for kollisjoner mellom to grupper: pygame.sprite.groupcollide ()

Konverter dine overflater

Kontroller at du konverterer en Flate når du oppretter en ved å ringe konvertere() metode. Denne metoden endrer pikselformatet for a Flate for å matche den på skjermen Flate. Hvis denne metoden ikke blir kalt, må en pikselkonvertering gjøres hver gang du blitter noe til din Flate-en veldig langsom operasjon.

 For eksempel, i stedet for:

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

 anrop:

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

eller hvis du må sette alfaen:

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

Noter det convert_alpha () vil ikke resultere i samme ytelsesøkning som konvertere(), siden pikselformatet ikke vil være et eksakt samsvar for Flate vindu. Likevel resulterer det i en forbedret blitshastighet.

Oppdater vs. Flip

Både pygame.display.update () og pygame.display.flip () oppdater innholdet i spillvinduet. Men bare ved å kalle disse metodene, oppdateres hele skjermen, noe som senker rammeprosessen kraftig. I stedet kan du bare vurdere å oppdatere en bestemt del av skjermen (uansett hvor endringer skal gjøres) ved å ringe pygame.display.update ()og passerer en rect som representerer området som skal oppdateres til metoden. Ved å gjøre dette vil du se en stor forbedring i ytelsen.

Merk at det til tider må hele skjermen bli oppdatert, og i disse tilfellene vil begge metodene fungere fint. 

Tilleggsmoduler

Husk at jeg nevnte Pygams store og hjelpsomme samfunn tidligere i innlegget. Jeg anbefaler at du utnytter dette fellesskapet ved å laste ned tilleggsmoduler laget av sine medlemmer. Disse modulene vil bidra til å lette den raske utviklingen av spillet ditt, og forenkle spillopprettingsprosessen.

 Mine personlige favoritter inkluderer:

  • Pyganim: Gjør det enkelt å legge til sprite animasjoner til spillene dine
  • input.py: Forenkler kontrollhåndtering i Pygame ved bruk av flere kontroller-metoder
  • Python Game Utilities: En stor samling av Pygame verktøy

Du finner flere biblioteker på Pygame-nettstedet.

Kjørbare spill

Hvis du vil at spillet skal være virkelig kryssplattform, må du vurdere scenariet der brukerne ikke har Python og Pygame installert på sine maskiner.

Vurder py2exe-utvidelsen for å lage Windows-kjørbare og Py2app-utvidelsen for å lage programmer for Mac OS X. 

Vise frem

Pygame har ikke blitt brukt veldig ofte kommersielt, da Python ikke er kjent for spillutviklingsmulighetene. Likevel har Pygame blitt brukt til å skape mange vellykkede uavhengige spill:

Galcon

Galcon er et multi-player galaktisk action-strategispill, og kan være det mest fremtredende spillet utviklet med Pygame. Den mottok som en pris som et topp 10 spill av året i 2007 fra GameTunnel, en av de første indie spill gjennomgang nettstedene.

Frets on Fire

Frets on Fire, en open-source Guitar Hero klon ble opprettet i Pygame, som en oppføring til Assembly 2006 Game Development Competition av Unreal Voodoo.

Farlig High School Girls i Trouble!

Det multi-prisbelønte rollespillet Dangerous High School Girls in Trouble!, Av uavhengig utvikler Mousechief, var en finalist i IndieCade 2008.

PyWeek

PyWeek er en toårig spillprogrammeringsutfordring som bare aksepterer spill som er opprettet i Python. Dermed er mange innleveringer opprettet ved hjelp av Pygame. En liste over tidligere vinnere er tilgjengelig på PyWeek-nettsiden.

Konklusjon

I dette innlegget har jeg gitt deg en introduksjon til spillutvikling med Python og Pygame. Jeg håper at jeg har lykkes med å få deg interessert i Pygame og lære deg mer om det. Ikke nøl med å stille spørsmålene dine her eller i ulike Pygame forum. Du er nå klar til å begynne reisen inn i Pygames verden. Lykke til!