Juhuslikult liikuvad objektid muudavad mängud põnevamaks ja väljakutsuvamaks. Siit saate teada, kuidas seda oma Pygame'i projektidesse lisada.

Pygame, populaarne Pythoni teek mängude arendamiseks, võimaldab teil hõlpsalt luua põnevaid ja interaktiivseid mänge. Üks viis Pygame'i loomingu täiustamiseks on juhuslike liikuvate objektide lisamine. Need objektid võivad olla takistused, vaenlased, jõuallikad või kõik, mis lisab teie mängumaailmale dünaamilisust.

Looge lihtne mäng

Alustuseks seadistage Pygame'i põhiaken ja lisage mängijaobjekt koos mõne platvormiga. Mängija põhiliigutusi saate rakendada ka nooleklahvide või abil kasutades puutetundlikke sisendeid.

Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.

Looge uus fail nimega lihtne-mäng.py ja lisage oma põhimängu kood.

Lisage mitu liikuvat objekti

Nüüd, kui teil on lihtne mäng mängija objekti ja platvormidega, lisage mängu mitu juhuslikku liikuvat objekti. Need objektid liiguvad horisontaalselt üle ekraani erineva kiirusega.

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

Allpool on väljund:

Rakendage juhusliku liikumise algoritmi

Praegu liiguvad teie juhuslikud liikuvad objektid ainult sirgel horisontaalsel joonel. Nende liikumise ettearvamatumaks muutmiseks saate lisada juhusliku liikumise algoritmi.

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

Pange objektid mängija poole liikuma

Mängu keerukamaks muutmiseks võite tutvustada mõnda objekti, mis liiguvad mängija poole. Seda saate saavutada, kui arvutate objekti ja mängija vahelise nurga ning kohandate selle järgi objekti asukohta.

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

Pange objektid liikuma ainult siis, kui mängija siseneb ümbrusesse

Selle asemel, et kõik objektid algusest peale liikuma hakkaksid, saate lubada objektidel liikuma hakata alles siis, kui mängija nende ümbrusesse siseneb.

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

Kokkupõrke tuvastamine ja interaktsioon

Mängu veelgi köitvamaks muutmiseks saate seda teha lisage mängija ja liikuvate objektide vahel kokkupõrketuvastus. Näiteks saate objekti ekraanilt eemaldada, kui mängija sellega kokku põrkub.

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

Kaasa arvatud lisafunktsioonid

Juhuslikult liikuvate objektide lisamine võib olla aluseks erinevate põnevate funktsioonide rakendamisele teie Pygame'is. Siin on mõned täiendavad ideed, et viia oma mäng järgmisele tasemele:

Hinded ja edenemine

Määrake objektidele erinevad hinded nende raskusastme või harulduse põhjal. Saate luua ja kuvada punktisüsteem mis premeerib mängijaid liikuvate objektide eduka navigeerimise või spetsiaalsete esemete kogumise eest.

Rakendage edenemise jälgijat, mis suurendab mängu raskusi, kuna mängijad saavutavad kõrgemaid punkte, hoides neid kaasatuna ja motiveerituna arenema.

Võimsused ja boonused

Looge spetsiaalseid objekte, mis annavad mängijale kogumisel ajutisi eeliseid. Need võimsused võivad hõlmata suurenenud kiirust, võitmatust või isegi võimalust ajutiselt külmutada või hävitada muid objekte.

Olge nende võimsuste mõjudega loominguline, et lisada mängule strateegiline sügavus.

Vaenlase tehisintellekt ja käitumine

Looge vaenlase objektide jaoks keerukamad liikumismustrid, et mängijatel oleks nende vältimine keerulisem. Rakendage lihtsaid AI-algoritme, et panna vaenlased mängijat arukalt jälitama või koordineeritud mustrite järgi liikuma.

Erinevad vaenlase käitumised hoiavad mängijaid oma varvastel ja takistavad mängu muutumist üksluiseks.

Kollektsionäärid ja preemiad

Hajuta kogutavad esemed mängumaailmas laiali. Need võivad olla mündid, kalliskivid või muud temaatilised esemed. Kui mängija kogub teatud arvu neid esemeid, saab ta avada mängu uusi tasemeid, tegelasi või isegi salajasi funktsioone.

Juhuslikult liikuvate objektide lisamise parimad tavad

Juhuslike liikuvate objektide lisamisel Pygame'i aitab nende parimate tavade järgimine luua tasakaalustatud ja viimistletud mängukogemuse.

Tasakaalustamise raskused

Juhuslikult liikuvate objektide kiirus ja liikumismustrid peaksid olema õiglase väljakutse pakkumiseks hoolikalt tasakaalustatud. Vältige objektide liiga kiiret või ebaühtlast liikumist, kuna see võib mängijaid frustreerida ja muuta mäng ebaausaks.

Teisest küljest võivad liiga aeglaselt liikuvad objektid muuta mängu liiga lihtsaks ja vähem kaasahaaravaks.

Toimivuse optimeerimine

Kui teie mäng sisaldab suurt hulka juhuslikult liikuvaid objekte või keerulisi liikumisalgoritme, kaaluge jõudluse parandamiseks koodi optimeerimist. Kasutage kokkupõrgete ja liikumisarvutuste käsitlemiseks tõhusaid andmestruktuure ja algoritme.

Vähendage tarbetuid arvutusi, et tagada sujuv ja reageeriv mängimine, eriti vanematel või vähem võimsatel seadmetel.

Testimine ja kohandamine

Testige oma mängu põhjalikult erinevate stsenaariumidega, et tagada juhuslike liikuvate objektide õige suhtlemine teiste mänguelementidega. Testige kokkupõrkeid, suhtlemist mängijaga ja mis tahes erilist liikumiskäitumist.

Optimaalse mängukogemuse saavutamiseks kohandage mängutestide tagasiside põhjal objektide kiirust, käitumist ja mustreid.

Juhuslikkus kontrolliga

Kuigi nende liikuvate objektide kohta kasutatakse terminit "juhuslik", ei pruugi täielik juhuslikkus olla alati soovitav. Kaaluge kontrollitud juhuslikkuse kaasamist, kus teatud liikumised või mustrid on määratletud teatud võimaluste piires.

Kontrollitud juhuslikkus tagab, et mäng jääb väljakutseks ja nauditavaks, muutumata liiga kaootiliseks.

Muutke mängud kaasahaaravamaks juhuslike liikuvate objektidega

Juhuslikult liikuvad objektid lisavad teie mängule üllatuse ja ettearvamatuse, muutes selle dünaamilisemaks ja kaasahaaravamaks. Nad hoiavad mängijaid oma varvastel, nõudes kiireid reflekse ja strateegilist mõtlemist. Lisaks tagab nende objektide liigutuste ja interaktsioonide mitmekesisus, et kaks mängukogemust pole ühesugused.