Muutke oma Pygame'i projektid huvitavamaks, integreerides lisavõimalusi ja kogumisobjekte.

Võimsused ja kogumisobjektid mängivad mängu täiustamisel ja mängude kaasahaaravamaks muutmisel otsustavat rolli. Lisades need elemendid oma Pygame'i projektidesse, saate luua ainulaadseid väljakutseid, suurendada mängijate motivatsiooni ja pakkuda võimalusi strateegiliste otsuste tegemiseks.

Õnneks pakub Pygame paindlikke viise võimsuste ja kogumisobjektide suhteliselt hõlpsaks rakendamiseks.

Looge lihtne mäng

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

pip install pygame

Alustage lihtsa mängu seadistamisega, kus mängija saab liikuda vasakule ja paremale, vältides samal ajal vaenlast.

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

See on aluseks jõuallikate ja kogumisobjektide lisamisele. Siin on koodilõigu näide:

importida pygame
importida juhuslik

# Initsialiseeri Pygame
pygame.init()

# Seadistage mängu aken
akna_laius = 800
akna_kõrgus = 600
aken = pygame.display.set_mode((akna_laius, akna_kõrgus))
pygame.display.set_caption("Minu mäng")

# Seadistage mängija
mängija_laius = 50
mängija_kõrgus = 50
player_x = (window_width - player_width) // 2
mängija_y = akna_kõrgus - mängija_kõrgus - 10
mängija_kiirus = 5

# Seadistage vaenlane
vaenlase_laius = 50
vaenlase_kõrgus = 50
vaenlane_x = random.randint(0, akna_laius – vaenlase_laius)
vaenlane_y = 50
vaenlase_kiirus = 3

# 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

# Mängija liikumine
võtmed = pygame.key.get_pressed()
kui võtmed[pygame. K_LEFT] ja mängija_x > 0:
mängija_x - = mängija_kiirus
kui võtmed[pygame. K_RIGHT] ja mängija_x < window_width - player_width:
mängija_x += mängija_kiirus

# Vaenlase liikumine
vaenlane_y += vaenlase_kiirus
kui vaenlane_y > window_height:
vaenlane_x = random.randint(0, akna_laius – vaenlase_laius)
vaenlane_y = 0

# Kokkupõrke tuvastamine
kui (mängija_x < vaenlase_x + vaenlase_laius) ja \
(mängija_x + mängija_laius > vaenlane_x) ja \
(mängija_y < vaenlase_y + vaenlase_kõrgus) ja \
(mängija_y + mängija_kõrgus > vaenlase_y):
jookseb = Vale

# Tühjendage ekraan
window.fill((0, 0, 0))

mängija_pos = (mängija_x, mängija_y,
mängija_laius, mängija_kõrgus)
vaenlase_pos = (vaenlane_x, vaenlane_y,
vaenlase_laius, vaenlase_kõrgus)

# Joonista mängija
pygame.draw.rect (aken, (255, 255, 255), mängija_pos)

# Joonista vaenlane
pygame.draw.rect (aken, (255, 0, 0), vaenlase_pos)

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

# Lõpeta mäng
pygame.quit()

Allpool on väljund:

Looge kogumisobjekte

Kogumisobjektide loomiseks lisage objekt, mis mängijaga kokkupõrkel kaob ja lisab tulemusele 10 punkti. Selleks peate kontrollige mängija ja kogumisobjektide vahelisi kokkupõrkeid. Siin on koodi uuendatud versioon, mis sisaldab kogumisobjekte. Looge uus fail nimega kogumisobjektid.py ja lisage kood koos allolevate värskendustega:

# Seadistage kogumisobjekt
kogutav_laius = 30
kogutav_kõrgus = 30
kogutav_x = random.randint(0, akna_laius – kogutav_laius)
kogutav_y = 50

# Seadistage skoori
skoor = 0
font = pygame.font. Font(Mitte ühtegi, 36)

# ...

