Padarykite savo Pygame projektus įdomesnius integruodami energijos šaltinius ir kolekcionuojamus daiktus.

Papildymai ir kolekcionuojami daiktai atlieka lemiamą vaidmenį gerinant žaidimo eigą ir paverčiant žaidimus patrauklesniais. Pridėję šiuos elementus prie savo Pygame projektų, galite sukurti unikalių iššūkių, padidinti žaidėjų motyvaciją ir suteikti galimybių priimti strateginius sprendimus.

Laimei, „Pygame“ siūlo lanksčius būdus, kaip palyginti lengvai įdiegti papildymus ir kolekcionuojamus daiktus.

Sukurkite paprastą žaidimą

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

pip įdiegti pygame

Pradėkite nuo paprasto žaidimo, kuriame žaidėjas gali judėti į kairę ir į dešinę, vengdamas priešo.

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

Tai bus pagrindas papildant energiją ir kolekcionuojamus daiktus. Štai kodo fragmento pavyzdys:

importuoti
instagram viewer
pygame
importuoti atsitiktinis

# Inicijuoti Pygame
pygame.init()

# Nustatykite žaidimo langą
lango_plotis = 800
lango_aukštis = 600
langas = pygame.display.set_mode((lango_plotis, lango_aukštis))
pygame.display.set_caption("Mano žaidimas")

# Nustatykite grotuvą
žaidėjo_plotis = 50
žaidėjo_ūgis = 50
player_x = (lango_plotis – grotuvo_plotis) // 2
žaidėjas_y = lango_aukštis - žaidėjo_aukštis - 10
žaidėjo_greitis = 5

# Nustatykite priešą
enemy_width = 50
priešo_aukštis = 50
enemy_x = atsitiktinis.randint(0, lango_plotis – priešo_plotis)
priešas_y = 50
priešo_greitis = 3

# Žaidimo kilpa
bėgimas = Tiesa
kol veikia:
dėl įvykis in pygame.event.get():
jeigu event.type == pygame. UŽDARYTI:
bėgimas = Netiesa

# Žaidėjo judėjimas
klavišai = pygame.key.get_pressed()
jeigu raktai[pygame. K_LEFT] ir žaidėjas_x > 0:
žaidėjas_x - = žaidėjo_greitis
jeigu raktai[pygame. K_RIGHT] ir player_x < window_width - player_width:
žaidėjas_x += grotuvo_greitis

# Priešo judėjimas
priešas_y += priešo_greitis
jeigu enemy_y > window_height:
enemy_x = atsitiktinis.randint(0, lango_plotis – priešo_plotis)
priešas_y = 0

# Susidūrimo aptikimas
jeigu (žaidėjas_x < priešo_x + priešo_plotis) ir \
(player_x + player_width > enemy_x) ir \
(žaidėjas_y < priešo_y + priešo_aukštis) ir \
(žaidėjas_y + žaidėjo_aukštis > priešas_y):
bėgimas = Netiesa

# Išvalykite ekraną
window.fill((0, 0, 0))

player_pos = (žaidėjas_x, žaidėjas_y,
žaidėjo_plotis, žaidėjo_aukštis)
enemy_pos = (priešo_x, priešo_y,
priešo_plotis, priešo_aukštis)

# Lygiosios grotuvas
pygame.draw.rect (langas, (255, 255, 255), player_pos)

# Nupieškite priešą
pygame.draw.rect (langas, (255, 0, 0), enemy_pos)

# Atnaujinkite ekraną
pygame.display.update()

# Išeikite iš žaidimo
pygame.quit()

Žemiau yra išvestis:

Sukurkite kolekcionuojamus daiktus

Norėdami sukurti kolekcionuojamus daiktus, pridėkite objektą, kuris, susidūręs su žaidėju, dingsta ir prideda 10 taškų prie rezultato. Norėdami tai padaryti, turite patikrinkite žaidėjo ir kolekcionuojamų daiktų susidūrimus. Štai atnaujinta kodo versija, apimanti kolekcionuojamus daiktus. Sukurkite naują failą pavadinimu kolekcionuojami daiktai.py ir pridėkite kodą su toliau pateiktais atnaujinimais:

# Nustatykite kolekcionuojamą daiktą
kolekcionuojamas_plotis = 30
kolekcionuojamas_aukštis = 30
renkamas_x = atsitiktinis.randint(0, lango_plotis – renkamo_plotis)
kolekcionuojamas_y = 50

# Nustatykite balą
rezultatas = 0
šriftas = pygame.font. Šriftas (Nė vienas, 36)

# ...

