Obiectele în mișcare aleatoare fac jocurile mai interesante și mai provocatoare. Aflați cum să îl încorporați în proiectele dvs. Pygame.

Pygame, o bibliotecă populară Python pentru dezvoltarea jocurilor, vă permite să creați jocuri interesante și interactive cu ușurință. O modalitate de a vă îmbunătăți creațiile Pygame este prin adăugarea de obiecte în mișcare aleatorie. Aceste obiecte pot fi obstacole, inamici, power-up-uri sau orice adaugă dinamism lumii tale de joc.

Creați un joc simplu

Începeți prin a configura o fereastră de bază Pygame și adăugați un obiect jucător împreună cu unele platforme. De asemenea, puteți implementa mișcarea de bază a jucătorului folosind tastele săgeți sau folosind intrări tactile.

Codul folosit în acest articol este disponibil în acest articol Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.

Creați un fișier nou numit joc simplu.py și adăugați codul pentru jocul dvs. de bază.

Adăugați mai multe obiecte în mișcare

Acum că aveți un joc simplu cu un obiect de jucător și platforme, adăugați mai multe obiecte în mișcare aleatoare în joc. Aceste obiecte se vor deplasa orizontal pe ecran la viteze diferite.

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

Mai jos este rezultatul:

Implementați algoritmul de mișcare aleatorie

În prezent, obiectele tale în mișcare aleatoare se mișcă numai pe o linie orizontală dreaptă. Pentru a face mișcarea lor mai imprevizibilă, puteți adăuga un algoritm de mișcare aleatorie.

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

Faceți obiectele să se miște spre jucător

Pentru a adăuga mai multă complexitate jocului, puteți introduce câteva obiecte care se deplasează spre jucător. Puteți realiza acest lucru calculând unghiul dintre obiect și jucător și ajustând poziția obiectului în consecință.

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

Faceți obiectele să se miște numai când jucătorul intră în împrejurimi

În loc să aveți toate obiectele în mișcare de la început, puteți permite obiectelor să înceapă să se miște numai atunci când jucătorul intră în împrejurimile lor.

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

Detectarea coliziunilor și interacțiunea

Pentru a face jocul și mai captivant, poți adăugați detectarea coliziunilor între jucător și obiectele în mișcare. De exemplu, puteți elimina un obiect de pe ecran atunci când jucătorul se ciocnește de el.

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

Inclusiv caracteristici suplimentare

Adăugarea de obiecte în mișcare aleatorie poate servi ca bază pentru implementarea diferitelor funcții interesante în Pygame. Iată câteva idei suplimentare pentru a vă duce jocul la următorul nivel:

Scor și progres

Atribuiți diferite scoruri obiectelor în funcție de nivelul de dificultate sau de raritate. Puteți crea și afișează un sistem de punctare care recompensează jucătorii pentru navigarea cu succes prin obiecte în mișcare sau pentru colectarea de obiecte speciale.

Implementați un instrument de urmărire a progresului care crește dificultatea jocului, pe măsură ce jucătorii obțin scoruri mai mari, menținându-i implicați și motivați să se îmbunătățească.

Power-up-uri și bonusuri

Creați obiecte speciale care oferă jucătorului avantaje temporare atunci când sunt colectate. Aceste power-up-uri ar putea include viteza crescută, invincibilitatea sau chiar capacitatea de a îngheța sau distruge temporar alte obiecte.

Fii creativ cu efectele acestor power-up-uri pentru a adăuga profunzime strategică jocului.

AI și comportamentul inamicului

Proiectați modele de mișcare mai sofisticate pentru obiectele inamice pentru a le face mai dificil de evitat pentru jucători. Implementați algoritmi simpli AI pentru a-i determina pe inamici să urmărească jucătorul în mod inteligent sau să se miște în modele coordonate.

Comportamentele variate ale inamicului îi vor ține pe jucători pe degete și vor împiedica jocul să devină monoton.

Obiecte de colecție și recompense

Imprăștiați obiecte de colecție în întreaga lume a jocului. Acestea pot fi monede, pietre prețioase sau orice alte obiecte tematice. Când jucătorul colectează un anumit număr din aceste articole, poate debloca noi niveluri, personaje sau chiar caracteristici secrete în joc.

Cele mai bune practici pentru adăugarea de obiecte în mișcare aleatorie

Când încorporați obiecte în mișcare aleatorie în Pygame, urmați aceste bune practici vă vor ajuta să creați o experiență de joc bine echilibrată și rafinată:

Dificultatea de echilibrare

Viteza și tiparele de mișcare ale obiectelor în mișcare aleatoare ar trebui să fie echilibrate cu atenție pentru a oferi o provocare corectă. Evitați să faceți obiectele să se miște prea repede sau neregulat, deoarece ar putea frustra jucătorii și poate face jocul să se simtă nedrept.

Pe de altă parte, obiectele care se mișcă prea lentă pot face jocul prea ușor și mai puțin captivant.

Optimizare pentru performanță

Dacă jocul dvs. include un număr mare de obiecte în mișcare aleatoare sau algoritmi de mișcare complecși, luați în considerare optimizarea codului pentru a îmbunătăți performanța. Utilizați structuri de date și algoritmi eficienți pentru a gestiona coliziunile și calculele de mișcare.

Minimizați calculele inutile pentru a asigura un joc fluid și receptiv, în special pe dispozitivele mai vechi sau mai puțin puternice.

Testare și ajustare

Testați-vă temeinic jocul cu diverse scenarii pentru a vă asigura că obiectele în mișcare aleatoare interacționează corect cu alte elemente ale jocului. Testați pentru coliziuni, interacțiuni cu jucătorul și orice comportament special de mișcare.

Reglați viteza, comportamentul și modelele obiectelor pe baza feedback-ului testării jocului pentru a obține o experiență optimă de joc.

Aleatorie cu control

Deși termenul „aleatoriu” este folosit pentru aceste obiecte în mișcare, a avea o aleatorie completă ar putea să nu fie întotdeauna de dorit. Luați în considerare încorporarea aleatoriei controlate, în cazul în care anumite mișcări sau modele sunt definite într-un interval sau un set de posibilități.

Aleatoritatea controlată asigură că jocul rămâne provocator și plăcut, fără a deveni prea haotic.

Faceți jocurile mai atractive cu obiecte în mișcare aleatorie

Obiectele în mișcare aleatoare adaugă un element de surpriză și imprevizibilitate jocului tău, făcându-l mai dinamic și mai captivant. Ei țin jucătorii cu atenție, necesitând reflexe rapide și gândire strategică. În plus, varietatea de mișcări și interacțiuni cu aceste obiecte asigură că nu există două experiențe de joc identice.