# Kokkupõrke tuvastamine kogumisobjektiga
kui (mängija_x < kogutav_x + kogutav_laius) ja \
(mängija_x + mängija_laius > kogutav_x) ja \
(mängija_y < kogutav_a + kogutav_kõrgus) ja \
(mängija_a + mängija_kõrgus > kogutav_a):
kogutav_x = random.randint(0, akna_laius – kogutav_laius)
kogutav_y = 50
skoor += 10
# ...

kogutav_pos = (kogutav_x, kogutav_y)
# Joonistage kogumisobjekti
pygame.draw.circle (aken, (0, 255, 0), kogutav_positsioon, kogutav_laius)

# Viigiskoor
score_text = font.render("Skoor:" + str (skoor), Tõsi, (255, 255, 255))
window.blit (skoori_tekst, (10, 10))

Allpool on väljund:

Looge võimendusi

Nüüd saate järgmise loogikaga oma mängule lisavõimalusi tutvustada. Kui mängija põrkab kokku sisselülitatud objektiga, kaob sisselülitamine. Kui mängija põrkub sisselülitamise ajal vaenlasega kokku, siis vaenlane elimineeritakse. Looge uus fail nimega powerups.py ja lisage kood koos allolevate värskendustega:

# Seadistage sisselülitamine
powerup_width = 40
powerup_height = 40
powerup_x = random.randint(0, akna_laius – powerup_width)
powerup_y = 50
kilp_aktiivne = Vale
shield_timer = 0

# ...

# Kokkupõrke tuvastamine sisselülitamisega
collision_powerup = (pleier_x < powerup_x + powerup_width) ja \
(pleier_x + player_width > powerup_x) ja \
(pleier_y < powerup_y + powerup_height) ja \
(mängija_y + mängija_kõrgus > võimsus_y)

kui collision_powerup:
powerup_x = random.randint(0, akna_laius – powerup_width)
powerup_y = 50
kilp_aktiivne = Tõsi
shield_timer = pygame.time.get_ticks()

# ...

# Kontrollige kilbi taimerit
kui shield_active:
praeguse_aeg = pygame.time.get_ticks()
kui praegune_aeg – kilbi_taimer > 5000:
kilp_aktiivne = Vale

# ...

# Määratlege kolmnurga tipud
x1 = powerup_x + powerup_width / 2
y1 = powerup_y
x2 = powerup_x
y2 = powerup_y + powerup_height
x3 = powerup_x + powerup_width
y3 = powerup_y + powerup_height

# Joonistage kolmnurk
pygame.draw.polygon (aken, (255, 255, 0), [(x1, y1), (x2, y2), (x3, y3)])

# ...

# Kokkupõrke tuvastamine aktiivse kaitsega
kokkupõrke_kilp = kilp_aktiivne ja \
(mängija_x < vaenlase_x + vaenlase_laius) ja \
(mängija_x + mängija_laius > vaenlane_x) ja \
(mängija_y < vaenlase_y + vaenlase_kõrgus) ja \
(mängija_y + mängija_kõrgus > vaenlane_y)

kui collision_shield:
vaenlane_x = random.randint(0, akna_laius – vaenlase_laius)
vaenlane_y = 0

Allpool on väljund:

Taimeri seadistamine sisselülitamiseks

Selleks, et sisselülitamine teatud aja möödudes kaoks ja suvalises kohas uuesti ilmuks, saate kasutusele võtta taimerid. Looge uus fail nimega taimer.py ja lisage kood koos allolevate värskendustega:

# Seadistage sisselülitamise taaselustamiseks taimer
powerup_respawn_timer = 0

# Kontrollige sisselülitamistaimerit
kuimitte shield_active:
praeguse_aeg = pygame.time.get_ticks()
kui praegune_aeg – powerup_respawn_timer > 3000:
powerup_x = random.randint(0, akna_laius – powerup_width)
powerup_y = 50
powerup_respawn_timer = pygame.time.get_ticks()

Power-Up Timeri visualiseerimine

Sisselülitamistaimeri visuaalse esituse saamiseks saate joonistada ristkülikukujulise objekti, mis aja jooksul järk-järgult tühjeneb. Looge uus fail nimega bar.py ja lisage kood koos allolevate värskendustega:

# Seadistage sisselülitusriba
riba_laius = 100
riba_kõrgus = 10
riba_x = akna_laius - riba_laius - 10
bar_y = 10

