diff --git a/Matopeli/Matopeli/Matopeli.cs b/Matopeli/Matopeli/Matopeli.cs index fba91822c9911f8a3325939fef5708490b99fc51..a6b886bdb928c88302428b40794553289a7fe133 100644 --- a/Matopeli/Matopeli/Matopeli.cs +++ b/Matopeli/Matopeli/Matopeli.cs @@ -9,11 +9,12 @@ using Jypeli.Widgets; namespace matopeli; -/// @author Omanimi +/// @author Paulus Kopperoinen /// @version 30.10.2023 /// <summary> -/// +/// Perinteinen matopeli, jossa tavoitteena kasvattaa matoa mahdollisimman suureksi omenia syömällä. /// </summary> + public class matopeli : PhysicsGame { private static readonly string[] tasonkuva = { @@ -65,11 +66,17 @@ public class matopeli : PhysicsGame private bool MatoLiikkunut; private bool OmenaKentalla; + + public override void Begin() { AloitaUusiPeli(); } + + /// <summary> + /// Poistaa vanhan pelin tiedot ja alustaa uuden pelin + /// </summary> public void AloitaUusiPeli() { MatoKeho.Clear(); @@ -84,10 +91,13 @@ public class matopeli : PhysicsGame Asetaohjaimet(); LuoAikalaskuri(); LuoPistelaskuri(); - //LuoEnnatyslaskuri(); LuoOmena(); - } + + + /// <summary> + /// Määrittää ohjaimet, joita pelaaja voi käyttää ja mitä niitä painamalla tapahtuu + /// </summary> private void Asetaohjaimet() { Keyboard.Listen(Key.Up, ButtonState.Pressed, VaihdaSuuntaYlos, "Turn upwards"); @@ -98,6 +108,9 @@ public class matopeli : PhysicsGame } + /// <summary> + /// Laskee pisteet, joita kerätään omenoita syömällä + /// </summary> void LuoPistelaskuri() { pistelaskuri = new IntMeter(0); @@ -112,22 +125,11 @@ public class matopeli : PhysicsGame pistenaytto.BindTo(pistelaskuri); Add(pistenaytto); } + - void LuoEnnatyslaskuri() - { - Ennatyslaskuri = new IntMeter(0); - - Label Ennatys = new Label(); - Ennatys.X = Screen.Left + 700; - Ennatys.Y = Screen.Top - 10; - Ennatys.TextColor = Color.Black; - Ennatys.Color = Color.White; - Ennatys.Title = "Ennätys:"; - - Ennatys.BindTo(Ennatyslaskuri); - Add(Ennatys); - } - + /// <summary> + /// Pelin asetukset + /// </summary> private void Asetukset() { leveys = 40; @@ -141,10 +143,19 @@ public class matopeli : PhysicsGame OmenaKentalla = true; } + + /// <summary> + /// Päättää pelin ja aloitaa uuden, kun mato kuolee + /// </summary> private void MatoKuolee() { AloitaUusiPeli(); } + + /// <summary> + /// Luo madon kentälle + /// </summary> + /// <returns></returns> private PhysicsObject LuoMato() { Mato = new Objektit(leveys-5, korkeus-5); @@ -159,6 +170,7 @@ public class matopeli : PhysicsGame return Mato; } + /// <summary> /// Luodaan omena johonkin satunnaiseen kohtaan kartalla, joka ei ole samassa kohtaa madon kanssa. /// </summary> @@ -176,6 +188,11 @@ public class matopeli : PhysicsGame return Omena; } + + /// <summary> + /// tehtävä on arpoa omenalle paikka, johon se luodaan. En ole vieläkään varma kuinka hyvin tämä toimii. + /// </summary> + /// <returns></returns> private Vector ArvoOmenaPaikka() { Vector OmenaPaikka; @@ -218,6 +235,10 @@ public class matopeli : PhysicsGame } + /// <summary> + /// Luo kentän reunat + /// </summary> + /// <returns></returns> private PhysicsObject LuoSeina() { PhysicsObject Seina = new PhysicsObject(leveys, korkeus); @@ -228,6 +249,7 @@ public class matopeli : PhysicsGame return Seina; } + /// <summary> /// Tehdään aliohjelma, joka luo uusia osia madon perään. /// </summary> @@ -243,6 +265,10 @@ public class matopeli : PhysicsGame return MatoMuu; } + + /// <summary> + /// Tekee tarvittavat toimet, kun mato onnistuu syömään omenan + /// </summary> private void MatoSyoOmenan() { Omena.Destroy(); @@ -250,6 +276,10 @@ public class matopeli : PhysicsGame OmenaKentalla = false; } + + /// <summary> + /// Antaa tiedon LiikutaMatoa aliohjelmalle, että madon pitäisi kääntyä ylös. + /// </summary> private void VaihdaSuuntaYlos() { @@ -269,6 +299,10 @@ public class matopeli : PhysicsGame } } + + /// <summary> + /// Antaa tiedon LiikutaMatoa aliohjelmalle, että madon pitäisi kääntyä alas. + /// </summary> private void VaihdaSuuntaAlas() { if (SuuntaYlos==true) @@ -286,7 +320,11 @@ public class matopeli : PhysicsGame SuuntaAlas = true; } } - + + + /// <summary> + /// Antaa tiedon LiikutaMatoa aliohjelmalle, että madon pitäisi kääntyä oikeaan. + /// </summary> private void VaihdaSuuntaOikea() { if (SuuntaVasen == true) @@ -306,7 +344,11 @@ public class matopeli : PhysicsGame } } - + + + /// <summary> + /// Antaa tiedon LiikutaMatoa aliohjelmalle, että madon pitäisi kääntyä vasempaan. + /// </summary> private void VaihdaSuuntaVasen() { if (SuuntaOikea==true) @@ -324,6 +366,11 @@ public class matopeli : PhysicsGame SuuntaAlas = false; } } + + + /// <summary> + /// Aikalaskuri toimii pelin moottorina ja antaa PaivitaKentälle tiedon, kun pitää tarkistaa mitä kentällä on tapahtunut. + /// </summary> private void LuoAikalaskuri() { Timer aikalaskuri = new Timer(); @@ -332,6 +379,7 @@ public class matopeli : PhysicsGame aikalaskuri.Timeout += PaivitaKentta; } + /// <summary> /// Kun ajastimesta loppuu aika, siirtyy peli tähän funktioon, jonka tarkoituksena on hahmottaa, mitä kaikkea pelissä on tapahtunut ja miten siihen tulee reagoida. /// </summary> @@ -347,15 +395,17 @@ public class matopeli : PhysicsGame LuoMatoKeho(); LuoOmena(); } - - + MatoSijainti.Add(new Vector(Mato.X,Mato.Y)); LiikutaMatoa(); LiikutaKehoa(); MatoSijainti.Add(new Vector(Mato.X,Mato.Y)); - } + + /// <summary> + /// LiikutaMatoa aliohjelman tehtävä on selvittää tieto siitä, mihin suuntaan on tarkoitus liikkua ja liikuttaa matoa siihen suuntaan. + /// </summary> private void LiikutaMatoa() { MatoLiikkunut = false; @@ -385,10 +435,10 @@ public class matopeli : PhysicsGame MatoLiikkunut = true; } + /// <summary> - /// Tehdään silmukka, joka käy madon kaikki sijainnit ja liikuttaa madon muut osat niiden mukaan. + /// Liikutakehoa, aliohjelman tehtävänä on liikuttaa madon kehoa sen pään mukaisesti. /// </summary> - private void LiikutaKehoa() { if (MatoKeho.Count==0)