Uatrakcyjnij swoje projekty Pygame, integrując ulepszenia i przedmioty kolekcjonerskie.

Ulepszenia i przedmioty kolekcjonerskie odgrywają kluczową rolę w ulepszaniu rozgrywki i czynieniu gier bardziej wciągającymi. Dodając te elementy do swoich projektów Pygame, możesz tworzyć unikalne wyzwania, zwiększać motywację graczy i zapewniać możliwości podejmowania strategicznych decyzji.

Na szczęście Pygame zapewnia elastyczne sposoby wdrażania ulepszeń i elementów kolekcjonerskich ze względną łatwością.

Stwórz prostą grę

Zanim zaczniesz, upewnij się, że masz pip zainstalowany w twoim systemie. Użyj tego polecenia, aby zainstalować pygame biblioteka:

pip zainstaluj pygame

Zacznij od przygotowania prostej gry, w której gracz może poruszać się w lewo iw prawo, unikając wroga.

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

Będzie to służyć jako podstawa do dodawania ulepszeń i przedmiotów kolekcjonerskich. Oto przykładowy fragment kodu:

import
instagram viewer
pygame
import losowy

# Zainicjuj grę Pygame
pygame.init()

# Skonfiguruj okno gry
szerokość_okna = 800
wysokość_okna = 600
okno = pygame.display.set_mode((szerokość_okna, wysokość_okna))
pygame.display.set_caption("Moja gra")

# Skonfiguruj odtwarzacz
szerokość_gracza = 50
wysokość_gracza = 50
gracz_x = (szerokość_okna - szerokość_gracza) // 2
gracz_y = wysokość_okna - wysokość_gracza - 10
prędkość_gracza = 5

# Ustaw wroga
szerokość_wroga = 50
wysokość_wroga = 50
wróg_x = losowo.randint(0, szerokość_okna - szerokość_wroga)
wróg_y = 50
prędkość_wroga = 3

# Pętla gry
bieganie = PRAWDA
chwila działanie:
Do wydarzenie W pygame.event.get():
Jeśli event.type == pygame. ZREZYGNOWAĆ:
bieganie = FAŁSZ

# Ruch gracza
klucze = pygame.key.get_pressed()
Jeśli klucze [gra. K_LEFT] I gracz_x > 0:
gracz_x -= prędkość_gracza
Jeśli klucze [gra. K_PRAWO] I gracz_x < szerokość_okna - gracz_szerokość:
gracz_x += prędkość_gracza

# Ruch wroga
wróg_y += prędkość_wroga
Jeśli wróg_y > wysokość_okna:
wróg_x = losowo.randint(0, szerokość_okna - szerokość_wroga)
wróg_y = 0

# Wykrywanie kolizji
Jeśli (gracz_x < wróg_x + szerokość_wroga) I \
(gracz_x + szerokość_gracza > wróg_x) I \
(gracz_y < wróg_y + wzrost_wroga) I \
(gracz_y + wzrost_gracza > wróg_y):
bieganie = FAŁSZ

# Wyczyść ekran
okno.wypełnij((0, 0, 0))

pozycja_gracza = (gracz_x, gracz_y,
szerokość_gracza, wysokość_gracza)
pozycja_wroga = (wróg_x, wróg_y,
szerokość_wroga, wysokość_wroga)

# Remis gracza
pygame.draw.rect (okno, (255, 255, 255), pozycja_gracza)

# Narysuj wroga
pygame.draw.rect (okno, (255, 0, 0), pozycja_wroga)

# Zaktualizuj wyświetlacz
pygame.display.update()

# Wyjdź z gry
pygame.quit()

Poniżej znajduje się wyjście:

Twórz przedmioty kolekcjonerskie

Aby tworzyć przedmioty kolekcjonerskie, dodaj obiekt, który po zderzeniu z graczem znika i dodaje 10 punktów do wyniku. W tym celu musisz sprawdź kolizje między graczem a przedmiotami kolekcjonerskimi. Oto zaktualizowana wersja kodu, która zawiera elementy kolekcjonerskie. Utwórz nowy plik o nazwie kolekcje.py i dodaj kod z poniższymi aktualizacjami:

# Ustaw przedmiot kolekcjonerski
szerokość_kolekcji = 30
wysokość_kolekcji = 30
kolekcjoner_x = losowo.randint(0, szerokość_okna - szerokość_kolekcji)
kolekcjoner_y = 50

# Skonfiguruj wynik
wynik = 0
czcionka = pygame.font. Czcionka(Nic, 36)

# ...

