Taula de continguts:

Crea el teu primer joc de carreres: 10 passos
Crea el teu primer joc de carreres: 10 passos

Vídeo: Crea el teu primer joc de carreres: 10 passos

Vídeo: Crea el teu primer joc de carreres: 10 passos
Vídeo: Праздник. Новогодняя комедия 2024, Desembre
Anonim
Image
Image
Imatge
Imatge

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

Dibuixant el teu actor
Dibuixant el teu 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

Controla l'actor
Controla 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

Construint la pista
Construint 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 32: si trackDirection == False: trackPosition + = 16 si trackDirection == True: trackPosition - = 16 si randint (0, 4) == 1: trackDirection = no trackDirection si trackPosition> 700 - trackWidth: trackDirection = True si trackPosition < trackWidth: trackDirection = False makeTrack () # crea una nova pista a la part superior de la pantalla

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

Accident de cotxe
Accident de cotxe
Accident de cotxe
Accident de cotxe
Accident de cotxe
Accident de 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

Executeu el joc a Raspberry Pi
Executeu el joc a Raspberry Pi
Executeu el joc a Raspberry Pi
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?

Vas guanyar?
Vas guanyar?

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: