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.
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_widthdraw_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_widthupdate_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 // 2angle1 = player_center_y - object_center_y
angle2 = player_center_x - object_center_xangle = 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_widthmove_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 = 150defshould_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_widthupdate_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_widthupdate_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.