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 = Totta

deflopettaa(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 koodi

deftauko(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.