diff --git a/Matopeli/Matopeli/Matopeli.cs b/Matopeli/Matopeli/Matopeli.cs index 2b5e9c837fd9458715a5664d4a431234a4a00223..5874291e99201d614f14f82389ff01dcff623bac 100644 --- a/Matopeli/Matopeli/Matopeli.cs +++ b/Matopeli/Matopeli/Matopeli.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Runtime.ExceptionServices; using System.Xml.Serialization; using Jypeli; using Jypeli.Assets; @@ -15,141 +16,167 @@ namespace Matopeli; /// <summary> /// /// </summary> -public class Matopeli : PhysicsGame -{ - - private static readonly string[] kentta ={ - "---------------", - "- -", - "- -", - "- o -", - "- -", - "- -", - "- km -", - "- -", - "- -", - "- -", - "- -", - "- -", - "- -", - "---------------", - }; - private int seinaleveys= 600 / kentta.Length; - private int seinakorkeus = 600 / kentta.Length; - - 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"); - - - - public readonly IntMeter pisteet = new IntMeter(0); - private Label pisteNaytto; - - public override void Begin() + public class Matopeli : PhysicsGame { - ClearAll(); - // Background.Image = LoadImage("kenttatausta"); - //LuoTausta(); - - AloitaUusiPeli(); - } - public void AloitaUusiPeli() - { - pisteet.Value = 0; - TileMap seinat = TileMap.FromStringArray(kentta); - seinat.SetTileMethod('-',LuoSeina); - seinat.SetTileMethod('m',LuoMatopaa); - seinat.SetTileMethod('o',LuoOmena); - //seinat.SetTileMethod('k',LuoMatokeho); - - seinat.Execute(seinaleveys, seinakorkeus); - ArvotaanOmena(kentta); - Matoliikkeelle(); - } - private void LuoSeina(Vector paikka, double leveys, double korkeus) + + private static readonly string[] kentta ={ + "---------------", + "- -", + "- -", + "- -", + "- -", + "- -", + "- m -", + "- -", + "- -", + "- -", + "- -", + "- -", + "- -", + "---------------", + }; + private int seinaleveys= 600 / kentta.Length; + private int seinakorkeus = 600 / kentta.Length; + + 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 LiikkuvaMato mato; + private LiikkuvaMato omena; + + public readonly IntMeter pisteet = new IntMeter(0); + + + public override void Begin() { - PhysicsObject seina = new PhysicsObject(leveys, korkeus); - seina.Position = paikka; - seina.Image = seinakuva; - Add(seina); + ClearAll(); + // Background.Image = LoadImage("kenttatausta"); + //LuoTausta(); + + AloitaUusiPeli(); } - - private void LuoOmena(Vector paikka, double leveys, double korkeus) - { - PhysicsObject omena = new PhysicsObject(leveys, korkeus); - omena.Position = paikka; - omena.Image = omenakuva; - omena.Tag = "omena"; - Add(omena); - } - - private void LuoMatopaa(Vector paikka, double leveys, double korkeus) - { - PhysicsObject matopaa = new PhysicsObject(leveys, korkeus); - matopaa.Position = paikka; - matopaa.Image = Matopeli.matopaakuva; - matopaa.Tag = matopaa; - AddCollisionHandler(matopaa, "omena", delegate(IPhysicsObject matopaa, IPhysicsObject omena) { MatosyoOmenan(omena); pisteet.Value += 1; }); - Timer lahtoaika = new Timer(); - lahtoaika.Interval = 1.5; - Add(matopaa); - lahtoaika.Timeout += KaannyOikea(matopaa); - } - - //private void LuoMatokeho(Vector paikka, double leveys, double korkeus) - //{ - // PhysicsObject matokeho = new PhysicsObject(leveys, korkeus); - //matokeho.Position = paikka; - //matokeho.Image = matokehokuva; - //Add(matokeho); - //}) - private void AsetaOhjaimet() - { - Keyboard.Listen(Key.Up, ButtonState.Down, KaannyYlos, "Turn upwards"; - Keyboard.Listen(Key.Down, ButtonState.Down, KaannyAlas, "Turn downwards"; - Keyboard.Listen(Key.Left, ButtonState.Down, KaannaVasen, "Turn left"; - Keyboard.Listen(Key.Right, ButtonState.Down, KaannaOikea, "Turn right"; - } - private void ArvotaanOmena(string[]t) - { - int x = t.GetLength(0); - int y = t.GetLength(1); - int ix = RandomGen.NextInt(1, x - 1); - int iy = RandomGen.NextInt(1, y - 1); - Vector paikka = (ix, iy); - LuoOmena(paikka, seinaleveys, seinakorkeus); - } - + public void AloitaUusiPeli() + { + // pisteet.Value = 0; - private void MatosyoOmenan(IPhysicsObject omena) - { + TileMap seinat = TileMap.FromStringArray(kentta); + seinat.SetTileMethod('-', LuoSeina); + seinat['m'] = LuoMato; + //seinat.SetTileMethod('k',LuoMatokeho); + seinat.Insert(seinaleveys, seinakorkeus); + Asetaohjaimet(); + + seinat.Execute(seinaleveys, seinakorkeus); + LuoOmena(); + } + + + + private void Asetaohjaimet() + { + Keyboard.Listen(Key.Up, ButtonState.Down, KaannyYlos, "Turn upwards"); + Keyboard.Listen(Key.Down, ButtonState.Down, KaannyAlas, "Turn downwards"); + Keyboard.Listen(Key.Left, ButtonState.Down, KaannyVasen, "Turn left"); + Keyboard.Listen(Key.Right, ButtonState.Down, KaannyOikea, "Turn right"); + } + + private void KaannyYlos() + { + + mato.Velocity = new Vector(0, 150); + mato.Angle = Angle.FromDegrees(90); + } + private void KaannyAlas() + { + + mato.Velocity = new Vector(0, -150); + mato.Angle = Angle.FromDegrees(270); + } + private void KaannyVasen() + { + + mato.Velocity = new Vector(-150, 0); + mato.Angle = Angle.FromDegrees(180); + } + private void KaannyOikea() + { + + mato.Velocity = new Vector(150, 0); + mato.Angle = Angle.FromDegrees(0); + } + + private void LuoSeina(Vector paikka, double leveys, double korkeus) + { + PhysicsObject seina = new PhysicsObject(leveys, korkeus); + seina.Position = paikka; + seina.Image = seinakuva; + seina.Tag = "seina"; + seina.MakeStatic(); + Add(seina); + } - pisteet+; - omena.Destroy(); - } - private void KaannyVasen(IPhysicsObject matopaa) - { - } - - private void KaannyOikea(IPhysicsObject matopaa) - { - matopaa.Push(new Vector(1000, 0)); - pelaaja1.MaxVelocity = 200; - } - - private void KaannyAlas(IPhysicsObject matopaa) - { + private PhysicsObject LuoMato() + { + mato = new LiikkuvaMato(seinaleveys, seinakorkeus); + mato.Image = Matopeli.matopaakuva; + mato.Tag = "mato"; + mato.Velocity = new Vector(150, 0); + AddCollisionHandler(mato, "seina", TormaaSeinaan); + AddCollisionHandler(mato, "omena", SyoOmenan); + return mato; + + } + + private PhysicsObject LuoOmena() + { + omena = new LiikkuvaMato(seinaleveys, seinakorkeus); + omena.Image = omenakuva; + omena.Tag = "omena"; + return omena; + } + + private void TormaaSeinaan(IPhysicsObject mato,IPhysicsObject seina) + { + mato.Velocity = new Vector(0,0); + seina.Velocity = new Vector(0, 0); + + } + + private void SyoOmenan(IPhysicsObject mato, IPhysicsObject omena) + { + omena.Destroy(); + } + } - private void KaannyYlos(IPhysicsObject matopaa) + + + public class LiikkuvaMato : PhysicsObject { + public LiikkuvaMato(double leveys, double korkeus) + : base(leveys, korkeus) + { + Mass = 10000; + IgnoresGravity = true; + IsUpdated = true; + } + } - } -} + + + + + + + + + + + \ No newline at end of file