From 18246ccaa4c77fbd6afbdfc5b9ba12e6f377266e Mon Sep 17 00:00:00 2001
From: Kopperoinen Paulus <paulus.j.kopperoinen@student.jyu.fi>
Date: Wed, 1 Nov 2023 22:57:26 +0200
Subject: [PATCH] =?UTF-8?q?En=20tied=C3=A4=20n=C3=A4kyik=C3=B6=20toi=20ede?=
 =?UTF-8?q?llinen=20viesti=20mutta=20unohdin=20addata=20viime=20commitissa?=
 =?UTF-8?q?=20niin=20edellinen=20kommentti=20liittyi=20t=C3=A4h=C3=A4n=20c?=
 =?UTF-8?q?ommittiin,=20aion=20siis=20seuraavaksi=20luultavasti=20vaihtaa?=
 =?UTF-8?q?=20madon=20kehon=20fyysisest=C3=A4=20pelk=C3=A4ksi=20piirroksek?=
 =?UTF-8?q?si?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Matopeli/Matopeli/Matopeli.cs | 81 +++++++++++++++++++++--------------
 1 file changed, 49 insertions(+), 32 deletions(-)

diff --git a/Matopeli/Matopeli/Matopeli.cs b/Matopeli/Matopeli/Matopeli.cs
index 0762800..3de0e5f 100644
--- a/Matopeli/Matopeli/Matopeli.cs
+++ b/Matopeli/Matopeli/Matopeli.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Security.Cryptography.X509Certificates;
 using Jypeli;
 using Jypeli.Assets;
@@ -90,7 +91,7 @@ public class matopeli : PhysicsGame
     }
     private PhysicsObject LuoMato()
     {
-        Mato = new Objektit(leveys, korkeus, new Vector(0,0));
+        Mato = new Objektit(leveys, korkeus);
         Mato.Image = matopaakuva;
         Add(Mato);
         Mato.Tag = "mato";
@@ -107,40 +108,37 @@ public class matopeli : PhysicsGame
         
         Vector paikka = Level.GetRandomPosition();
 
-        for (int i = 0; i < 20; i++)
+        for (int i = 0; i < 100; i++)
         {
-            if (paikka.X-Mato.X<20)
+            if (paikka.X-Mato.X<5)
             {
-                if (paikka.Y-Mato.Y<20)
-                {
-                    paikka = Level.GetRandomPosition();
-                }
+                paikka = Level.GetRandomPosition();
             }
-            if (paikka.X<70)
+            if (paikka.X-Mato.Y<5)
             {
-                if (paikka.X<-70)
-                {
-                    paikka = Level.GetRandomPosition();
-                } 
+                paikka= Level.GetRandomPosition();
             }
-            else
+            if (paikka.X<30)
             {
-                paikka = Level.GetRandomPosition();
+                if (paikka.X < -30)
+                {
+                    paikka = Level.GetRandomPosition();
+                }
             }
-            if (paikka.Y<70)
+            if (paikka.Y<30)
             {
-                if (paikka.Y<-70)
+                if (paikka.Y<-30)
                 {
                     paikka = Level.GetRandomPosition();
                 } 
             }
             else
             {
-                paikka = Level.GetRandomPosition();
+                break;
             }
         }
         
-        Omena = new Objektit(korkeus, leveys, paikka);
+        Omena = new Objektit(korkeus, leveys);
         Omena.Shape = Shape.Circle;
         Omena.Position = paikka;
         Omena.Image = omenakuva;
@@ -163,10 +161,11 @@ public class matopeli : PhysicsGame
     /// </summary>
     private PhysicsObject LuoMatoKeho(Vector Paikka)
     {
-        MatoMuu = new Objektit(leveys, korkeus, Paikka);
+        MatoMuu = new Objektit(leveys, korkeus);
         MatoMuu.Tag = "matokeho";
         MatoMuu.Image = matokehokuva;
         MatoMuu.Position = Paikka;
+        MatoMuu.AngularDamping = 0.0;
         MatoKeho.Add(MatoMuu);
         Add(MatoMuu);
         return MatoMuu;
@@ -176,6 +175,7 @@ public class matopeli : PhysicsGame
     {
         Omena.Destroy();
         OmenaKentalla = false;
+        LuoMatoKeho(MatoSijainti[MatoSijainti.Count-MatoKeho.Count-1]);
     }
     
      private void VaihdaSuuntaYlos()
@@ -255,7 +255,7 @@ public class matopeli : PhysicsGame
      private void LuoAikalaskuri()
         {
             Timer aikalaskuri = new Timer();
-            aikalaskuri.Interval = 0.11;
+            aikalaskuri.Interval = 0.1;
             aikalaskuri.Timeout += PaivitaKentta;
             aikalaskuri.Start();
         }
@@ -269,19 +269,19 @@ public class matopeli : PhysicsGame
          //Tämän on tarkoitus liikuttaa matoa, aina, kun se saapuu tasalukuun.
          //tavoitteena oli,että mato ei liikkuisi, jos se on ruudun puolivälissä
          
-
-         MatoSijainti.Add(Mato.Position);
-         LiikutaMatoa();
-             
+         
          
          
          
          if (OmenaKentalla == false)
          {
-             LuoMatoKeho(MatoSijainti[MatoSijainti.Count-MatoKeho.Count-1]);
-             
              LuoOmena();
          }
+         LiikutaMatoa();
+         if (MatoKeho.Count>0)
+         {
+             LiikutaKehoa();    
+         }
          
      }
 
@@ -289,35 +289,52 @@ public class matopeli : PhysicsGame
     {
         if (SuuntaYlos==true)
         {
-            Mato.Y = Mato.Y + leveys;
+            Mato.Y = Mato.Y + leveys+5;
             Mato.Angle = Angle.FromDegrees(90);
+            
         }
         if (SuuntaAlas==true)
         {
-            Mato.Y= Mato.Y - leveys;
+            Mato.Y= Mato.Y - leveys+5;
             Mato.Angle = Angle.FromDegrees(270);
+            
         }
         if (SuuntaOikea==true)
         {
-            Mato.X= Mato.X + leveys;
+            Mato.X= Mato.X + leveys+5;
             Mato.Angle = Angle.FromDegrees(0);
+            
         }
         if (SuuntaVasen==true)
         {
-            Mato.X= Mato.X - leveys;
+            Mato.X= Mato.X - leveys+5;
             Mato.Angle = Angle.FromDegrees(180);
+            
         }
-
+        
+        MatoSijainti.Add(Mato.Position);
+        
     }
 
     /// <summary>
     /// Tehdään silmukka, joka käy madon kaikki sijainnit ja liikuttaa madon muut osat niiden mukaan.
     /// </summary>
 
+    private void LiikutaKehoa()
+    {
+        MatoKeho[0].X = MatoSijainti[MatoSijainti.Count - 2].X;
+        MatoKeho[0].Y = MatoSijainti[MatoSijainti.Count - 2].Y;
+        for (int i = 1; i < MatoKeho.Count-1; i++)
+        {
+            MatoKeho[i].X = MatoKeho[i - 1].X;
+            MatoKeho[i].Y = MatoKeho[i - 1].Y;
+        }
+    }
+
 
     public class Objektit : PhysicsObject
     {
-         public Objektit(double leveys, double korkeus, Vector paikka)
+         public Objektit(double leveys, double korkeus)
         : base(leveys, korkeus)
         {
             Mass = 10000;
-- 
GitLab