# Wykrywanie kolizji z przedmiotem kolekcjonerskim
Jeśli (gracz_x < przedmiot_zbierania_x + szerokość_zbierania) I \
(player_x + player_width > element kolekcjonerski_x) I \
(gracz_y < kolekcjonowanie_y + kolekcjonowanie_wysokość) I \
(gracz_y + wzrost_gracza > kolekcjoner_y):
kolekcjoner_x = losowo.randint(0, szerokość_okna - szerokość_kolekcji)
kolekcjoner_y = 50
wynik += 10
# ...

pozycja_kolekcjonerska = (kolekcjoner_x, kolekcjonowanie_y)
# Remis kolekcjonerski
pygame.draw.circle (okno, (0, 255, 0), pozycja_zbierania, szerokość_zbierania)

# Remis wynik
wynik_tekst = czcionka. renderowanie ("Wynik: " + str (wynik), PRAWDA, (255, 255, 255))
window.blit (tekst_punktacji, (10, 10))

Poniżej znajduje się wyjście:

Twórz ulepszenia

Teraz możesz wprowadzić ulepszenia do swojej gry, kierując się następującą logiką. Gdy gracz zderzy się z obiektem wzmacniającym, wzmocnienie zniknie. Jeśli gracz zderzy się z wrogiem, gdy wzmocnienie jest aktywne, wróg zostanie wyeliminowany. Utwórz nowy plik o nazwie ulepszenia.py i dodaj kod z poniższymi aktualizacjami:

# Skonfiguruj włączenie
szerokość_zasilania = 40
wysokość_zasilenia = 40
powerup_x = random.randint(0, szerokość_okna - szerokość_zasilenia)
powerup_y = 50
tarcza_aktywna = FAŁSZ
tarcza_czasomierza = 0

# ...

# Wykrywanie kolizji z włączeniem
doładowania_kolizji = (gracz_x < doładowania_x + szerokość_doładowania) I \
(player_x + player_width > powerup_x) I \
(gracz_y < powerup_y + powerup_height) I \
(gracz_y + wzrost_gracza > wzmocnienie_y)

Jeśli doładowanie_kolizji:
powerup_x = random.randint(0, szerokość_okna - szerokość_zasilenia)
powerup_y = 50
tarcza_aktywna = PRAWDA
shield_timer = pygame.time.get_ticks()

# ...

# Sprawdź zegar tarczy
Jeśli tarcza_aktywna:
current_time = pygame.time.get_ticks()
Jeśli bieżący_czas - licznik_tarczy > 5000:
tarcza_aktywna = FAŁSZ

# ...

# Zdefiniuj wierzchołki trójkąta
x1 = powerup_x + powerup_width / 2
y1 = wzmocnienie_y
x2 = wzmocnienie_x
y2 = powerup_y + powerup_height
x3 = powerup_x + powerup_width
y3 = powerup_y + powerup_height

# Narysuj trójkąt
pygame.draw.polygon (okno, (255, 255, 0), [(x1, y1), (x2, y2), (x3, y3)])

# ...

# Wykrywanie kolizji z aktywną tarczą
tarcza_kolizji = tarcza_aktywna I \
(gracz_x < wróg_x + szerokość_wroga) I \
(gracz_x + szerokość_gracza > wróg_x) I \
(gracz_y < wróg_y + wzrost_wroga) I \
(gracz_y + wzrost_gracza > wróg_y)

Jeśli osłona_kolizji:
wróg_x = losowo.randint(0, szerokość_okna - szerokość_wroga)
wróg_y = 0

Poniżej znajduje się wyjście:

Ustawianie timera dla ulepszeń

Aby power-up zniknął po pewnym czasie i odrodził się w losowej lokalizacji, możesz wprowadzić timery. Utwórz nowy plik o nazwie timer.py i dodaj kod z poniższymi aktualizacjami:

# Ustaw licznik czasu na odrodzenie zasilania
powerup_respawn_timer = 0

# Sprawdź timer włączenia
Jeślinie tarcza_aktywna:
current_time = pygame.time.get_ticks()
Jeśli current_time - powerup_respawn_timer > 3000:
powerup_x = random.randint(0, szerokość_okna - szerokość_zasilenia)
powerup_y = 50
powerup_respawn_timer = pygame.time.get_ticks()

Wizualizacja timera włączania

Aby zapewnić wizualną reprezentację licznika czasu włączania, możesz narysować obiekt w kształcie prostokąta, który z czasem stopniowo się wyczerpuje. Utwórz nowy plik o nazwie bar.py i dodaj kod z poniższymi aktualizacjami:

