From f420330f9007d7d641dc93de88c1858dfe1b7da4 Mon Sep 17 00:00:00 2001
From: Kopperoinen Paulus <paulus.j.kopperoinen@student.jyu.fi>
Date: Tue, 7 Nov 2023 12:36:13 +0200
Subject: [PATCH] =?UTF-8?q?Lis=C3=A4sin=20asetus=20-aliohjelman,=20josta?=
 =?UTF-8?q?=20voi=20vaihtaa=20pelin=20ominaisuuksia,=20seuraavana=20pit?=
 =?UTF-8?q?=C3=A4isi=20saada=20jotenkin=20aloitettua=20peli=20alusta.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Matopeli/Matopeli/Matopeli.cs | 90 ++++++++++++++++++++++++-----------
 1 file changed, 61 insertions(+), 29 deletions(-)

diff --git a/Matopeli/Matopeli/Matopeli.cs b/Matopeli/Matopeli/Matopeli.cs
index 21c0181..8057cfd 100644
--- a/Matopeli/Matopeli/Matopeli.cs
+++ b/Matopeli/Matopeli/Matopeli.cs
@@ -18,12 +18,12 @@ public class matopeli : PhysicsGame
 {
     private static readonly string[] tasonkuva = {
         "#####################",
-        "#o                  #",
         "#                   #",
         "#                   #",
         "#                   #",
         "#                   #",
         "#                   #",
+        "#         o         #",
         "#                   #",
         "#                   #",
         "#                   #",
@@ -39,52 +39,54 @@ public class matopeli : PhysicsGame
     private Objektit Mato;
     private Objektit Omena;
     private Objektit MatoMuu;
+    
     private Timer aikalaskuri;
+    public IntMeter pistelaskuri;
     
     public List<Vector> MatoSijainti = new List<Vector>();
     public List<PhysicsObject> MatoKeho = new List<PhysicsObject>();
 
-    public int leveys = 40;
-    public int korkeus = 40;
+    public int leveys;
+    public int korkeus;
+    public double Nopeus;
     
     private static readonly Image seinakuva = LoadImage("seina.png");
     private static readonly Image matopaakuva = LoadImage("matopaa.png");
     private readonly Image matokehokuva = LoadImage("matokeho.png");
     private readonly Image omenakuva = LoadImage("omena.png");
-    private readonly Image kenttatausta = LoadImage("kenttatausta.png");
     
-    private bool SuuntaYlos = false;
-    private bool SuuntaAlas = false;
-    private bool SuuntaOikea = false;
-    private bool SuuntaVasen = false;
+    private bool SuuntaYlos;
+    private bool SuuntaAlas;
+    private bool SuuntaOikea;
+    private bool SuuntaVasen;
 
-    private bool MatoLiikkunut = true;
+    private bool MatoLiikkunut;
 
-    private bool GameOver = false;
+    private bool GameOver;
 
     private bool OmenaKentalla = true;
     public override void Begin()
     {
-        // Kirjoita ohjelmakoodisi tähän
 
-        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
+
         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
+        ClearAll();
         AloitaUusiPeli();
         
     }
 
     public void AloitaUusiPeli()
     {
-        ClearAll();
+        Asetukset();
         TileMap tiles = TileMap.FromStringArray(tasonkuva);
         tiles['#'] = LuoSeina;
         tiles['o'] = LuoMato;
-        tiles.Insert(leveys,korkeus);
-        SuuntaAlas = true;
+        tiles.Insert(leveys,korkeus); ;
         Asetaohjaimet();
         LuoAikalaskuri();
+        LuoPistelaskuri();
         LuoOmena();
-        
+
     }
     private void Asetaohjaimet()
     {
@@ -92,15 +94,44 @@ public class matopeli : PhysicsGame
         Keyboard.Listen(Key.Down, ButtonState.Pressed, VaihdaSuuntaAlas, "Turn downwards");
         Keyboard.Listen(Key.Left, ButtonState.Pressed, VaihdaSuuntaVasen , "Turn left");
         Keyboard.Listen(Key.Right, ButtonState.Pressed, VaihdaSuuntaOikea, "Turn right");
+        Keyboard.Listen(Key.Enter, ButtonState.Pressed, Begin, "New Game");
+    }
+
+
+    void LuoPistelaskuri()
+    {
+        pistelaskuri = new IntMeter(0);               
+      
+        Label pistenaytto = new Label(); 
+        pistenaytto.X = Screen.Left + 500;
+        pistenaytto.Y = Screen.Top - 10;
+        pistenaytto.TextColor = Color.Black;
+        pistenaytto.Color = Color.White;
+
+        pistenaytto.BindTo(pistelaskuri);
+        Add(pistenaytto);
     }
 
+    private void Asetukset()
+    {
+    leveys = 40;
+    korkeus = 40;
+    SuuntaYlos = false;
+    SuuntaAlas = true;
+    SuuntaOikea = false; 
+    SuuntaVasen = false;
+    Nopeus = 0.1;
+    MatoLiikkunut = true;
+    GameOver= false;
+    }
+    
     private void MatoKuolee()
     {
         GameOver = true;
     }
     private PhysicsObject LuoMato()
     {
-        Mato = new Objektit(leveys, korkeus);
+        Mato = new Objektit(leveys-5, korkeus-5);
         Mato.Image = matopaakuva;
         Add(Mato);
         Mato.Tag = "mato";
@@ -121,17 +152,19 @@ public class matopeli : PhysicsGame
         int x = 0;
         int y = 0;
 
+        
+        ///Tarkistetaan ensin, ettei omena mene madon kehon kanssa päällekkäin
         for (int i = 0; i < MatoKeho.Count - 1; i++)
         {
-            x = RandomGen.NextInt(-300, 300);
-            y = RandomGen.NextInt(-300, 300);
+            x = RandomGen.NextInt(-320, 320);
+            y = RandomGen.NextInt(-320, 320);
 
             if (x - MatoKeho[i].X < 4)
             {
                 if (y - MatoKeho[i].Y < 4)
                 {
-                    x = RandomGen.NextInt(-300, 300);
-                    y = RandomGen.NextInt(-300, 300);
+                    x = RandomGen.NextInt(-320, 320);
+                    y = RandomGen.NextInt(-320, 320);
                 }
             }
         }
@@ -149,7 +182,7 @@ public class matopeli : PhysicsGame
         Vector paikka = new Vector(x, y);
         
         
-        Omena = new Objektit(korkeus, leveys);
+        Omena = new Objektit(korkeus-10, leveys-10);
         Omena.Shape = Shape.Circle;
         Omena.Position = paikka;
         Omena.Image = omenakuva;
@@ -161,6 +194,7 @@ public class matopeli : PhysicsGame
     private PhysicsObject LuoSeina()
     {
         PhysicsObject Seina = new PhysicsObject(leveys, korkeus);
+        Seina.MakeStatic();
         Seina.Color = Color.Green;
         Seina.Image = seinakuva;
         Seina.Tag = "seina";
@@ -172,11 +206,10 @@ public class matopeli : PhysicsGame
     /// </summary>
     public PhysicsObject LuoMatoKeho()
     {
-        MatoMuu = new Objektit(leveys-4, korkeus-4);
+        MatoMuu = new Objektit(leveys-6, korkeus-6);
         MatoMuu.Tag = "matokeho";
         MatoMuu.Image = matokehokuva;
-        Vector Paikka = MatoSijainti[MatoSijainti.Count - 1 - MatoKeho.Count];
-        MatoMuu.IgnoresCollisionResponse = true;
+        Vector Paikka = MatoSijainti[MatoSijainti.Count -1 - MatoKeho.Count];
         MatoMuu.Position = Paikka;
         Add(MatoMuu);
         MatoKeho.Add(MatoMuu);
@@ -189,6 +222,7 @@ public class matopeli : PhysicsGame
     private void MatoSyoOmenan()
     {
         Omena.Destroy();
+        pistelaskuri.Value += 1;
         OmenaKentalla = false;
     }
     
@@ -269,7 +303,7 @@ public class matopeli : PhysicsGame
      private void LuoAikalaskuri()
         {
             Timer aikalaskuri = new Timer();
-            aikalaskuri.Interval = 0.1;
+            aikalaskuri.Interval=Nopeus;
             aikalaskuri.Start();
             aikalaskuri.Timeout += PaivitaKentta;
         }
@@ -375,11 +409,9 @@ public class matopeli : PhysicsGame
         {
             Mass = 1000;
             IsUpdated = true;
+            IgnoresCollisionResponse = true;
         }
     }
-
-
-
 }
 
         
-- 
GitLab