Taula de continguts:
- Pas 1: visió general
- Pas 2: requisits previs
- Pas 3: "Hello World" a Pygame Zero
- Pas 4: Dibuixeu el vostre actor
- Pas 5: controleu l'actor
- Pas 6: Construir la pista
- Pas 7: accident del cotxe
- Pas 8: executeu el joc a Raspberry Pi
- Pas 9: Heu guanyat?
- Pas 10: Conclusió
Vídeo: Crea el teu primer joc de carreres: 10 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Si heu fet alguna codificació de Python i voleu escriure un joc, és possible que tingueu a Pygame Zero.
En aquest tutorial escriurem un senzill joc de carreres.
Pas 1: visió general
El mòdul Pygame afegeix moltes funcions que us ajuden a escriure jocs a Python.
Pygame Zero fa un pas més per deixar-vos passar per sobre del feixuc procés de fer tots aquests bucles de joc i configurar l'estructura del programa.
Pygame Zero és una opció fantàstica per a qualsevol persona que vulgui començar a escriure jocs d'ordinador al Raspberry Pi o a qualsevol equip Linux.
Necessitareu:
- Màquina que executa el sistema operatiu Linux
- Editor per escriure el programa Python
- Teclat
- Una mica d’imaginació
Fitxers:
github.com/AhmNouira/-Racing-Game
Pas 2: requisits previs
Primer faré servir el meu ordinador portàtil amb el sistema operatiu Ubuntu 18.04. A continuació, executarem el joc a Raspberry Pi al pas 8.
Abans de continuar amb aquest tutorial, assegureu-vos que heu iniciat la sessió com a usuari amb privilegis sudo.
Instal·lació de pip per a Python 3
Comenceu actualitzant la llista de paquets mitjançant l'ordre següent:
actualització sudo apt
Utilitzeu l'ordre següent per instal·lar pip per a Python 3:
sudo apt instal·lar python3-pip
verifiqueu la instal·lació comprovant la versió de pip:
pip3 --versió
Instal·lació de Pygame Zero
pip3 instal·la pgzero --user
Això també instal·larà Pygame. Paquets Pygame precompilats
Per tant, el primer pas del vostre viatge serà obrir Python 3 IDLE o el vostre editor de python preferit.
Pas 3: "Hello World" a Pygame Zero
Per defecte, la finestra Pygame Zero s'obre a la mida de 800 píxels d'ample per 600 píxels d'alçada. Podeu personalitzar-lo
de la mida de la finestra, hi ha dues variables predefinides que podeu establir, si incloeu AMPLADA = 700 ALTA = 800.
Pygame zero proporciona funcions predefinides per manejar el bucle de joc que realitza normalment:
La funció draw ()
Podem escriure aquesta funció al nostre programa de la mateixa manera que normalment definiríem una funció a Python.
Pygame Zero segueix les mateixes regles de format que Python, de manera que haureu de tenir cura de sagnar el vostre codi correctament.
#! / usr / bin / python3 # estableix l'intèrpret
import pgzrun # import pgzero module WIDTH = 700 # width of the window HEIGHT = 800 # height of the window def draw (): # pygame zero draw function screen.fill ((128, 128, 128)) # complete the screen with RGB color screen.draw.text ("Hello World!", (270, 320), # draw "Hello World!" color = (255, 255, 255), fontsize = 40) pgzrun.go ()
Primer de tot, heu de desar el fitxer del programa i posar-li un nom.
A continuació, obriu una finestra de terminal, aneu a la ubicació del fitxer i escriviu:
./.py
Pas 4: Dibuixeu el vostre actor
Ara que tenim el nostre escenari, podem crear els nostres actors, que són objectes dinàmics a Pygame Zero.
Podem carregar un actor escrivint a la part superior del programa:
car = Actor ("racecar")
A Pygame Zero, les nostres imatges s’han d’emmagatzemar en un directori anomenat imatges, al costat del nostre fitxer de programa, de manera que el nostre actor estaria buscant un fitxer d’imatges a la carpeta d’imatges anomenada racecar.png. Pot ser un fitxer-g.webp
Podeu configurar la seva posició a la pantalla escrivint:
car.pos = 350, 560
Després d'això, a la nostra funció draw () podem escriure
car.draw () # dibuixa el nostre cotxe de carreres a la seva posició definida
El programa complet serà així:
#! / usr / bin / python3
import pgzrun WIDTH = 700 # width of the window HEIGHT = 800 # height of the window car = Actor ("racecar") car.pos = 350, 560 def draw (): # pygame zero draw function screen.fill ((128, 128, 128)) # ompliu la pantalla amb car.draw () pgzrun.go ()
Prova el programa per assegurar-te que funciona.
Pas 5: controleu l'actor
Un cop tenim el cotxe dibuixat a la pantalla, la següent etapa és permetre que el jugador el pugui moure.
Ho podem fer amb les tecles premudes. Podem llegir l’estat d’aquestes tecles dins d’una altra funció predefinida anomenada update ().
La funció update ()
Aquesta funció es comprova contínuament mentre s’està executant el joc.
Hem d’escriure algun codi per detectar les tecles de fletxa premudes i també per fer-hi alguna cosa.
Per tant, afegirem aquesta funció al nostre programa
actualització per defecte ():
si keyboard.left: car.x - = 2 si keyboard.right: car.x + = 2 si keyboard.up: car.y - = 2 si keyboard.down: car.y + = 2
Aquestes línies de codi mouran el cotxe Actor cap a l'esquerra, la dreta, cap endavant i cap enrere.
Pas 6: Construir la pista
Ara que tenim un cotxe que podem dirigir, necessitem una pista perquè pugui circular.
Anem a construir la nostra pista a partir d’Actors, d’una fila a la vegada. Haurem de fer algunes llistes per fer un seguiment dels actors que creem.
També haurem d’establir algunes variables més per a la pista.
A continuació, fem una nova funció anomenada makeTrack (), la funció afegirà una pista Actor a l'esquerra i una a la dreta, ambdues utilitzant la imatge bare-p.webp
trackLeft = # llista per emmagatzemar les barres esquerres
trackRight = # llista per emmagatzemar les barres de la dreta trackCount = 0 # compta el nombre de barres trackPosition = 350 trackWidth = 150 # d'amplada entre les barres de l'esquerra i la dreta def makeTrack (): # funció per fer un barrie a la pista global esquerra i dreta, trackLeft, trackRight, trackPosition, trackWidth trackLeft.append (Actor ("bare", pos = (trackPosition-trackWidth, 0))) trackRight.append (Actor ("bare", pos = (trackPosition + trackWidth, 0))) trackCount + = 1
El següent que hem de fer és desplaçar les seccions de pista per la pantalla cap al cotxe.
Escrivim una nova funció anomenada updateTrack (), aquesta funció s’actualitza on apareixeran els blocs de pistes. Les peces de la pista es creen mitjançant números aleatoris, de manera que cada reproducció és diferent.
trackDriction = Fals
SPEED = 4 # estableix la velocitat del joc a partir de la importació aleatòria randint # importació de la classe randint des del mòdul aleatori def updateTrack (): trackCount global, trackPosition, trackDirection, trackWidth, SPEED b = 0 mentre que b
Consulteu el fitxer zip següent anomenat "RaceGameDemo".
Si executem el nostre codi en aquest moment, hauríem de veure una pista que s’enfonsa cap al cotxe. L'únic problema és que podem moure el cotxe per sobre de les barreres de la via i volem mantenir el cotxe dins d'ells amb una detecció de col·lisions.
Pas 7: accident del cotxe
Hem d’assegurar-nos que el nostre cotxe no toqui la pista Actors.
també podem provar col·lisions mitjançant el mètode colliderect () a la nostra funció updateTrack ().
En aquest joc tindrem tres estats diferents al joc emmagatzemat al nostre estat variable de joc:
- gameStatus == 0 # game is running
- gameStatus == 1 # accident de cotxe
- gameStatus == 2 # joc acabat
Haurem de canviar la nostra funció draw () i la nostra funció update () per respondre a la variable gameStatus.
Tocs finals
Tot el que hem de fer ara és mostrar alguna cosa si gameStatus està establert en 1 o 2, per exemple, hauríem de mostrar un vermell
bandera, si el cotxe es va estavellar. Ho podem fer amb el codi següent:
screen.blit ("redflag", (230, 230))
Per veure si el cotxe ha arribat a la meta, hauríem de comptar quantes seccions de pista s'han creat i, potser, quan arribem a 200, establiu gameStatus a 2. A continuació, mostreu la bandera a quadres:
screen.blit ("finishflag", (230, 230))
També mostrarem un text a la pantalla com la puntuació actual del joc.
Feu un cop d'ull al llistat de codis complet per veure com encaixa tot això.
Pas 8: executeu el joc a Raspberry Pi
A Raspberry Pi, pgzero s'ha instal·lat per defecte des del llançament de Raspbian Jessie al setembre de 2015.
Només cal que actualitzeu el vostre Raspberry Pi mitjançant l'ordre:
sudo apt-get update
Aneu a la ubicació del fitxer i escriviu el terminal.
pgzrun.py
Pas 9: Heu guanyat?
Podeu fer el joc més fàcil o més difícil canviant la variable trackWidth per fer que la pista tingui una amplada diferent. Podeu canviar el valor de SPEED per fer que la pista es mogui més ràpid o més lent.
Pas 10: Conclusió
Pygame Zero és una opció fantàstica per a qualsevol persona que vulgui començar a escriure jocs d'ordinador.
Si teniu alguna pregunta, per descomptat, podeu deixar un comentari. Per obtenir més informació sobre les meves obres, visiteu el meu canal:
myYouTube
myTwitter
myLinkedin
Gràcies per llegir aquest instructiu ^^ i tingueu un bon dia. Ens veiem. Ahmed Nouira.
Recomanat:
Crea el teu propi joc de ping 1D: 5 passos (amb imatges)
Feu el vostre propi joc 1D Pong: per a aquest projecte us mostraré com he combinat una placa MDF amb botons de campana, LEDs i un Arduino Nano per tal de crear un joc Pong 1D que sigui molt divertit de jugar. Al llarg del camí us mostraré com crear el circuit electrònic i quina diferència
Joc de carreres de cavalls de Halloween: 6 passos
Joc de carreres de cavalls de Halloween Joc: Aquest any hem decidit fer un joc arcade de carreres de cavalls per Halloween. Ens vam inspirar en una versió mecànica anomenada Roll-a-Ball Horse Racing. El nostre objectiu era fer un joc amb controls directes per atraure a una àmplia gamma de jugadors. Basat en
Fer gràfics per a un joc de carreres Scratch: 7 passos
Creació de gràfics per a un joc de carreres de Scratch: aquest tutorial us mostrarà com fer un joc de carreres a Scratch
Posar música al joc de carreres Scratch: 3 passos
Posar música al joc de carreres Scratch: aquest tutorial us mostrarà pas a pas com posar la vostra pròpia música al joc de carreres BIY Scratch
Programació del joc de carreres a Scratch: 7 passos
Programació del joc de carreres a Scratch: aquest tutorial us mostrarà com programar un joc de carreres dins de Scratch del MIT