Matopeli - vaihe 5

Tässä vaiheessa lisätään peliin toinen mato ohjattavaksi.

Valmistelut toista pelaajaa varten

Etsi koodista kohta, jossa määritellään ensimmäinen pelaaja attribuutiksi. Se näyttää tältä:

Mato pelaaja;

Kirjoita sen perään toinen muuttuja pelaaja2. Myös se on tyyppiä Mato. Lopputulos näyttää tältä:

Mato pelaaja;
Mato pelaaja2;

Etsi kohta, jossa kutsutaan LuoMato-aliohjelmaa:

    void LuoKentta()
    {
        LuoMato("pelaaja1", new Vector(0, 0));

Tehdään toinen vastaavanlainen kutsurivi, mutta vaihdetaan tägiksi "pelaaja2". Lopputulos näyttää tältä:

    LuoMato("pelaaja1", new Vector(0, 0));
    LuoMato("pelaaja2", new Vector(0, 0));

Voit kokeilla tässä vaiheessa miltä peli näyttää painamalla F5.

Molempien pelaaja-muuttujien käyttäminen

Tällä hetkellä peli tallentaa aina luodun madon muuttujaan pelaaja1 riippumatta siitä monennettako matoa ollaan luomassa tai mikä madon tägiksi tulee.

Korjataan aliohjelmaa LuoMato niin, että se palauttaa jokaisen luontikerran lopussa luodun Mato-olion. Näin voimme kutsupäässä tallentaa sen haluamaamme muuttujaan.

Etsi aliohjelman LuoMato esittelyrivi:

void LuoMato(string tag, Vector paikka)

Korvaa palautustyyppi void muuttujatyypiksi Mato:

Mato LuoMato(string tag, Vector paikka)

LuoMato-aliohjelman alussa on seuraava komento:

pelaaja = new Mato();

Se tarkoittaa, että attribuuttina olevaan (Begin-aliohjelman yläpuolella luokan sisään määriteltyyn) muuttujaan nimeltä pelaaja tehdään uusi Mato-olio.

Vaihdetaan kuitenkin attribuuttimuuttujan pelaaja tilalle tähän kohtaan aliohjelman oma paikallinen muuttuja, jonka tyyppinä on Mato ja nimenä pelaaja. Muuttujan nimi on siis samanlainen, mutta enää se ei ole sama aiemmin esitelty pelaaja-niminen attribuutti. Käytännössä siis lisätään rivin eteen sana Mato:

Mato pelaaja = new Mato();

Siirry LuoMato-aliohjelman loppuun ja lisää ennen sen lopettavaa }-aaltosuljetta seuraava return-rivi:

return pelaaja;

Toisen pelaajan värin vaihtaminen

Hyvä, toinen pelaaja ilmestyy myös pelikentälle, mutta se on samanlainen kuin ykköspelaajan mato! Sitä ei vielä voi edes liikuttaa, mutta korjataan ennen näppäinten lisäämistä ohjelmakoodiamme niin, että toinen mato on oikean värinen.

Etsi attribuuteissa olevat ykköspelaajan kuvat:

    Image paaKuva1 = LoadImage("pelaaja1paa");
    Image hantaKuva1 = LoadImage("pelaaja1hanta");

Lisää niiden perään kakkospelaajaa varten vastaavat kuvat:

    Image paaKuva2 = LoadImage("pelaaja2paa");
    Image hantaKuva2 = LoadImage("pelaaja2hanta");

Lopputulos näyttää siis suunnilleen tältä:

    Image paaKuva1 = LoadImage("pelaaja1paa");
    Image hantaKuva1 = LoadImage("pelaaja1hanta");

    Image paaKuva2 = LoadImage("pelaaja2paa");
    Image hantaKuva2 = LoadImage("pelaaja2hanta");

Näitä olemassa olleita kuvia paaKuva1 ja hantaKuva1 käytetään tällä hetkellä aliohjelmassa LuoMato.

