Štai kaip galite pridėti savo žaidimo lygių, kad jis būtų patrauklesnis ir malonesnis.

Lygiai yra esminis daugelio vaizdo žaidimų aspektas. Jie suteikia struktūrą, iššūkį ir įvairovę bei gali žymiai pagerinti žaidėjo patirtį. PyGame, populiari Python biblioteka, skirta žaidimų kūrimui, suteikia įvairių funkcijų, su kuriomis galite lengvai sukurti įvairius lygius. Gerai suplanuotas lygis gali sužavėti žaidėją, sukurti progreso pojūtį ir galiausiai apdovanoti už pastangas.

Planavimo ir projektavimo lygiai

Prieš kuriant lygius, būtina juos suplanuoti ir suprojektuoti. Planavimo lygiai padeda sukurti gerai struktūruotą žaidimą, suteikiantį žaidėjams tinkamą sudėtingumo lygį. Norėdami planuoti lygius, turite atsižvelgti į įvairius veiksnius, tokius kaip žaidimo mechanika, istorija ir bendra žaidimo struktūra.

Pavyzdžiui, jei kuriate platformingo žaidimą, turite galvoti apie platformų išdėstymą, priešus ir kliūtis. Taip pat reikia atsižvelgti į žaidėjo judėjimą, pvz., šokinėjimą ir bėgimą, ir atitinkamai suplanuoti lygius.

instagram viewer

Šiame straipsnyje naudojamas kodas pateikiamas čia GitHub saugykla ir jūs galite nemokamai naudotis pagal MIT licenciją.

Dviejų paprastų lygių kūrimas

Prieš pradėdami įsitikinkite, kad turite pip įdiegtas jūsų sistemoje. Naudokite šią komandą norėdami įdiegti pygame biblioteka:

pip įdiegti pygame

Dabar sukurkite du paprastus lygius su platforma ir grotuvu. Štai pirmojo lygio kodas:

importuoti pygame

pygame.init()

# Apibrėžkite konstantas
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLATFORM_WIDTH = 100
PLATFORM_HEIGHT = 20
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50
PLATFORM_COLOR = (255, 255, 255)
PLAYER_COLOR = (255, 0, 0)

# Sukurkite ekraną
ekranas = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

# Sukurkite platformą
platforma = pygame. Rect(350, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)

# Sukurkite grotuvą
žaidėjas = pygame. Rect(375, 450, PLAYER_WIDTH, PLAYER_HEIGHT)

# Žaidimo kilpa
bėgimas = Tiesa
kol veikia:
dėl renginys in pygame.event.get():
jeigu event.type == pygame. UŽDARYTI:
bėgimas = Netiesa
elifas event.type == pygame. KEYDOWN:
jeigu event.key == pygame. K_LEFT:
player.move_ip(-10, 0)
elifas event.key == pygame. K_RIGHT:
player.move_ip(10, 0)

# Užpildykite ekraną juoda spalva
screen.fill((0, 0, 0))

# Nupieškite platformą
pygame.draw.rect (ekranas, PLATFORM_COLOR, platforma)

# Nupieškite grotuvą
pygame.draw.rect (ekranas, PLAYER_COLOR, grotuvas)

# Atnaujinkite ekraną
pygame.display.flip()

pygame.quit()

Po to sukurkite antrąjį lygį tiesiog pakeisdami platformą ir žaidėjo poziciją. Štai antrojo lygio kodas:

importuoti pygame

pygame.init()

# Apibrėžkite konstantas
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLATFORM_WIDTH = 150
PLATFORM_HEIGHT = 20
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50
PLATFORM_COLOR = (255, 255, 255)
PLAYER_COLOR = (255, 0, 0)

# Sukurkite ekraną
ekranas = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

# Sukurkite platformą
platforma = pygame. Rect(200, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)

# Sukurkite grotuvą
žaidėjas = pygame. Rect(225, 450, PLAYER_WIDTH, PLAYER_HEIGHT)

# Žaidimo kilpa
bėgimas = Tiesa
kol veikia:
dėl renginys in pygame.event.get():
jeigu event.type == pygame. UŽDARYTI:
bėgimas = Netiesa
elifas event.type == pygame. KEYDOWN:
jeigu event.key == pygame. K_LEFT:
player.move_ip(-10, 0)
elifas event.key == pygame. K_RIGHT:
player.move_ip(10, 0)

