Losowo poruszające się obiekty sprawiają, że gry są bardziej ekscytujące i wymagające. Dowiedz się, jak włączyć go do swoich projektów Pygame.

Pygame, popularna biblioteka Pythona do tworzenia gier, pozwala z łatwością tworzyć ekscytujące i interaktywne gry. Jednym ze sposobów na ulepszenie twoich kreacji Pygame jest dodanie losowych ruchomych obiektów. Tymi obiektami mogą być przeszkody, wrogowie, ulepszenia lub cokolwiek, co dodaje dynamizmu Twojemu światu gry.

Stwórz prostą grę

Zacznij od skonfigurowania podstawowego okna Pygame i dodania obiektu gracza wraz z niektórymi platformami. Możesz także zaimplementować podstawowy ruch gracza za pomocą klawiszy strzałek lub za pomocą wejść dotykowych.

Kod użyty w tym artykule jest dostępny w this Repozytorium GitHub i jest darmowy do użytku na licencji MIT.

Utwórz nowy plik o nazwie prosta gra.py i dodaj kod swojej podstawowej gry.

Dodaj wiele ruchomych obiektów

Teraz, gdy masz już prostą grę z obiektem gracza i platformami, dodaj do niej wiele losowo poruszających się obiektów. Obiekty te będą poruszać się poziomo po ekranie z różnymi prędkościami.

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

Poniżej znajduje się wyjście:

Zaimplementuj algorytm ruchu losowego

Obecnie losowo poruszające się obiekty poruszają się tylko po linii prostej poziomej. Aby ich ruch był bardziej nieprzewidywalny, możesz dodać algorytm ruchu losowego.

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

Spraw, aby obiekty poruszały się w kierunku gracza

Aby jeszcze bardziej skomplikować grę, możesz wprowadzić kilka obiektów, które poruszają się w kierunku gracza. Możesz to osiągnąć, obliczając kąt między obiektem a graczem i odpowiednio dostosowując położenie obiektu.

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

Sprawiaj, że obiekty się poruszają tylko wtedy, gdy gracz wejdzie w otoczenie

Zamiast sprawiać, by wszystkie obiekty poruszały się od samego początku, możesz zezwolić na poruszanie się obiektów dopiero wtedy, gdy gracz wejdzie w ich otoczenie.

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

Wykrywanie kolizji i interakcja

Aby uczynić grę jeszcze bardziej wciągającą, możesz dodaj wykrywanie kolizji między graczem a poruszającymi się obiektami. Na przykład możesz usunąć obiekt z ekranu, gdy gracz się z nim zderzy.

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

W tym dodatkowe funkcje

Dodawanie losowo poruszających się obiektów może służyć jako podstawa do implementacji różnych ekscytujących funkcji w twojej grze Pygame. Oto kilka dodatkowych pomysłów, które przeniosą Twoją grę na wyższy poziom:

Punktacja i postęp

Przypisuj różne oceny obiektom na podstawie ich poziomu trudności lub rzadkości. Możesz tworzyć i wyświetlić system punktacji który nagradza graczy za pomyślne poruszanie się po poruszających się obiektach lub zbieranie specjalnych przedmiotów.

Zaimplementuj narzędzie do śledzenia postępów, które zwiększa trudność gry, gdy gracze osiągają wyższe wyniki, utrzymując ich zaangażowanie i motywację do poprawy.

Wzmocnienia i bonusy

Twórz specjalne obiekty, które po zebraniu zapewniają graczowi tymczasowe korzyści. Te ulepszenia mogą obejmować zwiększoną prędkość, niezwyciężoność, a nawet zdolność do tymczasowego zamrażania lub niszczenia innych obiektów.

Bądź kreatywny, korzystając z efektów tych ulepszeń, aby nadać rozgrywce strategiczną głębię.

Sztuczna inteligencja i zachowanie wroga

Zaprojektuj bardziej wyrafinowane wzorce ruchu dla wrogich obiektów, aby utrudnić graczom ich unikanie. Zaimplementuj proste algorytmy sztucznej inteligencji, aby wrogowie inteligentnie ścigali gracza lub poruszali się w skoordynowanych wzorach.

Zróżnicowane zachowania wrogów sprawią, że gracze nie będą się nudzić, a gra nie stanie się monotonna.

Przedmioty kolekcjonerskie i nagrody

Rozrzucaj przedmioty kolekcjonerskie po całym świecie gry. Mogą to być monety, klejnoty lub inne przedmioty tematyczne. Kiedy gracz zbierze określoną liczbę tych przedmiotów, może odblokować nowe poziomy, postacie, a nawet tajne funkcje w grze.

Najlepsze praktyki dodawania losowo poruszających się obiektów

Podczas włączania losowo poruszających się obiektów do swojej gry Pygame, przestrzeganie tych najlepszych praktyk pomoże ci stworzyć dobrze zbalansowaną i dopracowaną rozgrywkę:

Trudność równoważenia

Wzorce prędkości i ruchu losowo poruszających się obiektów powinny być starannie wyważone, aby zapewnić uczciwe wyzwanie. Unikaj zbyt szybkiego lub chaotycznego poruszania się obiektów, ponieważ może to frustrować graczy i sprawiać, że gra wydaje się niesprawiedliwa.

Z drugiej strony zbyt wolno poruszające się obiekty mogą sprawić, że gra będzie zbyt łatwa i mniej wciągająca.

Optymalizacja pod kątem wydajności

Jeśli Twoja gra zawiera dużą liczbę losowo poruszających się obiektów lub złożone algorytmy ruchu, rozważ optymalizację kodu w celu poprawy wydajności. Używaj wydajnych struktur danych i algorytmów do obsługi kolizji i obliczeń ruchu.

Zminimalizuj niepotrzebne obliczenia, aby zapewnić płynną i responsywną rozgrywkę, zwłaszcza na starszych lub mniej wydajnych urządzeniach.

Testowanie i poprawianie

Dokładnie przetestuj swoją grę w różnych scenariuszach, aby upewnić się, że przypadkowo poruszające się obiekty poprawnie współdziałają z innymi elementami gry. Testuj kolizje, interakcje z graczem i wszelkie specjalne zachowania ruchowe.

Dostosuj prędkość, zachowanie i wzory obiektów na podstawie opinii z testów gry, aby uzyskać optymalne wrażenia z gry.

Losowość z kontrolą

Chociaż termin „losowy” jest używany w odniesieniu do tych poruszających się obiektów, pełna losowość może nie zawsze być pożądana. Rozważ włączenie kontrolowanej losowości, w której pewne ruchy lub wzorce są zdefiniowane w ramach zakresu lub zestawu możliwości.

Kontrolowana losowość zapewnia, że ​​gra pozostaje wymagająca i przyjemna, nie stając się zbyt chaotyczna.

Zwiększanie zaangażowania gier dzięki losowo poruszającym się obiektom

Losowo poruszające się obiekty dodają grze element zaskoczenia i nieprzewidywalności, czyniąc ją bardziej dynamiczną i wciągającą. Trzymają graczy w napięciu, wymagając szybkiego refleksu i strategicznego myślenia. Ponadto różnorodność ruchów i interakcji z tymi obiektami gwarantuje, że żadne dwie gry nie będą takie same.