Hier leest u hoe u niveaus aan uw spel kunt toevoegen om het boeiender en leuker te maken.
Niveaus zijn een essentieel aspect van de meeste videogames. Ze bieden structuur, uitdaging en afwisseling en kunnen de ervaring van de speler aanzienlijk verbeteren. PyGame, een populaire Python-bibliotheek voor game-ontwikkeling, biedt verschillende functies waarmee je eenvoudig verschillende niveaus kunt maken. Een goed ontworpen level kan de speler boeien, een gevoel van vooruitgang creëren en hem uiteindelijk belonen voor zijn inspanningen.
Niveaus plannen en ontwerpen
Voordat je levels maakt, is het essentieel om ze te plannen en te ontwerpen. Planningsniveaus helpen bij het creëren van een goed gestructureerd spel dat de spelers de juiste moeilijkheidsgraad biedt. Om niveaus te plannen, moet je rekening houden met verschillende factoren, zoals de mechanica van het spel, het verhaal en de algehele structuur van het spel.
Als je bijvoorbeeld een platformgame ontwerpt, moet je nadenken over de plaatsing van platforms, de vijanden en de obstakels. Je moet ook rekening houden met de bewegingen van de speler, zoals springen en rennen, en de niveaus dienovereenkomstig ontwerpen.
De code die in dit artikel wordt gebruikt, is hierin beschikbaar GitHub-opslagplaats en is gratis voor u om te gebruiken onder de MIT-licentie.
Twee eenvoudige niveaus maken
Controleer voordat u begint of u dat hebt gedaan pip op uw systeem geïnstalleerd. Gebruik deze opdracht om het pyspel bibliotheek:
pip installeer pygame
Maak nu twee eenvoudige niveaus met een platform en een speler. Hier is de code voor het eerste niveau:
importeren pyspel
pygame.init()
# Definieer constanten
SCREEN_WIDTH = 800
SCHERM_HOOGTE = 600
PLATFORM_WIDTH = 100
PLATFORM_HEIGHT = 20
SPELER_WIDTH = 50
SPELER_HEIGHT = 50
PLATFORM_COLOR = (255, 255, 255)
SPELER_COLOR = (255, 0, 0)# Maak het scherm
scherm = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))# Maak het platform
platform = pygame. Recht(350, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)# Maak de speler
speler = pygame. Recht(375, 450, PLAYER_WIDTH, PLAYER_HEIGHT)# Spellus
hardlopen = WAAR
terwijl rennen:
voor evenement in pygame.event.get():
als event.type == pygame. ONTSLAG NEMEN:
hardlopen = Vals
elif event.type == pygame. TOETS NEER:
als event.key == pygame. K_LEFT:
speler.move_ip(-10, 0)
elif event.key == pygame. K_RIGHT:
speler.move_ip(10, 0)# Vul het scherm met zwarte kleur
scherm.vullen((0, 0, 0))# Teken het platform
pygame.draw.rect (scherm, PLATFORM_COLOR, platform)# Teken de speler
pygame.draw.rect (scherm, PLAYER_COLOR, speler)# Werk het scherm bij
pygame.display.flip()
pygame.quit()
Creëer daarna het tweede niveau door simpelweg het platform en de positie van de speler te veranderen. Hier is de code voor het tweede niveau:
importeren pyspel
pygame.init()
# Definieer constanten
SCREEN_WIDTH = 800
SCHERM_HOOGTE = 600
PLATFORM_WIDTH = 150
PLATFORM_HEIGHT = 20
SPELER_WIDTH = 50
SPELER_HEIGHT = 50
PLATFORM_COLOR = (255, 255, 255)
SPELER_COLOR = (255, 0, 0)# Maak het scherm
scherm = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))# Maak het platform
platform = pygame. Recht(200, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)# Maak de speler
speler = pygame. Recht(225, 450, PLAYER_WIDTH, PLAYER_HEIGHT)# Spellus
hardlopen = WAAR
terwijl rennen:
voor evenement in pygame.event.get():
als event.type == pygame. ONTSLAG NEMEN:
hardlopen = Vals
elif event.type == pygame. TOETS NEER:
als event.key == pygame. K_LEFT:
speler.move_ip(-10, 0)
elif event.key == pygame. K_RIGHT:
speler.move_ip(10, 0)# Vul het scherm met zwarte kleur
scherm.vullen((0, 0, 0))# Teken het platform
pygame.draw.rect (scherm, PLATFORM_COLOR, platform)# Teken de speler
pygame.draw.rect (scherm, PLAYER_COLOR, speler)# Werk het scherm bij
pygame.display.flip()
pygame.quit()
Deze code is vergelijkbaar met het eerste niveau, maar het platform en de posities van de speler zijn gewijzigd.
Verschillende niveaus verbinden
Om verschillende niveaus met elkaar te verbinden, moet je de spellus aanpassen om tussen niveaus te schakelen wanneer de speler een niveau voltooit. U kunt dit doen door een variabele te maken om het huidige niveau bij te houden en voorwaardelijke verklaringen te gebruiken om tussen niveaus te schakelen. Je kan ook botsingen detecteren om te controleren als de speler het einde van een level heeft bereikt.
Hier is de gewijzigde spelloop:
huidig_niveau = 1
# Teken het platform en de speler op basis van het huidige niveau
als huidig_niveau == 1:
pygame.draw.rect (scherm, PLATFORM_COLOR, platform1)
pygame.draw.rect (scherm, PLAYER_COLOR, speler)
# Controleer of de speler het einde van het level heeft bereikt
als speler.colliderect (platform1) == Vals:
huidig_niveau = 2
elif huidig_niveau == 2:
pygame.draw.rect (scherm, PLATFORM_COLOR, platform2)
pygame.draw.rect (scherm, PLAYER_COLOR, speler)
# Controleer of de speler het einde van het level heeft bereikt
als speler.colliderect (platform2) == WAAR:
hardlopen = Vals
De spelgegevens delen tussen niveaus
Je moet de gamegegevens opslaan om deze tussen de niveaus te delen. Maak daarvoor een aparte Python-module om de spelgegevens op te slaan en importeer deze naar elk niveau.
Dit zijn de stappen:
- Maak een nieuwe Python-module met de naam game_data.py.
- Definieer een globale variabele in het game_data.py module om de positie van de speler op te slaan.
- Importeer in elk niveau de spel gegevens moduul.
- Gebruik de om de positie van de speler in elk niveau op te halen game_data.player_pos variabele in plaats van een nieuw spelerobject te maken.
- Wijzig de waarde van om de positie van de speler bij te werken game_data.player_pos in elke iteratie.
Hier is de aangepaste code om de positie van de speler tussen niveaus te delen.
In de game_data.py module, voeg de volgende code toe:
speler_pos = (0, 0)
Eerste level:
importeren pyspel
importeren spel gegevens# Maak de speler
speler = pygame. Rect (game_data.player_pos[0], game_data.player_pos[1], PLAYER_WIDTH, PLAYER_HEIGHT)# Spellus
hardlopen = WAAR
terwijl rennen:
# Teken de speler
pygame.draw.rect (scherm, PLAYER_COLOR, speler)
# Update de positie van de speler in de game_data-module
game_data.player_pos = (speler.x, speler.y)
Maak games boeiender met niveaus
Door verschillende niveaus aan je spel toe te voegen, kan het aantrekkelijker en leuker worden voor spelers. Door niveaus met elkaar te verbinden en gamegegevens te delen, kun je een naadloze en samenhangende game-ervaring creëren. Dit kan spelers helpen ondergedompeld te blijven in de gamewereld en de kans op terugtrekking of verveling verminderen.