Pistelaskuri¶
Pistelaskurin saamiseksi tarvitaan kaksi osaa:
- Laskuri, joka laskee pisteitä
- Olio, joka näyttää pisteet ruudulla
Laskuri voi olla esimerkiksi tyyppiä IntMeter tai DoubleMeter. IntMeter laskee kokonaislukuja ja DoubleMeter desimaalilukuja. Muuten niiden käyttö ei oikeastaan eroa toisistaan. Tässä esimerkissä tehdään IntMeter-tyyppinen laskuri ja kiinnitetään se Label-tyyppiseen olioon, joka osaa näyttää ruudulla laskurin arvon.
Laskurin luominen¶
Tehdään ensin yksinkertainen esimerkki pistelaskurista ja sen näytöstä:
IntMeter pistelaskuri;
void LuoPistelaskuri()
{
pistelaskuri = new IntMeter(0);
Label pistenaytto = new Label();
pistenaytto.X = Screen.Left + 100;
pistenaytto.Y = Screen.Top - 100;
pistenaytto.TextColor = Color.Black;
pistenaytto.Color = Color.White;
pistenaytto.BindTo(pistelaskuri);
Add(pistenaytto);
}
Ensin luodaan IntMeter-tyyppinen laskuri (huom. se on tässä esimerkissä attribuuttina) ja Label-tyyppinen tekstikenttä ja tehdään niille halutut asetukset. Tekstikentästä ei tarvitse tehdä attribuuttia, jos sen paikkaa, väriä tai muuta ominaisuutta ei muuteta sen luomisen jälkeen.
Tekstikentän tekstin väriä voi muuttaa TextColor-ominaisuudesta, jotta se erottuu paremmin. Color-ominaisuus asettaa tekstikentälle taustavärin, jos sellainen halutaan. Oletustaustaväri on läpinäkyvä, eli Color.Transparent.
Laskurin luonnissa parametrina annetaan sen oletusarvo, eli mistä arvosta laskuri lähtee liikkeelle (tässä laskuri lähtee nollasta).
Lopuksi pitää muistaa kiinnittää laskuri tekstikenttään. Silloin tekstikenttä osaa automaattisesti näyttää laskurin arvon, vaikka arvo muuttuukin. Lopuksi vielä lisätään tekstikenttä ruudulle Add-kutsulla. Esimerkissä tehtiin nämä asiat riveillä:
Lopuksi kutsutaan tätä kirjoittamaamme LuoPistelaskuri-aliohjelmaa pelin Begin-aliohjelmasta, jotta siinä oleva ohjelmakoodi tulee suoritetuksi.
Laskurin laskentaväli¶
Oletuksena laskuri voi saada arvoja nollasta ylöspäin niin pitkälle kuin lukualuetta riittää. Laskurin oletusarvo, eli arvo, josta se aloittaa, on 0. Näitä kaikkia voidaan muuttaa parametreilla haluttaessa.
Esimerkiksi jos laskurin halutaan saavan myös negatiivisia arvoja, on sille alustettaessa annettava parametrina negatiivinen minimiarvo.
Aloittaminen arvosta 1¶
kokonaisluvuilla
tai desimaaliluvuilla
Positiiviset ja negatiiviset kokonaisluvut¶
Positiiviset ja negatiiviset desimaaliluvut¶
Lukuväli -100:sta 100:aan oletusarvolla 10¶
kokonaisluvuilla
tai desimaaliluvuilla
Otsikko laskurille¶
Usein on järkevää lisätä tekstikentälle otsikko, jotta tiedetään, mitä laskuri ruudulla laskee. Tämä voidaan tehdä asettamalla teksti sen Title-ominaisuuteen:
Nyt luomamme tekstikenttä näyttää myös otsikon.
Tarkempi otsikon määrittäminen¶
Jos haluat vaikuttaa tarkemmin siihen, miltä laskurin arvo näyttää otsikossa, voit käyttää siihen C#:n muotoilumerkkijonoja.
Samoin jos Labelille annetaan taustaväri, voi esim. formaatilla " Pisteitä: {0:D1} " laittaa tyhjän molemmin puolin tekstiä. Muoto D3 tulostaisi laskurin aina niin, että siinä on vähintään kolme numeroa, esim. 005.
Vastaavasti jos laskuri on DoubleMeter, käytetään DoubleFormatString-ominaisuutta, esim. pistenaytto.DoubleFormatString = "{0:N5}"; näyttäisi viisi desimaalia.
Laskurin arvon muuttaminen¶
Laskurin arvoa voidaan muuttaa sen Value-ominaisuudesta.
Tämä kasvattaa laskurin arvoa yhdellä:
Tämä vähentää laskurin arvoa yhdellä:
Tämä asettaa laskurin arvoksi arvon 5:
Laskurin arvon muuttaminen vähitellen¶
Jos halutaan, että laskuri kasvaa vaikkapa viiden sekunnin aikana kolme yksikköä, voidaan sille sanoa
Haluttaessa kolmanneksi parametriksi voidaan antaa aliohjelman nimi, joka suoritetaan, kun lisäys on tehty. Näin saadaan helposti tehtyä esimerkiksi erilaisia voimamittareita.
Mittarista voidaan myös vähentää samalla periaatteella käyttämällä negatiivista arvoa.
Laskurin arvon nollaus¶
Laskuri voidaan nollata eli palauttaa oletusarvoonsa seuraavalla käskyllä:
Laskurin ylä- ja alarajat sekä tapahtumat niille¶
Pistelaskuriin voi myös lisätä tapahtuman, kun se saavuttaa sille asetetun suurimman tai pienimmän arvon. Tapahtuman kuuntelu tehdään näin:
IntMeter keratytEsineet = new IntMeter(0);
keratytEsineet.MaxValue = 5;
keratytEsineet.UpperLimit += KaikkiKeratty;
Tässä tapahtumankäsittelijän KaikkiKeratty suoritukseen siirrytään, kun laskuri saavuttaa suurimman arvonsa (5).
Tapahtumankäsittelijä on yksinkertainen aliohjelma ilman parametreja. Seuraava aliohjelma näyttää tekstin "Pelaaja 1 voitti pelin".
Vastaavasti voidaan tehdä alarajalle:
IntMeter pelaajanElamat = new IntMeter(3);
pelaajanElamat.MinValue = 0;
pelaajanElamat.LowerLimit += PelaajaHaviaa;
missä tapahtumankäsittelijä voi olla esimerkiksi
Muut tapahtumat¶
Ylä- ja alaraja eivät ole ainoita arvoja, joita voidaan tarkkailla. Mille tahansa mittarin arvolle voi asettaa tapahtumia AddTrigger-metodin avulla. Seuraava esimerkki soittaa äänen, kun pelaaja saa yli 9000 pistettä:
pistelaskuri.AddTrigger(9000, TriggerDirection.Up, SoitaAani);
...
void SoitaAani()
{
PlaySound("OVER NINE THOUSAND");
}
AddTrigger-aliohjelman ensimmäinen parametri on luonnollisesti mittarin arvo, ja kolmanneksi annetaan aliohjelma, jonka tapahtuma laukaisee.
Toinen parametri määrää, kummasta suunnasta tultaessa tapahtuma suoritetaan. Esimerkiksi yllä olevassa esimerkissä mittarin laskiessa arvon 9000 alapuolelle ääntä ei soiteta. Sallitut arvot ovat TriggerDirection.Up (mittarin arvo kasvaa), TriggerDirection.Down (mittarin arvo vähenee) ja TriggerDirection.Irrelevant (ei väliä, suoritetaan kummassakin tapauksessa).
Tapahtumien poistaminen¶
Rajatapahtumat voidaan poistaa -=-operaattorilla.
AddTrigger-metodilla lisätyt tapahtumat voidaan poistaa RemoveTriggers-metodilla antamalla parametriksi joko aliohjelman nimi tai pisteraja.
tai
Kaikki triggerit saa pois ClearTriggers-aliohjelmalla
Katso myös¶
- Teksti ruudulla: näytön sijoittaminen ja ulkonäkö.
- Etenemispalkki: laskurin arvo palkkina.
- Törmäysten käsittely: pisteiden lisääminen törmäyksessä.
- Parhaat pisteet: pisteiden tallentaminen listaan.