Rozdział 21 · Projekt: kosmiczny strzelec

Jak wzrasta trudność gry

Trzy formuły niezależne od wyniku – z limitem od góry i dołu, bez ostrych skoków.

Stała trudność szybko staje się albo zbyt łatwa, albo zbyt trudna. Ostateczna wersja zwiększa trudność stopniowo, przez trzy niezależne czyste funkcje od aktualnego wyniku.

fragment_difficulty.py
def interval_poyavleniya_vraga(score):
    return max(MIN_SPAWN_INTERVAL, BASE_SPAWN_INTERVAL - score * SPAWN_INTERVAL_SCORE_FACTOR)

def mnozhitel_skorosti_vraga(score):
    return 1.0 + min(MAX_ENEMY_SPEED_BONUS, score * ENEMY_SPEED_SCORE_FACTOR)

def veroyatnost_istrebitelya(score):
    return min(MAX_FIGHTER_PROBABILITY, score * FIGHTER_PROBABILITY_SCORE_FACTOR)
FunkcjaRośnie wraz z wynikiemOgraniczone do góry/dołu
interval_poyavleniya_vragaSpadki – Wrogowie pojawiają się częściejNie niżej niż MIN_SPAWN_INTERVAL
mnozhitel_skorosti_vragaZwiększa się – przeciwnicy są szybsiNie wyżej niż 1,0 + MAX_ENEMY_SPEED_BONUS
veroyatnost_istrebitelyaWięcej wojownikówNie wyżej niż MAX_FIGHTER_PROBABILITY
Dolne i górne granice nie są przypadkowe
Bez max()/min() odstęp pojawiania się wrogów przy bardzo wysokim wyniku mógłby dojść do zera lub liczby ujemnej. Wtedy while self.spawn_timer <= 0.0: w sekcji 21.14 nigdy by się nie skończyło: dodanie niedodatniego przedziału nie mogło podnieść timera powyżej zera, a pętla generowałaby wrogów w nieskończoność na tej samej klatce. Ograniczenia chronią formuły przed ich własnym wzrostem.
Dwa prawdziwe okna obok siebie: po lewej rzadko pojawiają się drobni przeciwnicy z niskim wynikiem, po prawej zauważalnie więcej wrogów, w tym duzi wojownicy, z wysokim wynikiem
Porównanie rzeczywistego świata to ten sam wzór trudności stosowany do niskiego i wysokiego liczenia.

Liczba falowa – tylko interfejs

fragment_wave.py
WAVE_SCORE_STEP = 500

def nomer_volny(score):
    return 1 + score // WAVE_SCORE_STEP

Wave nie jest osobnym systemem z własnymi zasadami, lecz wygodnym sposobem na pokazanie Postęp gracza: raz na 500 punktów liczba fali wzrasta o HUD, choć sama trudność wzrasta Nieustannie, bez nagłych skoków w tej chwili.

Praktyka: Formuły złożoności
Zeskanowanie bezpośrednio w przeglądarce – nie wymaga instalacji Pygame
Praktyka kursuje lokalnie
Otwórz praktykę →