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