Tilfeldige bevegelige objekter gjør spill mer spennende og utfordrende. Lær hvordan du integrerer det i Pygame-prosjektene dine.

Pygame, et populært Python-bibliotek for spillutvikling, lar deg lage spennende og interaktive spill med letthet. En måte å forbedre Pygame-kreasjonene dine på er ved å legge til tilfeldige bevegelige objekter. Disse objektene kan være hindringer, fiender, power-ups eller noe som gir dynamikk til spillverdenen din.

Lag et enkelt spill

Start med å sette opp et grunnleggende Pygame-vindu og legg til et spillerobjekt sammen med noen plattformer. Du kan også implementere grunnleggende spillerbevegelser ved å bruke piltastene eller ved hjelp av berøringsinnganger.

Koden som brukes i denne artikkelen er tilgjengelig i denne GitHub-depot og er gratis for deg å bruke under MIT-lisensen.

Opprett en ny fil med navnet simple-game.py og legg til koden for det grunnleggende spillet ditt.

Legg til flere bevegelige objekter

Nå som du har et enkelt spill med et spillerobjekt og plattformer, kan du legge til flere tilfeldige bevegelige objekter i spillet. Disse objektene vil bevege seg horisontalt over skjermen med forskjellige hastigheter.

object_width, object_height = 30, 30
object_speed_range = (2, 7)
objects = []

defcreate_random_object():
return {
'x': random.randint(0, screen_width - object_width),
'y': random.randint(0, screen_height - object_height),
'speed': random.randint(*object_speed_range)
}

for _ in range(5):
objects.append(create_random_object())

defdraw_object(obj):
obj_dim = (obj['x'], obj['y'], object_width, object_height)
pygame.draw.rect(screen, WHITE, obj_dim)

# Game loop
while running:
screen.fill((0, 0, 0))

#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Nedenfor er utgangen:

Implementer tilfeldig bevegelsesalgoritme

For øyeblikket beveger de tilfeldig bevegelige objektene dine bare i en rett horisontal linje. For å gjøre bevegelsen deres mer uforutsigbar, kan du legge til en tilfeldig bevegelsesalgoritme.

# Random Movement Algorithm
defupdate_random_movement(obj):
# Change the direction randomly
if random.random() < 0.01:
obj['speed'] = -obj['speed']

# Game loop
while running:
#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Få objekter til å bevege seg mot spilleren

For å legge til mer kompleksitet til spillet, kan du introdusere noen objekter som beveger seg mot spilleren. Du kan oppnå dette ved å beregne vinkelen mellom objektet og spilleren og justere objektets posisjon deretter.

import math

# Objects Moving Towards Player
defmove_towards_player(obj):
player_center_x = player_x + player_width // 2
player_center_y = player_y + player_height // 2
object_center_x = obj['x'] + object_width // 2
object_center_y = obj['y'] + object_height // 2

angle1 = player_center_y - object_center_y
angle2 = player_center_x - object_center_x

angle = math.atan2(angle1, angle2)
obj['x'] += obj['speed'] * math.cos(angle)
obj['y'] += obj['speed'] * math.sin(angle)

# Game loop
while running:
#... (previous code)

for obj in objects:
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

move_towards_player(obj)
draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Få objekter til å bevege seg bare når spilleren går inn i omgivelser

I stedet for å ha alle objekter i bevegelse fra starten, kan du la objekter begynne å bevege seg bare når spilleren kommer inn i omgivelsene.

# Objects Start to Move When Player Enters Surroundings
surrounding_distance = 150

defshould_start_moving(obj):
surrounded1 = abs(obj['x'] - player_x) < surrounding_distance
surrounded2 = abs(obj['y'] - player_y) < surrounding_distance
return surrounded1 or surrounded2

# Game loop
while running:
#... (previous code)

for obj in objects:
if should_start_moving(obj):
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
move_towards_player(obj)

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Kollisjonsdeteksjon og interaksjon

For å gjøre spillet enda mer engasjerende kan du legg til kollisjonsdeteksjon mellom spilleren og de bevegelige objektene. Du kan for eksempel fjerne et objekt fra skjermen når spilleren kolliderer med det.

# Collision Detection and Interaction
defis_collision(obj):

condition1 = player_x + player_width > obj['x']
condition2 = player_x < obj['x'] + object_width
condition3 = player_y + player_height > obj['y']
condition4 = player_y < obj['y'] + object_height
return ( condition1 and condition2 and condition3 and condition4)

# Game loop
while running:
#... (previous code)

