Siit saate teada, kuidas saate oma mängule tasemeid lisada, et muuta see kaasahaaravamaks ja nauditavamaks.

Tasemed on enamiku videomängude oluline aspekt. Need pakuvad struktuuri, väljakutseid ja vaheldust ning võivad mängija kogemust märkimisväärselt parandada. PyGame, populaarne Pythoni teek mängude arendamiseks, pakub erinevaid funktsioone, mille abil saate hõlpsalt luua erinevaid tasemeid. Hästi läbimõeldud tase võib mängija võluda, luua edasimineku tunde ja lõpuks premeerida teda nende pingutuste eest.

Planeerimise ja kujundamise tasemed

Enne tasemete loomist on oluline need planeerida ja kujundada. Planeerimistasemed aitavad luua hästi struktureeritud mängu, mis pakub mängijatele õiget raskusastet. Taseme planeerimiseks peate arvestama erinevate teguritega, nagu mängu mehaanika, lugu ja mängu üldine struktuur.

Näiteks kui kujundate platvormimängu, peate mõtlema platvormide paigutusele, vaenlastele ja takistustele. Arvestada tuleb ka mängija liikumisega, nagu hüppamine ja jooksmine, ning vastavalt sellele kujundada tasemed.

instagram viewer

Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.

Kahe lihtsa taseme loomine

Enne alustamist veenduge, et teil on pip teie süsteemi installitud. Kasutage seda käsku installimiseks pygame raamatukogu:

pip install pygame

Nüüd looge kaks lihtsat taset platvormi ja mängijaga. Siin on esimese taseme kood:

importida pygame

pygame.init()

# Määratlege konstandid
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)

# Looge ekraan
ekraan = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

# Looge platvorm
platvorm = pygame. Rect(350, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)

# Looge mängija
mängija = mängumäng. Rect(375, 450, PLAYER_WIDTH, PLAYER_HEIGHT)

# Mängutsükkel
jookseb = Tõsi
samas jooksmine:
jaoks sündmus sisse pygame.event.get():
kui event.type == mängumäng. VÄLJA:
jookseb = Vale
elif event.type == mängumäng. KEYDOWN:
kui event.key == mängumäng. K_LEFT:
player.move_ip(-10, 0)
elif event.key == mängumäng. K_RIGHT:
player.move_ip(10, 0)

# Täitke ekraan musta värviga
screen.fill((0, 0, 0))

# Joonistage platvorm
pygame.draw.rect (ekraan, PLATFORM_COLOR, platvorm)

# Joonistage mängija
pygame.draw.rect (ekraan, PLAYER_COLOR, mängija)

# Värskendage ekraani
pygame.display.flip()

pygame.quit()

Pärast seda looge teine ​​tase, muutes lihtsalt platvormi ja mängija positsiooni. Siin on teise taseme kood:

importida pygame

pygame.init()

# Määratlege konstandid
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)

# Looge ekraan
ekraan = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))

# Looge platvorm
platvorm = pygame. Rect(200, 500, PLATFORM_WIDTH, PLATFORM_HEIGHT)

# Looge mängija
mängija = mängumäng. Rect(225, 450, PLAYER_WIDTH, PLAYER_HEIGHT)

# Mängutsükkel
jookseb = Tõsi
samas jooksmine:
jaoks sündmus sisse pygame.event.get():
kui event.type == mängumäng. VÄLJA:
jookseb = Vale
elif event.type == mängumäng. KEYDOWN:
kui event.key == mängumäng. K_LEFT:
player.move_ip(-10, 0)
elif event.key == mängumäng. K_RIGHT:
player.move_ip(10, 0)

# Täitke ekraan musta värviga
screen.fill((0, 0, 0))

# Joonistage platvorm
pygame.draw.rect (ekraan, PLATFORM_COLOR, platvorm)

# Joonistage mängija
pygame.draw.rect (ekraan, PLAYER_COLOR, mängija)

# Värskendage ekraani
pygame.display.flip()

pygame.quit()

See kood sarnaneb esimese tasemega, kuid platvormi ja mängija positsioone muudetakse.

Erinevate tasemete ühendamine

Erinevate tasemete ühendamiseks peate tasemete vahel vahetamiseks muutma mängutsüklit, kui mängija taseme lõpetab. Seda saate teha, luues muutuja praeguse taseme jälgimiseks ja kasutades tasemete vahetamiseks tingimuslauseid. Sa saad ka tuvastada kontrollimiseks kokkupõrkeid kui mängija on jõudnud taseme lõppu.

Siin on muudetud mängutsükkel:

praegune_tase = 1

# Joonistage platvorm ja mängija praeguse taseme põhjal
kui praegune_tase == 1:
pygame.draw.rect (ekraan, PLATFORM_COLOR, platvorm1)
pygame.draw.rect (ekraan, PLAYER_COLOR, mängija)
# Kontrollige, kas mängija on jõudnud taseme lõppu
kui player.colliderect (platvorm1) == Vale:
praegune_tase = 2
elif praegune_tase == 2:
pygame.draw.rect (ekraan, PLATFORM_COLOR, platvorm2)
pygame.draw.rect (ekraan, PLAYER_COLOR, mängija)
# Kontrollige, kas mängija on jõudnud taseme lõppu
kui player.colliderect (platvorm2) == Tõsi:
jookseb = Vale

Mänguandmete jagamine tasemete vahel

Peate salvestama mänguandmed, et neid tasemete vahel jagada. Selleks looge mänguandmete salvestamiseks eraldi Pythoni moodul ja importige need igale tasemele.

Siin on sammud.

  • Looge uus Pythoni moodul nimega game_data.py.
  • Määratlege globaalne muutuja game_data.py moodul mängija asukoha salvestamiseks.
  • Importige igal tasemel mängu_andmed moodul.
  • Mängija positsiooni leidmiseks igal tasandil kasutage nuppu game_data.player_pos muutuja, selle asemel et luua uus mängijaobjekt.
  • Mängija positsiooni värskendamiseks muutke väärtust game_data.player_pos igas iteratsioonis.

Siin on muudetud kood mängija positsiooni jagamiseks tasemete vahel.

Aastal game_data.py moodul, lisage järgmine kood:

player_pos = (0, 0)

Esimene tase:

importida pygame
importida mängu_andmed

# Looge mängija
mängija = mängumäng. Rect (game_data.player_pos[0], game_data.player_pos[1], PLAYER_WIDTH, PLAYER_HEIGHT)

# Mängutsükkel
jookseb = Tõsi
samas jooksmine:
# Joonistage mängija
pygame.draw.rect (ekraan, PLAYER_COLOR, mängija)

# Värskendage mängija positsiooni game_data moodulis
game_data.player_pos = (mängija.x, mängija.y)

Muutke mängud tasemetega kaasahaaravamaks

Oma mängule erinevate tasemete lisamine võib muuta selle mängijate jaoks kaasahaaravamaks ja nauditavamaks. Taset ühendades ja mänguandmeid jagades saate luua sujuva ja ühtse mängukogemuse. See võib aidata mängijatel mängumaailma sukelduda ja vähendada eemaldumise või igavuse tõenäosust.