LuoMato-aliohjelman muokkaaminen niin, että kuvia voi käyttää siinä

Muokataan aliohjelmaa LuoMato sellaiseksi, että sen kutsuvaiheessa voidaan viedä parametrina kuvat pääpalalle ja häntäpalalle. Näin voimme eri matojen kohdalla käskeä aliohjelmaa käyttämään eri kuvia.

Etsi aiemmin muokkaamasi LuoMato-aliohjelman esittelyrivi. Se näyttää tältä:

Mato LuoMato(string tag, Vector paikka)

Lisää sen parametrilistaan muuttujat pään kuvaa ja hännän kuvaa varten:

Mato LuoMato(string tag, Vector paikka, Image paaKuva, Image hantaKuva)

Vaihda aliohjelman sisällä olevista riveistä muuttujista madon numeroihin viittaavat numerot pois. Etsi siis seuraavat rivit:

    pelaaja.PaaKuva = paaKuva1;
    pelaaja.HantaKuva = hantaKuva1;

ja korvaa ne näillä:

    pelaaja.PaaKuva = paaKuva;
    pelaaja.HantaKuva = hantaKuva;

Nyt aliohjelma käyttää parametreina tuotuja kuvia, olivatpa ne sitten minkänumeroisen madon kuvia tahansa.

Aliohjelman kutsumiskohdat ovat kuitenkin virheilmoituksen mukaan nyt rikki. Korjataan aliohjelman kutsut oikeanlaisiksi.

Voit tuplaklikata Error List -ikkunassa näkyviä virheilmoituksia päästäksesi suoraan oikeille riveille.

Aliohjelman kutsuminen oikeilla parametreilla

Etsi rivit:

    pelaaja = LuoMato("pelaaja1", new Vector(0, 0));
    pelaaja2 = LuoMato("pelaaja2", new Vector(0, 0));

Lisää LuoMato-aliohjelmalle viimeisiksi parametreiksi matoja vastaavat kuvat:

    pelaaja = LuoMato("pelaaja1", new Vector(0, 0), paaKuva1, hantaKuva1);
    pelaaja2 = LuoMato("pelaaja2", new Vector(0, 0), paaKuva2, hantaKuva2);

Kokeile ohjelmaa painamalla F5.

Toisen madon ohjaimet

Nyt toinen mato on jo ruudulla oikean näköisenä, mutta sitä ei vieläkään voi liikuttaa. Ensimmäisen madon ohjaimet asetettiin AsetaOhjaimet-nimisessä aliohjelmassa. Etsi se, ja lisää näppäimet myös toiselle madolle! Muista, että parametrina pitää viedä pelaaja2 eikä pelaajaa.

    void AsetaOhjaimet()
    {
        Keyboard.Listen(Key.Left, ButtonState.Down, Liiku, null, pelaaja, new Vector(-1, 0));
        Keyboard.Listen(Key.Right, ButtonState.Down, Liiku, null, pelaaja, new Vector(1, 0));
        Keyboard.Listen(Key.Up, ButtonState.Down, Liiku, null, pelaaja, new Vector(0, 1));
        Keyboard.Listen(Key.Down, ButtonState.Down, Liiku, null, pelaaja, new Vector(0, -1));

        Keyboard.Listen(Key.A, ButtonState.Down, Liiku, null, pelaaja2, new Vector(-1, 0));
        Keyboard.Listen(Key.D, ButtonState.Down, Liiku, null, pelaaja2, new Vector(1, 0));
        Keyboard.Listen(Key.W, ButtonState.Down, Liiku, null, pelaaja2, new Vector(0, 1));
        Keyboard.Listen(Key.S, ButtonState.Down, Liiku, null, pelaaja2, new Vector(0, -1));

        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
    }

Tässä esimerkissä toiselle madolle lisättiin nuolinäppäimiä vastaavat WASD-näppäimet. Jos haluat käyttää eri näppäimiä, vaihda niiden nimet esimerkin näppäimien tilalle.

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.