Tilfældige bevægelige objekter gør spil mere spændende og udfordrende. Lær, hvordan du inkorporerer det i dine Pygame-projekter.

Pygame, et populært Python-bibliotek til spiludvikling, giver dig mulighed for nemt at skabe spændende og interaktive spil. En måde at forbedre dine Pygame-kreationer på er ved at tilføje tilfældige bevægelige objekter. Disse objekter kan være forhindringer, fjender, power-ups eller noget, der tilføjer dynamik til din spilverden.

Opret et simpelt spil

Start med at opsætte et grundlæggende Pygame-vindue og tilføje et spillerobjekt sammen med nogle platforme. Du kan også implementere grundlæggende spillerbevægelser ved hjælp af piletasterne eller ved hjælp af berøringsindgange.

Koden brugt i denne artikel er tilgængelig i denne GitHub-depot og er gratis for dig at bruge under MIT-licensen.

Opret en ny fil med navnet simple-game.py og tilføje koden til dit grundlæggende spil.

Tilføj flere bevægelige objekter

Nu hvor du har et simpelt spil med et spillerobjekt og platforme, kan du tilføje flere tilfældige bevægelige objekter til spillet. Disse objekter vil bevæge sig vandret hen over skærmen med forskellige hastigheder.

instagram viewer

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 output:

Implementer tilfældig bevægelsesalgoritme

I øjeblikket bevæger dine tilfældige objekter sig kun i en lige vandret linje. For at gøre deres bevægelse mere uforudsigelig kan du tilføje en tilfældig bevægelsesalgoritme.

# 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 at bevæge sig mod afspilleren

For at tilføje mere kompleksitet til spillet kan du introducere nogle objekter, der bevæger sig mod spilleren. Du kan opnå dette ved at beregne vinklen mellem objektet og afspilleren og justere objektets position derefter.

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å kun objekter til at flytte sig, når spilleren går ind i omgivelserne

I stedet for at alle objekter bevæger sig fra starten, kan du tillade, at objekter først begynder at bevæge sig, når spilleren kommer ind i deres omgivelser.

# 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()

Kollisionsdetektion og interaktion

For at gøre spillet endnu mere engagerende kan du tilføje kollisionsdetektion mellem afspilleren og de bevægelige objekter. For eksempel kan du fjerne et objekt fra skærmen, når afspilleren 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()

Inklusiv yderligere funktioner

Tilføjelse af tilfældige bevægelige objekter kan tjene som grundlag for implementering af forskellige spændende funktioner i dit Pygame. Her er nogle yderligere ideer til at tage dit spil til næste niveau:

Scoring og progression

Tildel forskellige karakterer til objekter baseret på deres sværhedsgrad eller sjældenhed. Du kan oprette og vise et scoringssystem der belønner spillere for succesfuldt at navigere gennem bevægelige genstande eller samle specielle genstande.

Implementer en fremskridtsmåler, der øger spillets sværhedsgrad, efterhånden som spillerne opnår højere score, og holder dem engagerede og motiverede til at forbedre sig.

Power-ups og bonusser

Opret specielle objekter, der giver spilleren midlertidige fordele, når de indsamles. Disse power-ups kan omfatte øget hastighed, uovervindelighed eller endda evnen til at fryse eller ødelægge andre objekter midlertidigt.

Vær kreativ med effekterne af disse power-ups for at tilføje strategisk dybde til gameplayet.

Fjendtlig AI og adfærd

Design mere sofistikerede bevægelsesmønstre for fjendens objekter for at gøre dem mere udfordrende for spillere at undgå. Implementer simple AI-algoritmer for at få fjender til at forfølge spilleren intelligent eller bevæge sig i koordinerede mønstre.

Varierende fjendeadfærd vil holde spillerne på tæerne og forhindre spillet i at blive ensformigt.

Samleobjekter og belønninger

Spred samleobjekter over hele spilverdenen. Disse kan være mønter, ædelstene eller andre tematiske genstande. Når spilleren samler et bestemt antal af disse genstande, kan de låse op for nye niveauer, karakterer eller endda hemmelige funktioner i spillet.

Bedste praksis for tilføjelse af tilfældige objekter i bevægelse

Når du inkorporerer tilfældige bevægelige objekter i dit Pygame, vil følgende bedste praksis hjælpe dig med at skabe en velafbalanceret og poleret spiloplevelse:

Balanceringsbesvær

Hastigheden og bevægelsesmønstrene for tilfældige objekter i bevægelse bør afbalanceres omhyggeligt for at give en rimelig udfordring. Undgå at få objekter til at bevæge sig for hurtigt eller uregelmæssigt, da det kan frustrere spillere og få spillet til at føles uretfærdigt.

På den anden side kan alt for langsomt bevægende objekter gøre spillet for nemt og mindre engagerende.

Optimering for ydeevne

Hvis dit spil indeholder et stort antal tilfældige bevægelige objekter eller komplekse bevægelsesalgoritmer, kan du overveje at optimere koden for at forbedre ydeevnen. Brug effektive datastrukturer og algoritmer til at håndtere kollisioner og bevægelsesberegninger.

Minimer unødvendige beregninger for at sikre glat og responsivt gameplay, især på ældre eller mindre kraftfulde enheder.

Test og tilpasning

Test dit spil grundigt med forskellige scenarier for at sikre, at de tilfældige bevægelige objekter interagerer korrekt med andre spilelementer. Test for kollisioner, interaktioner med spilleren og enhver speciel bevægelsesadfærd.

Juster objekternes hastighed, adfærd og mønstre baseret på playtest-feedback for at opnå den optimale spiloplevelse.

Tilfældighed med kontrol

Selvom udtrykket "tilfældig" bruges om disse bevægelige objekter, er det måske ikke altid ønskeligt at have fuldstændig tilfældighed. Overvej at inkorporere kontrolleret tilfældighed, hvor visse bevægelser eller mønstre er defineret inden for en række eller et sæt af muligheder.

Kontrolleret tilfældighed sikrer, at spillet forbliver udfordrende og underholdende uden at blive for kaotisk.

Gør spil mere engagerende med tilfældige objekter i bevægelse

Tilfældige bevægelige objekter tilføjer et element af overraskelse og uforudsigelighed til dit spil, hvilket gør det mere dynamisk og engagerende. De holder spillere på tæerne og kræver hurtige reflekser og strategisk tænkning. Derudover sikrer de mange forskellige bevægelser og interaktioner med disse objekter, at ikke to spiloplevelser er ens.