Jypelin käyttöohjeet» Miten saan peliin pistelaskurin? 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ä: pistenaytto.bindto(pistelaskuri); Add(pisteNaytto); Jypelin käyttöohjeet» Miten saan peliin pistelaskurin? 1
Lopuksi kutsutaan tätä kirjoittamaamme LuoPistelaskuri-aliohjelmaa pelin Begin-aliohjelmasta, jotta siinä oleva ohjelmakoodi tulee suoritetuksi. LuoPistelaskuri(); 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 IntMeter laskuri = new IntMeter(1) tai desimaaliluvuilla DoubleMeter laskuri = new DoubleMeter(1) Positiiviset ja negatiiviset kokonaisluvut IntMeter laskuri = new IntMeter(0, int.minvalue, int.maxvalue) Positiiviset ja negatiiviset desimaaliluvut DoubleMeter laskuri = new DoubleMeter(0, double.negativeinfinity, double.positiveinfinity) Lukuväli -100:sta 100:an oletusarvolla 10 kokonaisluvuilla IntMeter laskuri = new IntMeter(10, -100, 100) tai desimaaliluvuilla DoubleMeter laskuri = new DoubleMeter(10, -100, 100) Otsikko laskurille Usein on järkevää lisätä tekstikentällä otsikko, jotta tiedetään mitä laskuri ruudulla laskee. Tämä voidaan tehdä asettamalla teksti sen Title-ominaisuuteen: pistenaytto.title = "Pisteet"; Laskurin luominen 2
Nyt luomamme tekstikenttä näyttää tältä: Tarkempi otsikon määrittäminen Jos haluat vaikuttaa tarkemmin siihen, miltä laskurin arvo näyttää otsikossa, voit käyttää siihen C#:n?muotoilumerkkijonoja. pistenaytto.intformatstring = "Pisteitä: 0:D1"; 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 halutaan DoubleMeter, niin käytetään DoubleFormatString. Laskurin arvon muuttaminen Laskurin arvoa voidaan muuttaa sen Value-ominaisuudesta. Tämä kasvattaa laskurin arvoa yhdellä: pistelaskuri.value += 1; Tämä vähentää laskurin arvoa yhdellä: pistelaskuri.value -= 1; Tämä asettaa laskurin arvoksi arvon 5: pistelaskuri.value = 5; Laskurin arvon muuttaminen vähitellen Jos halutaan, että laskuri kasvaa vaikkapa viiden sekunnin aikana kolme yksikköä, voidaan sille sanoa pistelaskuri.addovertime(3, 5); 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. pistelaskuri.addovertime(-3, 5); Laskurin arvon nollaus Laskuri voidaan nollata eli palauttaa oletusarvoonsa seuraavalla käskyllä: Otsikko laskurille 3
pistelaskuri.reset(); 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); laskuri.maxvalue = 5; laskuri.upperlimit += KaikkiKeratty; Tässä tapahtuman kä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". void KaikkiKeratty() MessageDisplay.Add("Pelaaja 1 voitti pelin."); Vastaavasti voidaan tehdä alarajalle: IntMeter pelaajanelamat = new IntMeter(3); laskuri.minvalue = 0; laskuri.lowerlimit += PelaajaHaviaa; missä tapahtumankäsittelijä voi olla esimerkiksi void PelaajaHaviaa() MessageDisplay.Add("Pelaaja 1 hävisi pelin."); 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. Laskurin arvon nollaus 4
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. laskuri.lowerlimit -= PelaajaHaviaa; laskuri.upperlimit -= PelaajaVoittaa; AddTrigger-metodilla lisätyt tapahtumat voidaan poistaa RemoveTriggers-metodilla antamalla parametriksi joko aliohjelman nimi tai pisteraja. laskuri.removetriggers(9000); tai laskuri.removetriggers(soitaaani); Kaikki triggerit saa pois ClearTriggers-aliohjelmalla laskuri.cleartriggers(); Muut tapahtumat 5