In deze tutorial leer je hoe je gamescores kunt weergeven en bijwerken in Pygame, een populaire Python-bibliotheek voor game-ontwikkeling. Tegen het einde kun je een eenvoudig jumper-spel maken en de score van de speler op het scherm weergeven naarmate hij vordert. De game houdt toetsenbordinvoer bij, zodat je de speler met de pijltjestoetsen naar links en rechts kunt bewegen.
Een eenvoudig spel maken
Voordat je scores in Pygame kunt weergeven en bijwerken, moet je eerst een spel maken om mee te werken. In deze tutorial maak je een eenvoudig spel waarbij een speler naar links of rechts kan bewegen. Maar daarvoor zou je het moeten hebben pip op uw apparaat geïnstalleerd. Voer na het installeren van pip de onderstaande opdracht uit om de pygame-module te installeren:
Pip installeren pyspel
Importeer om te beginnen de benodigde modules en stel de basisstructuur van het spel in:
importeren pygame, sys
pygame.init()# Stel het raam in
scherm = pygame.display.set_mode((750, 450))# Stel de wedstrijdklok in
klok = pygame.tijd. Klok()# Stel het personage van de speler in
speler = pygame. Recht(100, 200, 50, 50)# Stel het obstakel op
obstakel = pygame. Recht(200, 200, 50, 50)# Stel de spellus in
terwijlWAAR:
# Gebeurtenissen afhandelen
voor evenement in pygame.event.get():
als event.type == pygame. ONTSLAG NEMEN:
pygame.quit()
sys.exit()als event.type == pygame. TOETS NEER:
als event.key == pygame. K_LEFT:
speler.x -= 10
elif event.key == pygame. K_RIGHT:
speler.x += 10
# Werk de spelstatus bij
# Teken het spel
scherm.vullen((0, 0, 0))
pygame.draw.rect (scherm, (255, 0, 0), speler)
pygame.draw.rect (scherm, (0, 255, 0), obstakel)
# Werk de weergave bij
pygame.display.flip()
# Beperk de framesnelheid
klok.vinkje(60)
Met deze skeleton code is je basisspel speelbaar. Druk naar links of rechts om het personage van de speler te verplaatsen, weergegeven door het rode vierkant.
Spelscore weergeven en bijwerken
Nu je een basisspel hebt opgezet, voeg je een scoresysteem toe en geef je de score weer op het scherm.
Pygame instellen voor tekstweergave
Om tekst in Pygame weer te geven, moeten we eerst de benodigde modules importeren en de lettertypemodule initialiseren. Gebruik hiervoor de volgende code bovenaan uw script:
importeren pyspel
importeren systeem
importeren os
pygame.init()
pygame.font.init()
Met de pygame.font-module kunt u de tekstweergavemogelijkheden van Pygame gebruiken en de pygame.init()-functie initialiseert de font-module.
Een basisscoresysteem maken
Maak vervolgens een basisscoresysteem voor je spel. Om dit te doen, declareert en initialiseert u twee variabelen: score en score_increment. De variabele score houdt de huidige score van de speler bij en de variabele score_increment geeft aan hoeveel de score moet stijgen telkens wanneer de speler een obstakel raakt.
Voeg de volgende code toe aan de bovenkant van uw script, onder de invoer:
scoren = 0
score_increment = 10
Werk vervolgens de score bij naarmate het spel vordert. In de spellus kun je controleren of het personage van de speler in botsing komt met het obstakel. Als dit het geval is, verhoogt u de score met het bedrag dat is opgegeven in de variabele score_increment.
Werk de spellus bij om de volgende code op te nemen:
# Werk de spelstatus bij
als player.colliderect (obstakel):
score += score_increment
Deze code controleert of het personage van de speler in botsing komt met het obstakel. Als dit het geval is, wordt de score verhoogd met het opgegeven bedrag.
De partituur op het scherm weergeven met de lettertypemodule
Nu we een basisscoresysteem hebben, laten we de score op het scherm weergeven met behulp van de lettertypemodule.
Laten we eerst het lettertype-object instellen door de volgende code toe te voegen aan de bovenkant van de spellus:
# Stel het lettertype-object in
lettertype = pygame.lettertype. Lettertype(Geen, 36)
Deze code maakt een lettertypeobject met een grootte van 36 pixels en geen opgegeven lettertypefamilie. U kunt het lettertype en de tekengrootte aanpassen door een ander lettertypebestand en een andere tekengrootte op te geven in de functie Font().
Laten we vervolgens de score naar het scherm tekenen. Voeg de volgende code toe aan de spelloop, nadat je de spelstatus hebt bijgewerkt en het scherm hebt gevuld:
# Teken de score naar het scherm
score_text = font.render(f'Score: {scoren}', WAAR, (255, 255, 255))
scherm.blit (score_text, (10, 10))
Deze code gebruikt de methode render() van het font-object om een tekstoppervlak te maken dat de partituur bevat en vervolgens het tekstoppervlak met blits (tekens) naar het scherm te tekenen op de positie (10, 10).
Het uiterlijk van de partituurtekst aanpassen
Pas ten slotte het uiterlijk van de partituurtekst aan door een lettertype en lettergrootte te kiezen en de kleur van de tekst te wijzigen.
Om een specifiek lettertype en lettergrootte te kiezen, geeft u het lettertypebestand en de grootte als argumenten door aan de functie Font():
lettertype = pygame.lettertype. Lettertype('arial.ttf', 48)
Je kunt gemakkelijk verschillende lettertypebestanden downloaden van het internet. Plaats na het downloaden het lettertypebestand in de hoofdmap van uw werkdirectory.
Als u de kleur van de tekst wilt wijzigen, geeft u een kleurtuple als derde argument door aan de methode render():
score_text = font.render(f'Score: {scoren}', WAAR, (0, 255, 0))
En dat is het! Met deze wijzigingen zou je nu een volledig functioneel spelscoresysteem moeten hebben dat de score op het scherm weergeeft en deze bijwerkt naarmate de speler vordert in het spel. U kunt het uiterlijk van de partituurtekst verder aanpassen door te experimenteren met verschillende lettertypefamilies, -groottes en -kleuren.
Score bijhouden in het spel
Hieronder staat de volledige werkende code, ook hierop is de code te vinden GitHub repo.
importeren pyspel
importeren ospygame.init()
pygame.font.init()scoren = 0
score_increment = 10# Stel het raam in
scherm = pygame.display.set_mode((750, 450))# Stel de wedstrijdklok in
klok = pygame.tijd. Klok()# Stel het personage van de speler in
speler = pygame. Recht(100, 200, 50, 50)# Stel het obstakel op
obstakel = pygame. Recht(200, 200, 50, 50)# Stel de spellus in
terwijlWAAR:
lettertype = pygame.lettertype. Lettertype(Geen, 36)
# Gebeurtenissen afhandelen
voor evenement in pygame.event.get():
als event.type == pygame. ONTSLAG NEMEN:
pygame.quit()
sys.exit()
als event.type == pygame. TOETS NEER:
als event.key == pygame. K_LEFT:
speler.x -= 10
elif event.key == pygame. K_RIGHT:
speler.x += 10
# Werk de spelstatus bij
als player.colliderect (obstakel):
score += score_increment
# Teken het spel
scherm.vullen((0, 0, 0))
pygame.draw.rect (scherm, (255, 0, 0), speler)
pygame.draw.rect (scherm, (0, 255, 0), obstakel)
# Teken de score naar het scherm
score_text = font.render(f'Score: {scoren}', WAAR, (255, 255, 255))
scherm.blit (score_text, (10, 10))
# Werk de weergave bij
pygame.display.flip()
# Beperk de framesnelheid
klok.vinkje(60)
Deze code creëert een venster met een grootte van 750x450 pixels, een personage van een speler en een obstakel. Het gebruikt een spellus om gebeurtenissen af te handelen, de status bij te werken en het spel naar het scherm te tekenen. Het bevat ook een scoresysteem dat de score met tien punten verhoogt elke keer dat het personage van de speler wordt gespeeld botst met het obstakel, en een lettertype-object en tekstweergavecode om de score op het scherm weer te geven.
In de sectie voor het afhandelen van gebeurtenissen bevat de code ook functionaliteit om het personage van de speler naar links en rechts te verplaatsen met behulp van de pijltjestoetsen.
De gamelus bevat code om het scherm bij te werken en de framesnelheid te beperken tot 60 FPS, zodat de game soepel verloopt.
Over het algemeen biedt deze code een basisvoorbeeld van hoe gamescores in Pygame kunnen worden weergegeven en bijgewerkt, en kan verder worden aangepast en uitgebreid om complexere en boeiendere games te maken.
Maak verschillende spellen met behulp van Pygame
Pygame is een krachtige en gebruiksvriendelijke bibliotheek voor het maken van games in Python. Met zijn uitgebreide set functies en mogelijkheden kun je een breed scala aan games maken, van eenvoudige jumpers en platformgames tot complexere en meeslepende games.
Of je nu een beginner bent of een ervaren game-ontwikkelaar, Pygame is een uitstekende keuze voor het maken van boeiende en leuke games.