Läpsylintu, vaihe 5: Ajastimen pysäyttäminen¶
Edellisessä vaiheessa lisättiin peliin kuoleminen, mutta lintu jatkaa silti matkaansa oikealle. Korjataan pelaajaa liikuttava ajastin pysähtymään.
Ajastin attribuutiksi¶
Jotta voimme kutsua ajastimen Stop-metodia, täytyy viite ajastimeen pitää tallessa sopivassa muuttujassa.
Etsi Begin-aliohjelmasta kohta, jossa ajastin luodaan. Se näyttää seuraavalta.
Timer liikutusajastin = new Timer();
liikutusajastin.Interval = 0.01;
liikutusajastin.Timeout += SiirraPelaajaaOikeammalle;
liikutusajastin.Start();
Ensimmäisellä rivillä luodaan ajastin. Koska se on esitelty aliohjelmassa Begin, sitä ei voida käyttää myöhemmin muista aliohjelmista.
Siirretään ajastimen esittely Begin-aliohjelmasta Lapsylintu-luokan sisäpuolelle. Silloin ajastimeen pääsee käsiksi mistä tahansa luokan aliohjelmasta.
Poista ensin riviltä
ensimmäinen sana Timer, jotta jäljelle jää:
Silloin käytetään koko luokan liikutusajastin-nimistä muuttujaa, jos sellainen vain on olemassa. Luokan yhteistä muuttujaa kutsutaan attribuutiksi.
Esitellään liikutusajastin luokan Lapsylintu attribuuttina, eli sellaisena muuttujana, johon on pääsy kaikista aliohjelmista.
Lisää ennen Begin-aliohjelman esittelyriviä rivi:
Tässä vaiheessa kooditiedoston yläosa näyttää jotakuinkin tältä. Kaikki attribuutit eivät välttämättä ole sinulla samassa järjestyksessä, mutta se ei tässä tapauksessa haittaa.
public class Lapsylintu : PhysicsGame
{
private const double NOPEUS = 10000;
private const double HYPPYNOPEUS = 750;
private const int RUUDUN_KOKO = 40;
private PlatformCharacter pelaaja1;
private Image pelaajanKuva = LoadImage("lintu");
private Image[] pelaajanHyppykuvat = LoadImages("lapsy", "lintu");
private Image tahtiKuva = LoadImage("tahti");
private SoundEffect maaliAani = LoadSoundEffect("maali");
private bool peliKaynnissa = false;
private Timer liikutusajastin;
public override void Begin()
{
Testaa, toimiiko ohjelma vielä.
Kokeile käynnistää pelisi
Ajastimen pysäyttäminen¶
Etsi koodista aliohjelma TormaaTasoon. Se näyttää suunnilleen tältä:
void TormaaTasoon(PhysicsObject tormaaja, PhysicsObject kohde)
{
if (peliKaynnissa)
{
MessageDisplay.Add("Kuolit! :(");
Keyboard.Disable(Key.Up);
peliKaynnissa = false;
}
}
Lisää rivin Keyboard.Disable(Key.Up); jälkeen rivi:
Nyt kun pelaaja törmää seinään, hän kuolee.
Koska ajastin, joka kutsui päällä ollessaan pelaajaa oikeammalle työntävää aliohjelmaa, pysäytetään, myös pelaajan liike loppuu. Testaa koodisi.
Kokeile käynnistää pelisi