for obj in objects:
if should_start_moving(obj):
obj['x'] += obj['speed']
if obj['x'] > screen_width:
obj['x'] = -object_width

update_random_movement(obj)
move_towards_player(obj)

if is_collision(obj):
objects.remove(obj)

draw_object(obj)

pygame.display.update()
clock.tick(60)

pygame.quit()

Inkludert tilleggsfunksjoner

Å legge til tilfeldige bevegelige objekter kan tjene som grunnlag for å implementere ulike spennende funksjoner i Pygame. Her er noen flere ideer for å ta spillet ditt til neste nivå:

Scoring og progresjon

Tildel ulike poengsummer til objekter basert på deres vanskelighetsgrad eller sjeldenhet. Du kan lage og vise et poengsystem som belønner spillere for å lykkes med å navigere gjennom objekter i bevegelse eller samle spesielle gjenstander.

Implementer en fremdriftsmåler som øker spillets vanskeligheter ettersom spillere oppnår høyere poengsum, og holder dem engasjert og motivert til å forbedre seg.

Power-ups og bonuser

Lag spesielle objekter som gir spilleren midlertidige fordeler når de samles inn. Disse power-ups kan inkludere økt hastighet, uovervinnelighet, eller til og med muligheten til å fryse eller ødelegge andre gjenstander midlertidig.

Vær kreativ med effekten av disse power-ups for å legge til strategisk dybde til spillingen.

Enemy AI og Behavior

Design mer sofistikerte bevegelsesmønstre for fiendtlige objekter for å gjøre dem mer utfordrende for spillere å unngå. Implementer enkle AI-algoritmer for å få fiender til å forfølge spilleren intelligent eller bevege seg i koordinerte mønstre.

Varierende fiendens oppførsel vil holde spillerne på tå hev og forhindre at spillet blir monotont.

Samleobjekter og belønninger

Spred samleobjekter over hele spillverdenen. Disse kan være mynter, edelstener eller andre tematiske gjenstander. Når spilleren samler et visst antall av disse gjenstandene, kan de låse opp nye nivåer, karakterer eller til og med hemmelige funksjoner i spillet.

Beste praksis for å legge til tilfeldige bevegelige objekter

Når du inkorporerer tilfeldige bevegelige objekter i Pygame, vil følgende beste praksis hjelpe deg med å skape en velbalansert og polert spillopplevelse:

Vanskeligheter med å balansere

Hastigheten og bevegelsesmønstrene til tilfeldig bevegelige objekter bør balanseres nøye for å gi en rettferdig utfordring. Unngå å få objekter til å bevege seg for fort eller uregelmessig, da det kan frustrere spillere og få spillet til å føles urettferdig.

På den annen side kan altfor sakte bevegelige objekter gjøre spillet for enkelt og mindre engasjerende.

Optimalisering for ytelse

Hvis spillet ditt inneholder et stort antall tilfeldige bevegelige objekter eller komplekse bevegelsesalgoritmer, bør du vurdere å optimalisere koden for å forbedre ytelsen. Bruk effektive datastrukturer og algoritmer for å håndtere kollisjoner og bevegelsesberegninger.

Minimer unødvendige beregninger for å sikre jevn og responsiv spilling, spesielt på eldre eller mindre kraftige enheter.

Testing og tilpasning

Test spillet ditt grundig med ulike scenarier for å sikre at de tilfeldige bevegelige objektene samhandler riktig med andre spillelementer. Test for kollisjoner, interaksjoner med spilleren og eventuell spesiell bevegelsesatferd.

Juster hastigheten, oppførselen og mønstrene til objektene basert på playtesting-tilbakemeldinger for å oppnå den optimale spillopplevelsen.

Tilfeldighet med kontroll

Selv om begrepet "tilfeldig" brukes for disse bevegelige objektene, er det kanskje ikke alltid ønskelig å ha fullstendig tilfeldighet. Vurder å innlemme kontrollert tilfeldighet, der visse bevegelser eller mønstre er definert innenfor et utvalg eller sett med muligheter.

Kontrollert tilfeldighet sikrer at spillet forblir utfordrende og morsomt uten å bli for kaotisk.

Gjør spill mer engasjerende med tilfeldige bevegelige objekter

Tilfeldige bevegelige objekter tilfører et element av overraskelse og uforutsigbarhet til spillet ditt, noe som gjør det mer dynamisk og engasjerende. De holder spillerne på tærne, krever raske reflekser og strategisk tenkning. I tillegg sikrer variasjonen av bevegelser og interaksjoner med disse objektene at ingen to spillopplevelser er like.