diff --git a/Matopeli/Matopeli/Matopeli.cs b/Matopeli/Matopeli/Matopeli.cs index e06f8bd1c9a6c1f30dd439bcd63ae6acc5603e77..21c0181490d82ed0b6abde9ddc1a3f84f1ec426c 100644 --- a/Matopeli/Matopeli/Matopeli.cs +++ b/Matopeli/Matopeli/Matopeli.cs @@ -18,11 +18,11 @@ public class matopeli : PhysicsGame { private static readonly string[] tasonkuva = { "#####################", + "#o #", "# #", "# #", "# #", "# #", - "# o #", "# #", "# #", "# #", @@ -39,6 +39,7 @@ public class matopeli : PhysicsGame private Objektit Mato; private Objektit Omena; private Objektit MatoMuu; + private Timer aikalaskuri; public List<Vector> MatoSijainti = new List<Vector>(); public List<PhysicsObject> MatoKeho = new List<PhysicsObject>(); @@ -59,6 +60,8 @@ public class matopeli : PhysicsGame private bool MatoLiikkunut = true; + private bool GameOver = false; + private bool OmenaKentalla = true; public override void Begin() { @@ -90,13 +93,22 @@ public class matopeli : PhysicsGame Keyboard.Listen(Key.Left, ButtonState.Pressed, VaihdaSuuntaVasen , "Turn left"); Keyboard.Listen(Key.Right, ButtonState.Pressed, VaihdaSuuntaOikea, "Turn right"); } + + private void MatoKuolee() + { + GameOver = true; + } private PhysicsObject LuoMato() { Mato = new Objektit(leveys, korkeus); Mato.Image = matopaakuva; Add(Mato); Mato.Tag = "mato"; + AddCollisionHandler(Mato, "omena", delegate(IPhysicsObject Mato, IPhysicsObject Omena) {MatoSyoOmenan(); }); + AddCollisionHandler(Mato, "seina", delegate(IPhysicsObject Mato, IPhysicsObject seina) {MatoKuolee(); }); + AddCollisionHandler(Mato, "matokeho", delegate(IPhysicsObject Mato, IPhysicsObject matokeho) {MatoKuolee(); }); + return Mato; } @@ -148,7 +160,7 @@ public class matopeli : PhysicsGame } private PhysicsObject LuoSeina() { - PhysicsObject Seina = PhysicsObject.CreateStaticObject(leveys, korkeus); + PhysicsObject Seina = new PhysicsObject(leveys, korkeus); Seina.Color = Color.Green; Seina.Image = seinakuva; Seina.Tag = "seina"; @@ -258,33 +270,51 @@ public class matopeli : PhysicsGame { Timer aikalaskuri = new Timer(); aikalaskuri.Interval = 0.1; - aikalaskuri.Timeout += PaivitaKentta; aikalaskuri.Start(); + 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. - /// + /// + /// GameOver tarkistaa, että onko mato kuollut /// </summary> private void PaivitaKentta() { + + if (GameOver == true) + { + PaataPeli(); + } + if (MatoLiikkunut == false) { return; } + if (OmenaKentalla == false) { LuoMatoKeho(); LuoOmena(); } - MatoSijainti.Add(new Vector(Mato.X,Mato.Y)); - LiikutaMatoa(); - LiikutaKehoa(); - MatoSijainti.Add(new Vector(Mato.X,Mato.Y)); + if (GameOver == false) + { + MatoSijainti.Add(new Vector(Mato.X,Mato.Y)); + LiikutaMatoa(); + LiikutaKehoa(); + MatoSijainti.Add(new Vector(Mato.X,Mato.Y)); + } } - + /// <summary> + /// tehdään ohjelma, joka päättää pelin. + /// </summary> + private void PaataPeli() + { + + } + private void LiikutaMatoa() { MatoLiikkunut = false; @@ -343,7 +373,7 @@ public class matopeli : PhysicsGame public Objektit(double leveys, double korkeus) : base(leveys, korkeus) { - Mass = 0; + Mass = 1000; IsUpdated = true; } }