# Skonfiguruj pasek zasilania
szerokość_paska = 100
wysokość_paska = 10
bar_x = szerokość_okna - szerokość_paska - 10
bar_y = 10

# ...

# Oblicz postęp timera włączenia
Jeśli tarcza_aktywna:
current_time = pygame.time.get_ticks()
upływający_czas = bieżący_czas - licznik_tarczy
timer_progress = (5000 - upłynął_czas) / 5000
# Narysuj pasek zasilania
bar_rect = pygame. Prostokąt (pasek_x, słupek_y, szerokość_paska * postęp_czasu, wysokość_paska)
pygame.draw.rect (okno, (0, 255, 255), bar_prosty)

Poniżej znajduje się wyjście:

Sprawdzone metody dodawania ulepszeń i elementów kolekcjonerskich

Jeśli chodzi o włączanie ulepszeń i przedmiotów kolekcjonerskich do projektów Pygame, przestrzeganie najlepszych praktyk może znacznie poprawić ogólne wrażenia z gry. Weź pod uwagę następujące wytyczne, aby zapewnić zrównoważone i angażujące wdrożenie:

Wyróżnienie wizualne

Konieczne jest stworzenie wyraźnych wizualnych rozróżnień między ulepszeniami, przedmiotami kolekcjonerskimi i innymi elementami gry. Używaj różnych kolorów, kształtów lub symboli, aby były łatwo rozpoznawalne dla graczy. Ta przejrzystość wizualna pomaga graczom identyfikować cele i ustalać ich priorytety, czyniąc rozgrywkę bardziej intuicyjną i przyjemną.

Równowaga i wyzwanie

Staraj się zachować zrównoważoną i wymagającą rozgrywkę. Dostosuj częstotliwość ulepszeń i miejsc odrodzenia, aby uniknąć przytłaczania graczy lub zbyt łatwego grania. Znalezienie właściwej równowagi wymaga starannych testów i iteracji.

Weź pod uwagę opinie graczy i dostosuj częstotliwość pojawiania się, aby zapewnić wciągające i satysfakcjonujące wrażenia.

Informacje zwrotne i nagrody

Zapewnienie natychmiastowej informacji zwrotnej i nagród, gdy gracze zbierają ulepszenia lub przedmioty kolekcjonerskie, zwiększa poczucie spełnienia i motywację. Rozważ dodanie efektów wizualnych, wskazówek dźwiękowych lub animacji wskazujących na pomyślne pozyskanie.

Nagradzanie graczy punktami, dodatkowymi życiami lub odblokowywaniem specjalnych zdolności zwiększa emocje i zachęca graczy do aktywnego poszukiwania tych elementów.

Timery i czasy trwania

Zaimplementuj liczniki czasu i czasy trwania ulepszeń, aby zachować uczciwość i strategiczne podejmowanie decyzji. Dopalacze powinny mieć ograniczony czas trwania, aby zapobiec obezwładnieniu graczy przez dłuższy czas.

Zrównoważenie czasu trwania ma kluczowe znaczenie, ponieważ zbyt krótki czas trwania może wydawać się rozczarowujący, a zbyt długi może zaburzyć równowagę gry. Testuj różne czasy trwania, aby znaleźć idealne miejsce dla każdego wzmocnienia.

Testuj i iteruj

Testowanie gry to ważny krok w procesie tworzenia gry. Dokładnie przetestuj swoją grę z różnymi konfiguracjami i poziomami trudności, aby upewnić się, że ulepszenia i elementy kolekcjonerskie są odpowiednio wyważone i zintegrowane z rozgrywką.

Zwracaj uwagę na opinie graczy i iteruj w oparciu o ich doświadczenia. To iteracyjne podejście pozwala dostroić system, tworząc przyjemną i wciągającą rozgrywkę.

Spraw, by gry były bardziej wciągające dzięki przedmiotom kolekcjonerskim

Dodawanie ulepszeń i przedmiotów kolekcjonerskich do projektów Pygame może znacznie poprawić ogólne wrażenia z gry. Elementy te wprowadzają strategiczne wybory, nagradzają graczy i zwiększają motywację. Przedmiotów kolekcjonerskich można używać do odblokowywania nowych funkcji, poziomów lub zdolności, a ulepszenia zapewniają tymczasowe korzyści i unikalną mechanikę rozgrywki.

Starannie projektując i wdrażając te funkcje, możesz tworzyć gry, które są bardziej wciągające, wymagające i przyjemne dla graczy.