Opi mittaamaan aikaa ja hallitsemaan sitä pelisi eri puolilla.
Pelikehityksessä aikaperusteisten tapahtumien lisääminen voi parantaa huomattavasti pelimekaniikkaa ja tehdä peleistä kiinnostavampia pelaajille. Sisällyttämällä ajastimia voit tuoda haasteita, luoda ajallisesti rajoitettuja tavoitteita tai lisätä tiettyihin pelielementteihin kiireellisyyttä.
Luo yksinkertainen peli
Aloita luomalla yksinkertainen peli ymmärtääksesi perusasiat. Rakenna peli, jossa pelaaja voi liikkua vasemmalle ja oikealle, ja siellä on yksi alusta. Luo uusi tiedosto nimeltä simple-game.py ja tuo arcade-moduuli, joka tarjoaa tarvittavat toiminnot pelin luomiseen.
Tässä artikkelissa käytetty koodi on saatavilla tässä GitHub-arkisto ja sen käyttö on ilmaista MIT-lisenssin alaisena.
Määritä seuraavaksi GameWindow luokka, joka on alaluokka pelihalli. Ikkuna. Määritä GameWindow-luokan sisällä __sen sisällä__ menetelmä, joka alustaa ikkunan määritetyllä leveydellä, korkeudella ja otsikolla.
The on_key_press menetelmä havaitsee vasemman tai oikean nuolinäppäimen painalluksen. Vasemman painallus pienenee
pelaaja_x 10 yksiköllä samalla kun painat oikeaa, se kasvaa 10 yksiköllä. Tämä antaa pelaajan liikkua vaakatasossa peliikkunassa.Pelin suorittamiseksi määritä päätoiminto, luo GameWindow-esiintymä, kutsu asetusmenetelmä peli-ikkunan määrittämiseksi ja lopuksi aloita pelisilmukka käyttämällä arcade.run().
Ajastinluokkarakenteen suunnittelu
Voit ottaa ajastimet käyttöön pelissäsi luomalla Timer-luokan, jossa on tarvittavat attribuutit ja menetelmät. Tämä luokka tarjoaa toimintoja ajastimen käynnistämiseen, pysäyttämiseen, kuluneen ajan hakemiseen ja sen tarkistamiseen, onko ajastin vanhentunut. Tässä on Ajastin-luokan perusrakenne:
tuonti aika
luokkaaAjastin:
def__sen sisällä__(itse, kesto):
itse.kesto = kesto
self.start_time = 0
self.is_running = Väärädefalkaa(itse):
self.start_time = aika.aika()
self.is_running = Tottadeflopettaa(itse):
self.is_running = Väärädefget_lapsed_time(itse):
jos self.is_running:
palata aika.aika() - itse.aloitusaika
palata0
defon_vanhentunut(itse):
palata self.get_elapsed_time() >= self.duration
Ajastinluokka kestää a kesto parametri sekunneissa alustuksen aikana. Luokka sisältää attribuutteja, kuten aloitusaika tallentaaksesi ajan, jolloin ajastin käynnistyi, ja juoksee seurataksesi ajastimen tilaa.
The alkaa() menetelmä asettaa alkamisajan nykyiseksi ajaksi käyttämällä aika.aika() ja asettaa is_running to Totta. The lopettaa() menetelmä yksinkertaisesti asettaa is_running -arvon Väärä. The get_elapsed_time() menetelmä laskee kuluneen ajan vähentämällä alkamisajan nykyisestä ajasta.
Jos ajastin on käynnissä, se palauttaa kuluneen ajan; muussa tapauksessa se palauttaa 0. The is_expired() menetelmä tarkistaa, onko kulunut aika suurempi tai yhtä suuri kuin kesto, mikä osoittaa, että ajastin on kulunut umpeen.
Ajastimen käyttöönotto
Esittääksesi lähtölaskennan pelissäsi, voit käynnistää ajastimen, kun pelaaja painaa tiettyä näppäintä, kuten välilyöntiä. Tulosta lähtölaskenta konsoliin Pythonin tulostuskomennolla. Luo uusi tiedosto nimeltä timer.py ja lisää koodi näiden päivitysten kanssa:
tuonti aika
luokkaaGameWindow(pelihalli. Ikkuna):
def__sen sisällä__(itse):
super().__init__(WIDTH, HEIGHT, "Yksinkertainen peli")
self.player_x = LEVEYS // 2
self.player_y = KORKEUS // 2
self.timer = Ajastin(10)defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. TILA:
self.timer.start()
defon_draw(itse):
# Olemassa oleva koodi
jos self.timer.is_running:
kulunut_aika = self.timer.get_elapsed_time()
r_time = self.timer.duration - kulunut_aika
jäljellä_aika = max (r_time, 0)
Tulosta(f"Ajastin: {jäljellä oleva aika:.1f} sekuntia")
Varmista, että näet pääteikkunan ja peliikkunan samanaikaisesti. Paina sitten välilyöntiä, niin näet ajastimen laskurin:
Ajastintapahtumien ja laukaisutoimintojen käsittely
Voit myös laukaista toiminnon, joka piirtää suorakulmion kun ajastin umpeutuu. Luo uusi tiedosto nimeltä hand-event.py ja lisää koodi alla olevilla päivityksillä:
defon_draw(itse):
# Olemassa oleva koodi
jos self.timer.is_expired():
self.draw_rectangle()
defpiirrä_suorakulmio(itse):
arcade.draw_rectangle_filled (LEVEYS // 2, HEIGHT // 2, 100, 100, punainen)
Alla on tulos:
Ajastimen keskeyttäminen, nollaus ja jatkaminen
Jos haluat lisätä toimintoja ajastimen keskeyttämiseen, nollaamiseen ja jatkamiseen, voit pidentää sitä Ajastin luokkaa sopivilla menetelmillä. Tässä on esimerkki:
luokkaaAjastin:
# Olemassa oleva koodideftauko(itse):
self.duration -= self.get_elapsed_time()
self.is_running = Väärädefnollaa(itse):
self.start_time = 0
self.is_running = Väärä
defjatkaa(itse):
self.start_time = aika.aika()
self.is_running = Totta
Visuaalisen palautteen lisääminen ajastimeen
Voit antaa visuaalista palautetta ajastimelle lisäämällä tekstiä tai graafisia elementtejä pelin näytölle. Luo uusi tiedosto nimeltä visual.py ja lisää koodi alla olevilla päivityksillä:
defon_draw(itse):
# Olemassa oleva koodi
jos self.timer.is_running:
teksti = f"Ajastin: {jäljellä oleva aika:.1f} sekuntia"
arcade.draw_text (teksti, 10, 10, musta, 18)
Näet nyt ajastimen suoraan peliikkunassa konsolin sijaan:
Sisältää lisäominaisuuksia
Voit parantaa aikaperusteisia tapahtumia entisestään ottamalla käyttöön seuraavat lisäominaisuudet peleissäsi.
Aikaperusteiset tehostukset tai bonukset
Esittele lisävoimia tai bonuksia, jotka ilmestyvät säännöllisesti pelin aikana. Nämä tehosteet voivat tarjota tilapäisiä kykyjä, lisäpisteitä, lisää nopeutta tai parempia aseita.
Tekemällä niistä aikarajoitetut, pelaajien on kerättävä ne strategisesti tietyn ajan kuluessa saadakseen etua. Tämä lisää jännitystä ja palkitsee nopean ajattelun.
Aikarajoitetut haasteet
Luo ajallisesti rajoitettuja haasteita, joissa pelaajien on suoritettava tehtävä tietyn ajan sisällä. Esimerkiksi palapeli tai tasohyppelyosio, joka vaatii ratkaisemisen tietyssä ajassa.
Tämä haastaa pelaajat ajattelemaan ja toimimaan nopeasti, mikä lisää jännittävän kiireellisen tunteen peliin. Näiden haasteiden onnistunut suorittaminen voi avata palkintoja tai edetä tarinassa.
Ajastetut esteet tai viholliset
Toteuta ajoitettuja esteitä tai vihollisia, jotka muodostavat uhan pelaajalle. Esimerkiksi liikkuvat alustat, jotka ilmestyvät ja katoavat säännöllisin väliajoin, tai viholliset, jotka tulevat voittamattomiksi rajoitetuksi ajaksi.
Pelaajien on ajoitettava toimintansa ja liikkeensä oikein navigoidakseen näillä esteillä tai voittaakseen viholliset ennen kuin aika loppuu. Tämä lisää strategiaa ja koordinaatiota peliin.
Parhaat käytännöt aikaperusteisiin tapahtumiin
Kun otat käyttöön aikaperusteisia tapahtumia peleissäsi, on tärkeää noudattaa näitä parhaita käytäntöjä.
Testi ja tasapaino
Testaa aikaperusteiset tapahtumasi perusteellisesti varmistaaksesi, että ne ovat oikeudenmukaisia ja tasapainoisia. Hienosäädä kestoa, vaikeutta ja palkintoja luodaksesi nautinnollisia pelikokemuksia.
Käyttäjien palaute
Anna pelaajille selkeää ja intuitiivista palautetta ajastimen tilasta ja kaikista aikaperusteisista tapahtumista. Äänitehosteiden lisääminen, visuaaliset osoittimet tai tekstilliset vihjeet voivat auttaa pelaajia ymmärtämään aikarajoitukset ja toimiensa seuraukset.
Johdonmukainen ajan mittaus
Käytä johdonmukaista ajanmittausjärjestelmää koko pelin ajan. Käytä esimerkiksi sekunteja kaikkien ajastimien ja aikaan liittyvien laskelmien yksikkönä. Tämä varmistaa johdonmukaisuuden ja helpon ymmärtämisen sekä pelaajille että kehittäjille.
Käsittele reunakoteloita
Harkitse skenaarioita, joissa peli saattaa olla keskeytetty, pienennetty tai käynnissä taustalla. Käsittele nämä tilanteet sulavasti säilyttääksesi tarkan ajoituksen ja estääksesi tahattoman toiminnan pelin jatkuessa.
Seuraamalla näitä parhaita käytäntöjä voit luoda aikaan perustuvia tapahtumia, jotka parantavat pelaamista, haastavat pelaajia ja tarjoavat tasapainoisen ja nautinnollisen kokemuksen.
Tee peleistä hauskempaa aikaperusteisilla tapahtumilla
Sisällyttämällä aikaan perustuvia tapahtumia peleihisi voit luoda pelaajille dynaamisen ja mukaansatempaavan kokemuksen. Ajallisesti rajoitetut haasteet lisäävät jännitystä ja kiireellisyyttä, kun taas ajoitetut tehot tai esteet voivat luoda strategisia päätöksentekomahdollisuuksia.
Kokeile erilaisia aikaperusteisia mekaniikkoja löytääksesi oikean tasapainon pelillesi, ja muista pelata testaus ja iteraatio maksimoidaksesi hauskuuden ja nautinnon.