From b9e8995a1f7fc24d7fb5fdd0d999a84627cd01f3 Mon Sep 17 00:00:00 2001 From: Kopperoinen Paulus <paulus.j.kopperoinen@student.jyu.fi> Date: Thu, 2 Nov 2023 09:45:33 +0200 Subject: [PATCH] =?UTF-8?q?Sain=20vihdoinkin=20liikkumisen=20toimimaan=20k?= =?UTF-8?q?unnolla.=20Ongelma=20oli=20ollut=20silmukassa.=20Seuraavaksi=20?= =?UTF-8?q?aion=20tehd=C3=A4=20kuolemisaliohjelman?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Matopeli/Matopeli/Matopeli.cs | 76 +++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 35 deletions(-) diff --git a/Matopeli/Matopeli/Matopeli.cs b/Matopeli/Matopeli/Matopeli.cs index 3de0e5f..86a3411 100644 --- a/Matopeli/Matopeli/Matopeli.cs +++ b/Matopeli/Matopeli/Matopeli.cs @@ -43,8 +43,8 @@ public class matopeli : PhysicsGame 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 = 30; + public int korkeus = 30; private static readonly Image seinakuva = LoadImage("seina.png"); private static readonly Image matopaakuva = LoadImage("matopaa.png"); @@ -57,6 +57,8 @@ public class matopeli : PhysicsGame private bool SuuntaOikea = false; private bool SuuntaVasen = false; + private bool MatoLiikkunut = true; + private bool OmenaKentalla = true; public override void Begin() { @@ -159,15 +161,19 @@ public class matopeli : PhysicsGame /// <summary> /// Tehdään aliohjelma, joka luo uusia osia madon perään. /// </summary> - private PhysicsObject LuoMatoKeho(Vector Paikka) + public PhysicsObject LuoMatoKeho() { - MatoMuu = new Objektit(leveys, korkeus); + MatoMuu = new Objektit(leveys-8, korkeus-8); MatoMuu.Tag = "matokeho"; MatoMuu.Image = matokehokuva; + Vector Paikka = MatoSijainti[MatoSijainti.Count - 1 - MatoKeho.Count]; + MatoMuu.IgnoresCollisionResponse = true; MatoMuu.Position = Paikka; - MatoMuu.AngularDamping = 0.0; - MatoKeho.Add(MatoMuu); Add(MatoMuu); + MatoKeho.Add(MatoMuu); + + + return MatoMuu; } @@ -175,7 +181,6 @@ public class matopeli : PhysicsGame { Omena.Destroy(); OmenaKentalla = false; - LuoMatoKeho(MatoSijainti[MatoSijainti.Count-MatoKeho.Count-1]); } private void VaihdaSuuntaYlos() @@ -266,54 +271,47 @@ public class matopeli : PhysicsGame /// </summary> private void PaivitaKentta() { - //Tämän on tarkoitus liikuttaa matoa, aina, kun se saapuu tasalukuun. - //tavoitteena oli,että mato ei liikkuisi, jos se on ruudun puolivälissä - - - - - + if (MatoLiikkunut == false) + { + return; + } if (OmenaKentalla == false) { + LuoMatoKeho(); LuoOmena(); } + + MatoSijainti.Add(new Vector(Mato.X,Mato.Y)); LiikutaMatoa(); - if (MatoKeho.Count>0) - { - LiikutaKehoa(); - } - + LiikutaKehoa(); + MatoSijainti.Add(new Vector(Mato.X,Mato.Y)); + } private void LiikutaMatoa() { if (SuuntaYlos==true) { - Mato.Y = Mato.Y + leveys+5; + Mato.Y = Mato.Y + leveys; Mato.Angle = Angle.FromDegrees(90); - } if (SuuntaAlas==true) { - Mato.Y= Mato.Y - leveys+5; + Mato.Y= Mato.Y - leveys; Mato.Angle = Angle.FromDegrees(270); - } if (SuuntaOikea==true) { - Mato.X= Mato.X + leveys+5; + Mato.X= Mato.X + leveys; Mato.Angle = Angle.FromDegrees(0); - + } if (SuuntaVasen==true) { - Mato.X= Mato.X - leveys+5; + Mato.X= Mato.X - leveys; Mato.Angle = Angle.FromDegrees(180); } - - MatoSijainti.Add(Mato.Position); - } /// <summary> @@ -322,13 +320,21 @@ public class matopeli : PhysicsGame 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++) + if (MatoKeho.Count==0) { - MatoKeho[i].X = MatoKeho[i - 1].X; - MatoKeho[i].Y = MatoKeho[i - 1].Y; + return; } + MatoLiikkunut = false; + MatoKeho[0].X = MatoSijainti[MatoSijainti.Count - 1].X; + MatoKeho[0].Y = MatoSijainti[MatoSijainti.Count - 1].Y; + + for (int i = 1; i < MatoKeho.Count; i++) + { + MatoKeho[i].X = MatoSijainti[MatoSijainti.Count - 2*i].X; + MatoKeho[i].Y = MatoSijainti[MatoSijainti.Count - 2*i].Y; + } + + MatoLiikkunut = true; } @@ -337,7 +343,7 @@ public class matopeli : PhysicsGame public Objektit(double leveys, double korkeus) : base(leveys, korkeus) { - Mass = 10000; + Mass = 0; IsUpdated = true; } } -- GitLab