# Užpildykite ekraną juoda spalva
screen.fill((0, 0, 0))

# Nupieškite platformą
pygame.draw.rect (ekranas, PLATFORM_COLOR, platforma)

# Nupieškite grotuvą
pygame.draw.rect (ekranas, PLAYER_COLOR, grotuvas)

# Atnaujinkite ekraną
pygame.display.flip()

pygame.quit()

Šis kodas panašus į pirmąjį lygį, tačiau keičiasi platforma ir žaidėjo pozicijos.

Skirtingų lygių sujungimas

Norėdami sujungti skirtingus lygius, turite pakeisti žaidimo kilpą, kad perjungtumėte lygius, kai žaidėjas baigia lygį. Tai galite padaryti sukurdami kintamąjį, kad galėtumėte sekti esamą lygį, ir naudodami sąlyginius teiginius, kad perjungtumėte lygius. Tu taip pat gali aptikti susidūrimus ir patikrinti jei žaidėjas pasiekė lygio pabaigą.

Štai modifikuotas žaidimo ciklas:

dabartinis_lygis = 1

# Nupieškite platformą ir grotuvą pagal dabartinį lygį
jeigu dabartinis_lygis == 1:
pygame.draw.rect (ekranas, PLATFORM_COLOR, platform1)
pygame.draw.rect (ekranas, PLAYER_COLOR, grotuvas)
# Patikrinkite, ar žaidėjas pasiekė lygio pabaigą
jeigu grotuvas.colliderect (1 platforma) == Netiesa:
dabartinis_lygis = 2
elifas dabartinis_lygis == 2:
pygame.draw.rect (ekranas, PLATFORM_COLOR, platform2)
pygame.draw.rect (ekranas, PLAYER_COLOR, grotuvas)
# Patikrinkite, ar žaidėjas pasiekė lygio pabaigą
jeigu grotuvas.colliderect (platform2) == Tiesa:
bėgimas = Netiesa

Žaidimo duomenų bendrinimas tarp lygių

Norėdami dalytis jais tarp lygių, turite saugoti žaidimo duomenis. Norėdami tai padaryti, sukurkite atskirą Python modulį žaidimo duomenims saugoti ir importuoti į kiekvieną lygį.

Štai žingsniai:

  • Sukurkite naują Python modulį pavadinimu game_data.py.
  • Apibrėžkite visuotinį kintamąjį game_data.py modulis, skirtas išsaugoti žaidėjo poziciją.
  • Kiekviename lygyje importuokite žaidimo_duomenys modulis.
  • Norėdami sužinoti žaidėjo poziciją kiekviename lygyje, naudokite game_data.player_pos kintamąjį, o ne sukurti naują žaidėjo objektą.
  • Norėdami atnaujinti žaidėjo poziciją, pakeiskite reikšmę game_data.player_pos kiekvienoje iteracijoje.

Štai modifikuotas kodas, skirtas dalytis žaidėjo pozicija tarp lygių.

Viduje game_data.py modulį, pridėkite šį kodą:

player_pos = (0, 0)

Pirmas lygis:

importuoti pygame
importuoti žaidimo_duomenys

# Sukurkite grotuvą
žaidėjas = pygame. Rect (game_data.player_pos[0], game_data.player_pos[1], PLAYER_WIDTH, PLAYER_HEIGHT)

# Žaidimo kilpa
bėgimas = Tiesa
kol veikia:
# Nupieškite grotuvą
pygame.draw.rect (ekranas, PLAYER_COLOR, grotuvas)

# Atnaujinkite žaidėjo poziciją game_data modulyje
game_data.player_pos = (player.x, player.y)

Padarykite žaidimus patrauklesnius naudodami lygius

Pridėję skirtingus žaidimo lygius, jis gali tapti patrauklesnis ir malonesnis žaidėjams. Sujungdami lygius ir bendrindami žaidimo duomenis galite sukurti vientisą ir darnią žaidimų patirtį. Tai gali padėti žaidėjams pasinerti į žaidimų pasaulį ir sumažinti atsitraukimo ar nuobodulio tikimybę.