From 53da685c07b5b29792162049a74d837bb24e9083 Mon Sep 17 00:00:00 2001
From: Kopperoinen Paulus <paulus.j.kopperoinen@student.jyu.fi>
Date: Thu, 2 Nov 2023 16:21:34 +0200
Subject: [PATCH] =?UTF-8?q?Peli=20alkaa=20olemaan=20jo=20loppusuoralla,=20?=
 =?UTF-8?q?mato=20liikkuu=20aikalailla=20niinkuin=20pit=C3=A4isi=20ja=20py?=
 =?UTF-8?q?s=C3=A4htyy=20jos=20se=20t=C3=B6rm=C3=A4=C3=A4.=20Omenat=20voiv?=
 =?UTF-8?q?at=20synty=C3=A4=20viel=C3=A4=20ruutujen=20puoleenv=C3=A4liin,?=
 =?UTF-8?q?=20mutta=20en=20tied=C3=A4=20haittaako=20se=20oikeastaan.=20Seu?=
 =?UTF-8?q?raavaksi=20pit=C3=A4isi=20saada=20uuden=20pelin=20aloittaminen?=
 =?UTF-8?q?=20toimimaan,=20jos=20mato=20kuolee.=20Lis=C3=A4sin=20my=C3=B6s?=
 =?UTF-8?q?=20pistelaskurin=20peliin.=20Ajattelin,=20ett=C3=A4=20voisi=20e?=
 =?UTF-8?q?hk=C3=A4=20luoda=20my=C3=B6s=20kent=C3=A4lle=20pohjav=C3=A4rit,?=
 =?UTF-8?q?=20jos=20jaksaa.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Matopeli/Matopeli/Matopeli.cs | 50 ++++++++++++++++++++++++++++-------
 1 file changed, 40 insertions(+), 10 deletions(-)

diff --git a/Matopeli/Matopeli/Matopeli.cs b/Matopeli/Matopeli/Matopeli.cs
index e06f8bd..21c0181 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;
         }
     }
-- 
GitLab