Slumpmässiga rörliga föremål gör spel mer spännande och utmanande. Lär dig hur du integrerar det i dina Pygame-projekt.

Pygame, ett populärt Python-bibliotek för spelutveckling, låter dig skapa spännande och interaktiva spel med lätthet. Ett sätt att förbättra dina Pygame-skapelser är att lägga till slumpmässiga rörliga objekt. Dessa objekt kan vara hinder, fiender, power-ups eller vad som helst som tillför dynamik till din spelvärld.

Skapa ett enkelt spel

Börja med att sätta upp ett grundläggande Pygame-fönster och lägga till ett spelarobjekt tillsammans med vissa plattformar. Du kan också implementera grundläggande spelarrörelser med hjälp av piltangenterna eller med pekingångar.

Koden som används i den här artikeln är tillgänglig i denna GitHub-förråd och är gratis för dig att använda under MIT-licensen.

Skapa en ny fil med namnet simple-game.py och lägg till koden för ditt grundläggande spel.

Lägg till flera rörliga objekt

Nu när du har ett enkelt spel med ett spelarobjekt och plattformar, lägg till flera slumpmässiga rörliga objekt till spelet. Dessa objekt kommer att röra sig horisontellt över skärmen med olika hastigheter.

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

Nedan är utgången:

Implementera slumpmässig rörelsealgoritm

För närvarande rör sig dina slumpmässigt rörliga objekt endast i en rak horisontell linje. För att göra deras rörelse mer oförutsägbar kan du lägga till en slumpmässig rörelsealgoritm.

# 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å objekt att flytta mot spelaren

För att lägga till mer komplexitet till spelet kan du introducera några objekt som rör sig mot spelaren. Du kan uppnå detta genom att beräkna vinkeln mellan objektet och spelaren och justera objektets position därefter.

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å objekt att flytta endast när spelaren går in i omgivningen

Istället för att alla föremål rör sig från början kan du tillåta föremål att börja röra sig först när spelaren går in i sin omgivning.

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

Kollisionsdetektering och interaktion

För att göra spelet ännu mer engagerande kan du lägg till kollisionsdetektering mellan spelaren och de rörliga föremålen. Du kan till exempel ta bort ett föremål från skärmen när spelaren kolliderar 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()

Inklusive ytterligare funktioner

Att lägga till slumpmässiga rörliga objekt kan fungera som en grund för att implementera olika spännande funktioner i ditt Pygame. Här är några ytterligare idéer för att ta ditt spel till nästa nivå:

Poängsättning och progression

Tilldela olika poäng till objekt baserat på deras svårighetsgrad eller sällsynthet. Du kan skapa och visa ett poängsystem som belönar spelare för att de framgångsrikt navigerar genom rörliga föremål eller samlar in speciella föremål.

Implementera en framstegsmätare som ökar spelets svårighetsgrad när spelare uppnår högre poäng, vilket håller dem engagerade och motiverade att förbättras.

Power-ups och bonusar

Skapa speciella objekt som ger spelaren tillfälliga fördelar när de samlas in. Dessa power-ups kan innefatta ökad hastighet, oövervinnerlighet eller till och med möjligheten att frysa eller förstöra andra föremål tillfälligt.

Var kreativ med effekterna av dessa power-ups för att lägga till strategiskt djup till spelet.

Fiendens AI och beteende

Designa mer sofistikerade rörelsemönster för fiendens föremål för att göra dem mer utmanande för spelare att undvika. Implementera enkla AI-algoritmer för att få fiender att förfölja spelaren intelligent eller röra sig i koordinerade mönster.

Varierande fiendens beteenden kommer att hålla spelarna på tårna och förhindra att spelet blir monotont.

Samlarföremål och belöningar

Sprid ut samlarobjekt över hela spelvärlden. Dessa kan vara mynt, ädelstenar eller andra tematiska föremål. När spelaren samlar ett visst antal av dessa föremål kan de låsa upp nya nivåer, karaktärer eller till och med hemliga funktioner i spelet.

Bästa metoder för att lägga till slumpmässiga rörliga objekt

När du införlivar slumpmässiga rörliga föremål i ditt Pygame, kommer du att följa dessa bästa praxis hjälpa dig att skapa en välbalanserad och polerad spelupplevelse:

Svårighet att balansera

Hastigheten och rörelsemönstren för slumpmässigt rörliga föremål bör balanseras noggrant för att ge en rättvis utmaning. Undvik att få föremål att röra sig för snabbt eller oregelbundet, eftersom det kan frustrera spelare och få spelet att kännas orättvist.

Å andra sidan kan alltför långsamt rörliga föremål göra spelet för enkelt och mindre engagerande.

Optimering för prestanda

Om ditt spel innehåller ett stort antal slumpmässiga rörliga objekt eller komplexa rörelsealgoritmer, överväg att optimera koden för att förbättra prestandan. Använd effektiva datastrukturer och algoritmer för att hantera kollisioner och rörelseberäkningar.

Minimera onödiga beräkningar för att säkerställa smidigt och lyhört spel, särskilt på äldre eller mindre kraftfulla enheter.

Testning och justering

Testa ditt spel grundligt med olika scenarier för att säkerställa att de slumpmässiga rörliga föremålen interagerar korrekt med andra spelelement. Testa för kollisioner, interaktioner med spelaren och eventuella speciella rörelsebeteenden.

Justera objektens hastighet, beteende och mönster baserat på speltestningsfeedback för att uppnå den optimala spelupplevelsen.

Slumpmässighet med kontroll

Även om termen "slumpmässigt" används för dessa rörliga föremål, kanske det inte alltid är önskvärt att ha fullständig slumpmässighet. Överväg att införliva kontrollerad slumpmässighet, där vissa rörelser eller mönster definieras inom ett område eller en uppsättning möjligheter.

Kontrollerad slumpmässighet säkerställer att spelet förblir utmanande och roligt utan att bli för kaotiskt.

Gör spel mer engagerande med slumpmässiga rörliga objekt

Slumpmässiga rörliga föremål lägger till ett element av överraskning och oförutsägbarhet till ditt spel, vilket gör det mer dynamiskt och engagerande. De håller spelare på tårna, kräver snabba reflexer och strategiskt tänkande. Dessutom säkerställer mångfalden av rörelser och interaktioner med dessa objekt att ingen spelupplevelse är den andra lik.