Geef je spelers iets om op te pikken naarmate ze verder komen in je spel.

Power-ups en verzamelobjecten zijn essentiële spelelementen die de gameplay-ervaring kunnen verbeteren en opwinding kunnen toevoegen aan arcadespellen. Ze bieden spelers extra vaardigheden, beloningen en uitdagingen. Met de arcadebibliotheek kun je in een mum van tijd boeiende games met power-ups en verzamelobjecten maken.

Maak een eenvoudig spel

Begin met een basisopstelling waarbij de speler kan in vier richtingen bewegen (links, rechts, omhoog en omlaag) met behulp van de toetsenbordinvoer. Voeg bovendien één vijandelijk object toe om interactie binnen de spelomgeving te bieden.

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.

Maak een nieuw bestand met de naam simpel-spel.py en voeg onderstaande code toe:

importeren arcade

blauw = arcade.kleur. BLAUW
rood = arcade.kleur. ROOD
zwart = arcade.kleur. ZWART
wit = arcade.kleur. WIT
geel = arcade.kleur. GEEL
groen = arcade.kleur. GROENTE
oranje = arcade.kleur. ORANJE

klasSpel(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
super().__init__(breedte, hoogte)
arcade.set_background_color (zwart)

self.player = speelhal. SpriteCirkel(20, blauw)
self.player.center_x = breedte // 2
self.player.center_y = hoogte // 2

zelf.vijand = arcade. SpriteSolidColor(20, 20, rood)
self.enemy.center_x = breedte // 4
self.enemy.center_y = hoogte // 4

defon_draw(zelf):
arcade.start_render()
self.player.draw()
zelf.vijand.trekking()

defupdate(zelf, delta_tijd):
doorgang

defon_key_press(zelf, sleutel, modifiers):
als sleutel == arcade.sleutel. LINKS:
self.player.center_x -= 10
elif sleutel == arcade.sleutel. RECHTS:
self.player.center_x += 10
elif sleutel == arcade.sleutel. OMHOOG:
self.player.center_y += 10
elif sleutel == arcade.sleutel. OMLAAG:
self.player.center_y -= 10

defvoornaamst():
spel = spel(800, 600)
speelhal.run()

als __naam__ == "__voornaamst__":
voornaamst()

Voer deze code uit en je hebt een basisspel met spelerbewegingen en een vijandelijk object.

Spelstatussen maken

Om power-ups en verzamelobjecten op te nemen, moet je spelstatussen zoals score en gezondheid vaststellen. Jij kan score beheren en gezondheid met behulp van een aparte variabele. Wijzig de code om deze functies op te nemen. De gezondheid van de speler neemt af wanneer deze in botsing komt met het vijandelijke object.

klasSpel(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
super().__init__(breedte, hoogte)

zelf.score = 0
zelf.gezondheid = 100

defon_draw(zelf):
speelhal.teken_tekst(f"Score: {zelfscore}", 10, 10, wit)
speelhal.teken_tekst(f"Gezondheid: {zelf.gezondheid}", 10, 30, wit)

defupdate(zelf, delta_tijd):
als arcade.check_for_collision (self.player, self.enemy):
zelf.gezondheid -= 10

als zelf.gezondheid <= 0:
zelf.game_over()

defspel is over(zelf):
# Voeg hier game-over-logica toe
doorgang

Nu neemt de gezondheid van de speler met 10 af wanneer hij in botsing komt met de vijand, en de score en gezondheidswaarden worden op het scherm weergegeven.

Verzamelobjecten toevoegen

Maak vervolgens verzamelobjecten die de score van de speler met 10 verhogen wanneer ze worden verzameld. Deze verzamelobjecten hebben verschillende vormen voor visuele variatie. Maak een nieuw bestand met de naam verzamelobjecten.py en voeg de code toe met de onderstaande update:

klasSpel(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
super().__init__(breedte, hoogte)

self.collectibles = arcade. SpriteLijst()

voor _ in bereik(5):
verzamelobject = arcade. SpriteSolidColor(20, 40, geel)
collectible.center_x = willekeurig.randint(0, breedte)
collectible.center_y = willekeurig.randint(0, hoogte)
self.collectibles.append (verzamelbaar)

defon_draw(zelf):
arcade.start_render()
self.player.draw()
zelf.vijand.trekking()
self.collectibles.draw()
speelhal.teken_tekst(f"Score: {zelfscore}", 10, 10, wit)
speelhal.teken_tekst(f"Gezondheid: {zelf.gezondheid}", 10, 30, wit)

defupdate(zelf, delta_tijd):
voor verzamelobject in self.collectibles:
als arcade.check_for_collision (self.player, verzamelobject):
zelfscore += 10
collectible.remove_from_sprite_lists()

Maak een lijst met verzamelobjecten met vijf exemplaren, elk weergegeven door een gele rechthoek. Wanneer de speler in botsing komt met een verzamelobject, wordt zijn score met 10 verhoogd en wordt het verzamelobject van de spritelijst verwijderd.

Power-ups toevoegen

Nu kun je power-ups aan je spel toevoegen. Wanneer de speler een power-up verzamelt, verschijnt er gedurende 10 seconden een schild om hem heen. Gedurende deze tijd, als de speler botst met de vijand, zullen ze de vijand vernietigen. Maak een nieuw bestand met de naam power-ups.py en voeg de code toe met de onderstaande update:

klasSpel(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
super().__init__(breedte, hoogte)

self.power_up = arcade. SpriteSolidColor(50, 20, groente)
self.power_up.center_x = willekeurig.randint(0, breedte)
self.power_up.center_y = willekeurig.randint(0, hoogte)

self.shield_active = Vals
self.shield_duration = 10
self.shield_timer = 0

defon_draw(zelf):
arcade.start_render()
self.player.draw()
zelf.vijand.trekking()
self.collectibles.draw()
zelf.power_up.draw()
speelhal.teken_tekst(f"Score: {zelfscore}", 10, 10, wit)
speelhal.teken_tekst(f"Gezondheid: {zelf.gezondheid}", 10, 30, wit)

defupdate(zelf, delta_tijd):
als arcade.check_for_collision (self.player, self.enemy):
alsniet zelf.schild_actief:
zelf.gezondheid -= 10
als zelf.gezondheid <= 0:
zelf.game_over()
anders:
self.enemy.remove_from_sprite_lists()

als zelf.schild_actief:
self.shield_timer += delta_time

als self.shield_timer >= self.shield_duration:
self.shield_active = Vals
self.shield_timer = 0

voor verzamelobject in self.collectibles:
als arcade.check_for_collision (self.player, verzamelobject):
zelfscore += 10
collectible.remove_from_sprite_lists()

als arcade.check_for_collision (self.player, self.power_up):
self.shield_active = WAAR
zelf.power_up.remove_from_sprite_lists()

Hieronder is de uitvoer:

Inclusief extra functies

Je kunt het power-ups- en verzamelsysteem verder verbeteren door extra functies toe te voegen. U kunt bijvoorbeeld een timer-power-up maken die de speeltijd verlengt wanneer deze wordt verzameld. Maak een nieuw bestand met de naam timer-power-up.py en voeg de code toe met de onderstaande update:

klasSpel(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
super().__init__(breedte, hoogte)
arcade.set_background_color (zwart)

self.player = speelhal. SpriteCirkel(20, blauw)
# ...

self.timer_power_up = arcade. SpriteSolidColor(40, 20, oranje)
zelf.timer_power_up.center_x = willekeurig.randint(0, breedte)
self.timer_power_up.center_y = willekeurig.randint(0, hoogte)

self.game_time = 60# Eerste speeltijd in seconden
self.timer_power_up_duration = 10

# ...

defupdate(zelf, delta_tijd):
# ...

als arcade.check_for_collision (self.player, self.timer_power_up):
self.game_time += self.timer_power_up_duration
self.timer_power_up.remove_from_sprite_lists()

# ...

defvoornaamst():
spel = spel(800, 600)
speelhal.run()

als __naam__ == "__voornaamst__":
voornaamst()

Best practices voor power-ups en verzamelobjecten

Power-ups en verzamelobjecten spelen een cruciale rol bij het verbeteren van de gameplay-ervaring van arcadespellen. Om ervoor te zorgen dat deze elementen leuk zijn en goed geïntegreerd in het spel, is het essentieel om enkele best practices te volgen:

Visuele helderheid en consistentie

Gebruik duidelijke en visueel aantrekkelijke sprites voor power-ups en verzamelobjecten om ze te onderscheiden van andere spelelementen. Zorg ervoor dat het uiterlijk van power-ups en verzamelobjecten overeenkomt met hun effecten en doel in het spel.

Zorg voor consistentie in ontwerp, kleurenschema's en grootte voor power-ups en verzamelobjecten gedurende het spel.

Evenwicht en uitdaging

Pas de zeldzaamheid en distributie van power-ups en verzamelobjecten aan om de spelers een gevoel van uitdaging en beloning te geven. Vermijd overweldigende spelers met te veel power-ups of verzamelobjecten, omdat dit de impact en opwinding van het vinden ervan kan verminderen.

Zorg voor een zorgvuldige balans tussen de effectiviteit en duur van power-ups om te voorkomen dat ze te overweldigend of te overweldigend worden.

Duidelijke indicatoren en feedback

Zorg voor duidelijke visuele en audio-indicatoren wanneer de speler een power-up of verzamelobject verzamelt. Geef tijdelijke visuele effecten weer, zoals animaties of deeltjes, om de activering van power-ups en hun duur aan te geven.

Uitdaging-beloning relatie

Zorg ervoor dat power-ups en verzamelobjecten de speler zinvolle beloningen opleveren, zoals hogere scores, extra vaardigheden of langere speeltijd. Stem de moeilijkheidsgraad van het verkrijgen van power-ups en verzamelobjecten af ​​op de voordelen die ze bieden. Meer uitdagende taken zouden meer waardevolle beloningen moeten opleveren.

Testen en balanceren

Test het spel uitgebreid om te zien hoe spelers omgaan met power-ups en verzamelobjecten. Gebruik feedback van spelers om de distributie, duur en effecten van power-ups en verzamelobjecten te verfijnen om een ​​evenwichtige en plezierige ervaring te creëren.

Door deze best practices te volgen, kun je een boeiend en uitgebalanceerd power-up- en verzamelsysteem creëren dat de gameplay-ervaring verbetert en spelers betrokken houdt bij je arcadespel.

Maak games leuker met power-ups en verzamelobjecten

Power-ups en verzamelobjecten voegen een extra laag spanning en betrokkenheid toe aan arcadespellen. Ze bieden spelers niet alleen nieuwe vaardigheden en beloningen, maar creëren ook interessante uitdagingen en strategische keuzes.

Door deze functies op te nemen met behulp van de Python Arcade-bibliotheek, kunt u uw games leuker maken en de algehele game-ervaring voor uw spelers verbeteren. Vergeet niet om te experimenteren, te herhalen en je creativiteit de vrije loop te laten om unieke en boeiende power-ups en verzamelobjecten te creëren die aansluiten bij het thema en de mechanica van je game.