# Susidūrimo aptikimas su kolekcionuojamu daiktu
jeigu (grotuvas_x < renkamas_x + kolekcionuojamas_plotis) ir \
(player_x + player_width > collectionible_x) ir \
(žaidėjas_y < kolekcionuojamas_y + kolekcionuojamas_aukštis) ir \
(žaidėjas_y + žaidėjo_aukštis > kolekcinis_y):
renkamas_x = atsitiktinis.randint(0, lango_plotis – renkamo_plotis)
kolekcionuojamas_y = 50
rezultatas += 10
# ...

Collectible_pos = (renkamas_x, kolekcionuojamas_y)
# Pieškite kolekcinį daiktą
pygame.draw.circle (langas, (0, 255, 0), renkamas_pozicija, kolekcionuojamas_plotis)

# Lygiosios rezultatas
score_text = font.render("Taškas:" + str (balas), Tiesa, (255, 255, 255))
window.blit (score_text, (10, 10))

Žemiau yra išvestis:

Sukurkite patobulinimus

Dabar savo žaidimui galite įvesti galios, vadovaudamiesi tokia logika. Kai žaidėjas susiduria su įjungimo objektu, įjungimas išnyks. Jei žaidėjas susidurs su priešu, kai įjungimas yra aktyvus, priešas bus pašalintas. Sukurkite naują failą pavadinimu powerups.py ir pridėkite kodą su toliau pateiktais atnaujinimais:

# Nustatykite įjungimą
powerup_width = 40
galios_aukštis = 40
powerup_x = random.randint(0, lango_plotis – powerup_width)
powerup_y = 50
skydas_aktyvus = Netiesa
shield_timer = 0

# ...

# Susidūrimo aptikimas su įjungimu
collision_powerup = (grotuvas_x < powerup_x + powerup_width) ir \
(player_x + player_width > powerup_x) ir \
(player_y < powerup_y + powerup_height) ir \
(žaidėjas_y + žaidėjo_aukštis > galia_y)

jeigu collision_powerup:
powerup_x = random.randint(0, lango_plotis – powerup_width)
powerup_y = 50
skydas_aktyvus = Tiesa
shield_timer = pygame.time.get_ticks()

# ...

# Patikrinkite ekrano laikmatį
jeigu shield_active:
current_time = pygame.time.get_ticks()
jeigu dabartinis_laikas – skydo_laikmatis > 5000:
skydas_aktyvus = Netiesa

# ...

# Apibrėžkite trikampio viršūnes
x1 = powerup_x + powerup_width / 2
y1 = powerup_y
x2 = powerup_x
y2 = galios_y + galios_aukštis
x3 = powerup_x + powerup_width
y3 = galios_y + galios_aukštis

# Nubrėžkite trikampį
pygame.draw.polygon (langas, (255, 255, 0), [(x1, y1), (x2, y2), (x3, y3)])

# ...

# Susidūrimo aptikimas su aktyviu skydu
collision_shield = skydas_aktyvus ir \
(žaidėjas_x < priešo_x + priešo_plotis) ir \
(player_x + player_width > enemy_x) ir \
(žaidėjas_y < priešo_y + priešo_aukštis) ir \
(žaidėjas_y + žaidėjo_aukštis > priešas_y)

jeigu collision_shield:
enemy_x = atsitiktinis.randint(0, lango_plotis – priešo_plotis)
priešas_y = 0

Žemiau yra išvestis:

Įjungimo laikmačio nustatymas

Norėdami, kad įjungimas išnyktų po tam tikro laiko ir vėl atsirastų atsitiktinėje vietoje, galite įvesti laikmačius. Sukurkite naują failą pavadinimu laikmatis.py ir pridėkite kodą su toliau pateiktais atnaujinimais:

# Nustatykite įjungimo atkūrimo laikmatį
powerup_respawn_timer = 0

# Patikrinkite įjungimo laikmatį
jeigune shield_active:
current_time = pygame.time.get_ticks()
jeigu current_time – powerup_respawn_timer > 3000:
powerup_x = random.randint(0, lango_plotis – powerup_width)
powerup_y = 50
powerup_respawn_timer = pygame.time.get_ticks()

Įjungimo laikmačio vizualizavimas

Norėdami pateikti vaizdinį įjungimo laikmačio vaizdą, galite nupiešti stačiakampio formos objektą, kuris laikui bėgant palaipsniui senka. Sukurkite naują failą pavadinimu bar.py ir pridėkite kodą su toliau pateiktais atnaujinimais:

# Nustatykite įjungimo juostą
juostos_plotis = 100
juostos_aukštis = 10
bar_x = lango_plotis - bar_plotis - 10
bar_y = 10

# ...