# ...

# Arvutage sisselülitustaimeri edenemine
kui shield_active:
praeguse_aeg = pygame.time.get_ticks()
kulunud_aeg = praegune_aeg – kilbi_taimer
timer_progress = (5000 - kulunud_aeg) / 5000
# Joonistage sisselülitusriba
bar_rect = pygame. Rect (bar_x, bar_y, bar_width * timer_progress, bar_height)
pygame.draw.rect (aken, (0, 255, 255), bar_rect)

Allpool on väljund:

Võimsuste ja kogumisobjektide lisamise parimad tavad

Kui vajate Pygame'i projektidesse lisavõimalusi ja kogumisobjekte, võib parimate tavade järgimine üldist mängukogemust oluliselt parandada. Tasakaalustatud ja kaasahaarava rakendamise tagamiseks kaaluge järgmisi juhiseid.

Visuaalne eristus

Oluline on luua selged visuaalsed eristused lisaseadmete, kogumisobjektide ja muude mänguelementide vahel. Kasutage erinevaid värve, kujundeid või sümboleid, et muuta need mängijatele hõlpsasti äratuntavaks. See visuaalne selgus aitab mängijatel oma sihtmärke tuvastada ja tähtsuse järjekorda seada, muutes mängu intuitiivsemaks ja nauditavamaks.

Tasakaal ja väljakutse

Püüdke säilitada tasakaalustatud ja väljakutseid pakkuv mängukogemus. Reguleerige sisselülituste ja kogutavate kudemiste sagedust, et vältida mängijate ülekoormamist või mängu liiga lihtsaks muutmist. Õige tasakaalu leidmine nõuab hoolikat testimist ja iteratsiooni.

Võtke arvesse mängijate tagasisidet ja viimistlege kudemissagedust, et luua kaasahaarav ja rahuldust pakkuv kogemus.

Tagasiside ja preemiad

Vahetu tagasiside ja preemiate pakkumine, kui mängijad koguvad lisajõude või kogumisobjekte, suurendab saavutustunnet ja motivatsiooni. Kaaluge visuaalsete efektide, helivihjete või animatsioonide lisamist, et näidata edukat omandamist.

Mängijate premeerimine punktide, lisaelu või erivõimete avamisega lisab põnevust ja julgustab mängijaid neid elemente aktiivselt otsima.

Taimerid ja kestused

Rakendage sisselülitamiseks taimereid ja kestusi, et säilitada õiglus ja strateegiline otsuste tegemine. Võimsustel peaks olema piiratud kestus, et vältida mängijate pikaajalist ülekoormust.

Kestuse tasakaalustamine on ülioluline, kuna liiga lühike kestus võib tunduda ebapiisav, samas kui liiga pikk võib mängu tasakaalust välja viia. Katsetage erinevaid kestusi, et leida igale sisselülitamisele sobiv koht.

Testige ja korrake

Mängu testimine on arendusprotsessi oluline samm. Katsetage oma mängu põhjalikult erinevate konfiguratsioonide ja raskusastmetega, et tagada võimsuste ja kogumisobjektide sobivus tasakaalus ja mänguga integreeritud.

Pöörake tähelepanu mängijate tagasisidele ja korrake nende kogemuste põhjal. See iteratiivne lähenemine võimaldab teil süsteemi täpselt häälestada, luues nauditava ja kaasahaarava mängukogemuse.

Muutke mängud kogumisobjektidega kaasahaaravamaks

Võimsuste ja kogumisobjektide lisamine Pygame'i projektidesse võib üldist mängukogemust märkimisväärselt parandada. Need elemendid tutvustavad strateegilisi valikuid, premeerivad mängijaid ja suurendavad motivatsiooni. Kogumisobjekte saab kasutada uute funktsioonide, tasemete või võimete avamiseks, samas kui lisavõimalused pakuvad ajutisi eeliseid ja ainulaadset mängumehaanikat.

Neid funktsioone hoolikalt kavandades ja juurutades saate luua mänge, mis on mängijate jaoks kaasahaaravamad, väljakutsuvamad ja nauditavamad.