# Apskaičiuokite įjungimo laikmačio eigą
jeigu shield_active:
current_time = pygame.time.get_ticks()
praėjęs_laikas = esamas_laikas – skydo_laikmatis
timer_progress = (5000 - Praėjęs laikas) / 5000
# Nubrėžkite įjungimo juostą
bar_rect = pygame. Tiesiai (bar_x, bar_y, bar_width * laikmatis_progress, bar_height)
pygame.draw.rect (langas, (0, 255, 255), bar_rect)

Žemiau yra išvestis:

Geriausios galios ir kolekcionuojamų daiktų pridėjimo praktika

Kalbant apie galios ir kolekcionuojamų daiktų įtraukimą į savo Pygame projektus, vadovaudamiesi geriausios praktikos pavyzdžiais galite žymiai pagerinti bendrą žaidimo patirtį. Atsižvelkite į šias gaires, kad užtikrintumėte subalansuotą ir patrauklų įgyvendinimą:

Vizualinis skirtumas

Labai svarbu aiškiai vizualiai atskirti galias, kolekcionuojamus daiktus ir kitus žaidimo elementus. Naudokite skirtingas spalvas, formas ar simbolius, kad žaidėjai juos lengvai atpažintų. Šis vizualinis aiškumas padeda žaidėjams nustatyti savo tikslus ir nustatyti jų prioritetus, todėl žaidimas tampa intuityvesnis ir malonesnis.

Balansas ir iššūkis

Stenkitės išlaikyti subalansuotą ir sudėtingą žaidimo patirtį. Pakoreguokite papildymų dažnį ir kolekcionuojamų iškvietimų dažnį, kad neužblokuotumėte žaidėjų arba kad žaidimas nebūtų pernelyg lengvas. Norint rasti tinkamą pusiausvyrą, reikia kruopščiai išbandyti ir kartoti.

Atsižvelkite į žaidėjų atsiliepimus ir tiksliai sureguliuokite gimimo dažnį, kad sukurtumėte patrauklią ir patenkinamą patirtį.

Atsiliepimai ir apdovanojimai

Tiesioginis grįžtamasis ryšys ir apdovanojimai, kai žaidėjai renka papildomus daiktus ar kolekcionuojamus daiktus, sustiprina pasiekimų jausmą ir motyvaciją. Apsvarstykite galimybę pridėti vaizdinių efektų, garso užuominų ar animacijos, kad parodytumėte sėkmingą įsigijimą.

Žaidėjų apdovanojimas taškais, papildomomis gyvybėmis arba specialių sugebėjimų atskleidimas suteikia dar daugiau įspūdžių ir skatina žaidėjus aktyviai ieškoti šių elementų.

Laikmačiai ir trukmė

Įdiekite įjungimo laikmačius ir trukmes, kad išlaikytumėte sąžiningumą ir strateginių sprendimų priėmimą. Įjungimų trukmė turėtų būti ribota, kad žaidėjai ilgą laiką nebūtų pervargę.

Labai svarbu subalansuoti trukmę, nes per trumpa trukmė gali jaustis nepakeliama, o per ilga gali išbalansuoti žaidimą. Išbandykite skirtingą trukmę, kad rastumėte tinkamą kiekvieno įjungimo vietą.

Išbandykite ir kartokite

Žaidimo testavimas yra gyvybiškai svarbus kūrimo proceso žingsnis. Kruopščiai išbandykite savo žaidimą naudodami skirtingas konfigūracijas ir sudėtingumo lygius, kad įsitikintumėte, jog galios papildymai ir kolekcionuojami daiktai yra tinkamai subalansuoti ir integruoti į žaidimą.

Atkreipkite dėmesį į žaidėjų atsiliepimus ir kartokite, remdamiesi jų patirtimi. Šis kartotinis metodas leidžia tiksliai sureguliuoti sistemą, sukuriant malonų ir žavingą žaidimo patirtį.

Padarykite žaidimus patrauklesnius su kolekcionuojamais daiktais

Pridėję prie savo Pygame projektų galios ir kolekcionuojamų daiktų, galite žymiai pagerinti bendrą žaidimo patirtį. Šie elementai pristato strateginius pasirinkimus, apdovanoja žaidėjus ir padidina motyvaciją. Kolekcionuojami daiktai gali būti naudojami naujoms funkcijoms, lygiams ar gebėjimams atrakinti, o papildymai suteikia laikinų pranašumų ir unikalios žaidimo mechanikos.

Kruopščiai sukūrę ir įdiegę šias funkcijas, galite sukurti žaidimus, kurie būtų įtraukesni, sudėtingesni ir malonesni žaidėjams.