diff --git a/Eskape/.vs/Eskape/DesignTimeBuild/.dtbcache.v2 b/Eskape/.vs/Eskape/DesignTimeBuild/.dtbcache.v2
index 7213d370349d2e4b43d4a30e32c551ebf4c62646..14cc012290f3fbe97abb4d14f8c565bce319de85 100644
Binary files a/Eskape/.vs/Eskape/DesignTimeBuild/.dtbcache.v2 and b/Eskape/.vs/Eskape/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/Eskape/.vs/Eskape/v16/.suo b/Eskape/.vs/Eskape/v16/.suo
index ebd0a14ebaa806605da1bfd55697a486cf165cbd..e6cec395b5bf69d482b52df93cbdbec811745e0a 100644
Binary files a/Eskape/.vs/Eskape/v16/.suo and b/Eskape/.vs/Eskape/v16/.suo differ
diff --git a/Eskape/Eskape/Content/kentta1.txt b/Eskape/Eskape/Content/kentta1.txt
index a0fc254d97352439f9942a0d8cc275e9b14bf225..c7169810111e36707c36ff05ec85124e186fd51a 100644
--- a/Eskape/Eskape/Content/kentta1.txt
+++ b/Eskape/Eskape/Content/kentta1.txt
@@ -15,7 +15,7 @@
          XXXX                        ##      
                     H                 ##     #
                     ##                         
-          H E    F    F        F                  #
+       XX H E    F    F        F                  #
        ############################         ##
    N     *^     F**#                        
   ##     ##     ####                  ##
diff --git a/Eskape/Eskape/Content/tahti.png b/Eskape/Eskape/Content/tahti.png
deleted file mode 100644
index 12f4398771471bc9a704358049b6d6dd07f9b974..0000000000000000000000000000000000000000
Binary files a/Eskape/Eskape/Content/tahti.png and /dev/null differ
diff --git a/Eskape/Eskape/Eskape.cs b/Eskape/Eskape/Eskape.cs
index b5f9adae897078f71849254cb3144e76baf9b918..cea0153cd0229a264dfa4ad7db210cbd4b0dfcd0 100644
--- a/Eskape/Eskape/Eskape.cs
+++ b/Eskape/Eskape/Eskape.cs
@@ -6,35 +6,24 @@ using System;
 using System.Collections.Generic;
 
 /// @author Roy Eskelinen
-/// @version 21.12.2021
+/// @version 6.1.2022
 /// <summary>
 /// Eskape tasohyppelypeli.
+/// Silmukkatehtävä: https://tim.jyu.fi/view/kurssit/tie/ohj1/2021s/demot/demo5#teht%C3%A4v%C3%A4-4.-rajan-ylitt%C3%A4v%C3%A4t
+/// Taulukkotehtävä: https://tim.jyu.fi/view/kurssit/tie/ohj1/2021s/demot/demo10#v2 
 /// </summary>
 
 
-
-/* class Vihu : PhysicsObject
-{
-    private IntMeter elamalaskuri = new IntMeter(3, 0, 3);
-    public IntMeter Elamalaskuri { get { return elamalaskuri; } }
-
-    public Vihu(double leveys, double korkeus)
-        : base(leveys, korkeus)
-    {
-        elamalaskuri.LowerLimit += delegate { this.Destroy(); };
-    }
-} */
-
 public class Eskape : PhysicsGame
 {
-    private const double NOPEUS = 150;
-    private const double HYPPYNOPEUS = 900;
-    private const int RUUDUN_KOKO = 40;
+    private const double NOPEUS = 150; // hahmon nopeus
+    private const double HYPPYNOPEUS = 900; // kuinka korkealle hahmo hyppää
+    private const int RUUDUN_KOKO = 40; // ruudun zoomaus
 
     private PlatformCharacter pelaaja;
 
-    int healthPoints = 5;
-    IntMeter pistelaskuri = new IntMeter(0);
+    private int healthPoints = 5; // hahmon elämät
+    private IntMeter pistelaskuri = new IntMeter(0);
 
     // kuvat
     private Image pelaajanKuva = LoadImage("PlayerHero1.png");
@@ -59,27 +48,19 @@ public class Eskape : PhysicsGame
     private SoundEffect coinAani = LoadSoundEffect("pickCoin.wav");
     private SoundEffect hpAani = LoadSoundEffect("powerUp.wav");
 
-    
 
+    /// <summary>
+    /// Begin kutsuu aliohjelman AloitaPelin.
+    /// </summary>
     public override void Begin()
     {
-        Gravity = new Vector(300, -2000);
-
-        LuoKentta();
-        LisaaNappaimet();
-        LuoPistelaskuri();
-
-        Camera.Follow(pelaaja);
-        Camera.ZoomFactor = 2;
-        Camera.StayInLevel = true;
-
-        MasterVolume = 0.5;
+        AloitaPeli();
     }
 
+
     /// <summary>
-    /// Tähän alapuolelle tulee kaikki luo ja lisää -tapahtumat.
+    /// Kentän sisältö. Perässä olevat nimet viittaavat kutsuttaviin aliohjelmiin.
     /// </summary>
-
     private void LuoKentta()
     {
         TileMap kentta = TileMap.FromLevelAsset("kentta1.txt");
@@ -90,7 +71,7 @@ public class Eskape : PhysicsGame
         kentta.SetTileMethod('^', LisaaPiste2);
         kentta.SetTileMethod('N', LisaaPelaaja);
         kentta.SetTileMethod('E', LisaaVihollinen);
-        kentta.SetTileMethod('F', LisaaVihollinen2);
+        kentta.SetTileMethod('F', LisaaVihollinen);
         kentta.SetTileMethod('B', LisaaLaatikko);
         kentta.SetTileMethod('S', LisaaPommi);
         kentta.SetTileMethod('H', LisaaHealthPotion);
@@ -100,6 +81,13 @@ public class Eskape : PhysicsGame
         Level.Background.TileToLevel();
     }
 
+
+    /// <summary>
+    /// Health Potion. Sen keräämällä hahmo saa yhden elämäpisteen lisää.
+    /// </summary>
+    /// <param name="paikka">Potionin paikka. Määritellään kentässä.</param>
+    /// <param name="leveys">Koko leveyssuunnassa.</param>
+    /// <param name="korkeus">Koko pituussuunnassa.</param>
     void LisaaHealthPotion(Vector paikka, double leveys, double korkeus)
     {
         PhysicsObject healthPotion = PhysicsObject.CreateStaticObject(leveys, korkeus);
@@ -110,15 +98,29 @@ public class Eskape : PhysicsGame
         Add(healthPotion);
     }
 
+
+    /// <summary>
+    /// Pelin perustaso, jonka päällä kävellään.
+    /// </summary>
+    /// <param name="paikka">Tason paikka. Määritellään kentta1.txt:ssä</param>
+    /// <param name="leveys">Tason leveys.</param>
+    /// <param name="korkeus">Tason korkeus</param>
     private void LisaaTaso(Vector paikka, double leveys, double korkeus)
     {
-        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
+        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys + 1, korkeus + 1);
         taso.Position = paikka;
         taso.Image = floorPic;
         taso.Tag = "floor";
         Add(taso);
     }
 
+
+    /// <summary>
+    /// Näkymätön taso pelissä. Käyttäytyy samalla tavalla kuin "LisaaTaso"-aliohjelma, mutta on näkymätön.
+    /// </summary>
+    /// <param name="paikka">Sijainti kentässä.</param>
+    /// <param name="leveys">Leveys</param>
+    /// <param name="korkeus">Korkeus</param>
     private void LisaaNakymatonTaso(Vector paikka, double leveys, double korkeus)
     {
         PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
@@ -128,6 +130,13 @@ public class Eskape : PhysicsGame
         Add(taso);
     }
 
+
+    /// <summary>
+    /// Pelihahmon tappava taso. Tason päälle tippuessaan peli alkaa välittömästi alusta.
+    /// </summary>
+    /// <param name="paikka">Tappavan tason paikka kentässä.</param>
+    /// <param name="leveys">Tappavan tason leveys.</param>
+    /// <param name="korkeus">Tappavan tason korkeus.</param>
     private void LisaaTappavaTaso(Vector paikka, double leveys, double korkeus)
     {
         PhysicsObject spikes = PhysicsObject.CreateStaticObject(leveys, korkeus);
@@ -137,6 +146,13 @@ public class Eskape : PhysicsGame
         Add(spikes);
     }
 
+
+    /// <summary>
+    /// Pelissä kerättävä kolikko. Antaa yhden pisteen.
+    /// </summary>
+    /// <param name="paikka">Kolikon paikka kentässä.</param>
+    /// <param name="leveys">Kolikon leveys.</param>
+    /// <param name="korkeus">Kolikon korkeus.</param>
     private void LisaaPiste(Vector paikka, double leveys, double korkeus)
     {
         PhysicsObject piste = PhysicsObject.CreateStaticObject(leveys, korkeus);
@@ -147,6 +163,13 @@ public class Eskape : PhysicsGame
         Add(piste);
     }
 
+
+    /// <summary>
+    /// Pelissä kerättävä kolikko. Antaa viisi pistettä.
+    /// </summary>
+    /// <param name="paikka">Kolikon paikka kentässä.</param>
+    /// <param name="leveys">Kolikon leveys.</param>
+    /// <param name="korkeus">Kolikon korkeus.</param>
     private void LisaaPiste2(Vector paikka, double leveys, double korkeus)
     {
         PhysicsObject piste2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
@@ -157,34 +180,43 @@ public class Eskape : PhysicsGame
         Add(piste2);
     }
 
+
+    /// <summary>
+    /// Pelihahmo, jota ohjataan.
+    /// </summary>
+    /// <param name="paikka">Aloituspaikka pelissä.</param>
+    /// <param name="leveys">Hahmon leveys.</param>
+    /// <param name="korkeus">Hahmon korkeus.</param>
     public void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
     {
         pelaaja = new PlatformCharacter(35, 39);
         pelaaja.Position = paikka;
-        // pelaaja.Mass = 1.8;
         pelaaja.Image = pelaajanKuva;
         pelaaja.Weapon = new AssaultRifle(0, 0);
         pelaaja.Weapon.Ammo.Value = 999;
         pelaaja.Weapon.ProjectileCollision = AmmusOsui;
         pelaaja.Tag = "pelaaja";
+
+        // Alla aliohjelmat pelaajan eri reaktioihin kentän kanssa.
         AddCollisionHandler(pelaaja, "piste", TormaaKolikkoon);
         AddCollisionHandler(pelaaja, "piste2", TormaaKolikkoon2);
         AddCollisionHandler(pelaaja, "tappavat", TormaaPommiin);
         AddCollisionHandler(pelaaja, "health", TormaaHealthPotion);
         AddCollisionHandler(pelaaja, "spikes", TormaaTappavaanTasoon);
-        // AddCollisionHandler(pelaaja, "tappavat", CollisionHandler.ExplodeObject(100, true));
 
         Add(pelaaja);
     }
 
+
+    /// <summary>
+    /// Pelissä summittaisesti lentelevä pommi, joka osuessaan pelaajaan satuttaa pelaajaa 1 pisteen verran.
+    /// </summary>
+    /// <param name="paikka">Aloituspaikka pommille. Muuttuu välittömästi pelin alkaessa.</param>
+    /// <param name="leveys">Pommin leveys.</param>
+    /// <param name="korkeus">Pommin korkeus.</param>
     private void LisaaPommi(Vector paikka, double leveys, double korkeus)
     {
-        /// Pommi toimii satunnaisesti. Tuhoamalla sen saa pisteitä.
-        /// Pommi satuttaa osuessaan.
-        /// 
-
-        PhysicsObject paakallo = new PhysicsObject(40, 40);
-
+        PhysicsObject paakallo = new PhysicsObject(30, 30);
 
         RandomMoverBrain satunnaisaivot = new RandomMoverBrain(150); // tekoäly
         satunnaisaivot.ChangeMovementSeconds = 5;
@@ -192,104 +224,75 @@ public class Eskape : PhysicsGame
         satunnaisaivot.WanderRadius = 400;
         paakallo.Position = paikka;
 
-
         paakallo.Image = skull;
         paakallo.Tag = "tappavat";
         Add(paakallo);
     }
 
+
+    /// <summary>
+    /// Pelihahmoon lisättävä vihollinen, joka ampuu pelaajaa. Tuhotessaan pelaaja saa vihollisesta 10 pistettä.
+    /// </summary>
+    /// <param name="paikka">Vihollisen paikka.</param>
+    /// <param name="leveys">Vihollisen leveys.</param>
+    /// <param name="korkeus">Vihollisen korkeus.</param>
     private void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
     {
-        // tähän tulee vihollinen
-        
-
         PlatformCharacter enemy1 = new PlatformCharacter(40, 40);
 
         enemy1.Mass = 8.0;
         enemy1.Position = paikka;
         enemy1.Weapon = new AssaultRifle(0, 0);
         enemy1.Weapon.Ammo.Value = 9999;
-        enemy1.Image = enemyPic;
+        enemy1.Image = RandomGen.SelectOne(enemyPic, enemyPic2);
         enemy1.Tag = "vihu";
         enemy1.CanRotate = false;
         Add(enemy1);
 
-
+        // Vihollisen tekoäly.
         PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
         tasoAivot.Speed = 100;
         tasoAivot.JumpSpeed = 200;
-        tasoAivot.TriesToJump = true;
-
-        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja"); // tekoäly
-
-        // vihollisen tekoäly
-        seuraajanAivot.Active = true;
-        seuraajanAivot.Speed = 0;
-        seuraajanAivot.DistanceFar = 200;
-        seuraajanAivot.DistanceClose = 0;
-        seuraajanAivot.TurnWhileMoving = true;
-        seuraajanAivot.StopWhenTargetClose = true;
-        seuraajanAivot.FarBrain = tasoAivot;
-
-        enemy1.Brain = seuraajanAivot;
-
-        seuraajanAivot.TargetClose += delegate { MessageDisplay.Add("Pam"); };
-    }
-
-    private void LisaaVihollinen2(Vector paikka, double leveys, double korkeus)
-    {
-        // Täysin identtinen aikaisemman vihollisen kanssa. On vain erivärinen.
-
-        ShootingPlatformCharacter enemy2 = new ShootingPlatformCharacter(40, 40);
-
-        enemy2.Mass = 8.0;
-        enemy2.Position = paikka;
-        enemy2.Image = enemyPic2;
-        enemy2.Tag = "vihu";
-        enemy2.CanRotate = false;
-        Add(enemy2);
-
-        RandomMoverBrain satunnaisaivot = new RandomMoverBrain(50);
-        satunnaisaivot.ChangeMovementSeconds = 5;
-        enemy2.Brain = satunnaisaivot;
-
-        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja"); // tekoäly
-
-        // vihollisen tekoäly
+        tasoAivot.TriesToJump = false;
+        enemy1.Brain = tasoAivot;
 
-        seuraajanAivot.Active = true;
-        seuraajanAivot.Speed = 50;
-        seuraajanAivot.DistanceFar = 400;
-        seuraajanAivot.DistanceClose = 200;
-        seuraajanAivot.TurnWhileMoving = true;
-        seuraajanAivot.StopWhenTargetClose = true;
-        // seuraajanAivot.TargetClose += MitaTapahtuuKunOllaanLahella;
-        seuraajanAivot.FarBrain = satunnaisaivot;
-
-        enemy2.Brain = seuraajanAivot;
+        // Alla oleva koodi määrittää vihollisen ampumisen.
+        Timer.CreateAndStart(RandomGen.NextDouble(0.75, 1.75), delegate 
+        {
+            Vector d = pelaaja.Position - enemy1.Position;
+            d.Y = 0;
+            if (d.Magnitude > 200)
+                return;
+            enemy1.Weapon.Angle = d.Angle;
+            AmmuAseella(enemy1, "vihuluoti");
+        });
     }
 
-    /* private void MitaTapahtuuKunOllaanLahella;
-    {
-      AmmuAseella.Play;
-    } */
 
+    /// <summary>
+    /// Pistelaskuri. Pistelaskuri reagoi pelihahmon interaktioon kentän kanssa.
+    /// </summary>
     private void LuoPistelaskuri()
     {
         pistelaskuri = new IntMeter(0);
 
         Label pistenaytto = new Label();
-        
 
         pistenaytto.X = Screen.Left + 100;
         pistenaytto.Y = Screen.Top - 100;
-        pistenaytto.TextColor = Color.Yellow; // korjaa värejä
+        pistenaytto.TextColor = Color.Yellow;
         pistenaytto.Color = Color.Black;
-
         pistenaytto.BindTo(pistelaskuri);
         Add(pistenaytto);
     }
 
+
+    /// <summary>
+    /// Peliin lisättävä objekti, joka ei tuhoudu, mutta jota pelihahmolla voidaan liikutella.
+    /// </summary>
+    /// <param name="paikka">Laatikon sijainti.</param>
+    /// <param name="leveys">Laatikon leveys.</param>
+    /// <param name="korkeus">Laatikon paikka.</param>
     private void LisaaLaatikko(Vector paikka, double leveys, double korkeus)
     {
         PhysicsObject box = new PhysicsObject(leveys, korkeus);
@@ -299,20 +302,28 @@ public class Eskape : PhysicsGame
         Add(box);
     }
 
+
+    /// <summary>
+    /// Pelissä olevat näppäimet.
+    /// </summary>
     private void LisaaNappaimet()
     {
         Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
-
         Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, -NOPEUS);
         Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja, NOPEUS);
         Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja, HYPPYNOPEUS);
-        Keyboard.Listen(Key.RightControl, ButtonState.Down, AmmuAseella, "Ammu", pelaaja);
-
+        Keyboard.Listen(Key.RightControl, ButtonState.Down, AmmuAseella, "Ammu", pelaaja, "pelaajaluoti");
         PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
     }
 
-    private void AmmuAseella(PlatformCharacter pelaaja)
+
+    /// <summary>
+    /// Aseella ampumisen aliohjelma.
+    /// </summary>
+    /// <param name="pelaaja">Pelihahmo.</param>
+    /// <param name="tunnus">Ase.</param>
+    private void AmmuAseella(PlatformCharacter pelaaja, string tunnus)
     {
         PhysicsObject ammus = pelaaja.Weapon.Shoot();
 
@@ -323,29 +334,67 @@ public class Eskape : PhysicsGame
 
         if (ammus != null)
         {
+            ammus.Tag = tunnus;
             ammus.Size *= 3;
             ammus.Image = bullet;
             ammus.MaximumLifetime = TimeSpan.FromSeconds(7.0);
         }
     }
 
-    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
+
+    /// <summary>
+    /// Aliohjelma määrittää, mitä tapahtuu kun aseella osutaan.
+    /// </summary>
+    /// <param name="ammus">Luoti</param>
+    /// <param name="kohde">Kohde, johon luoti osuu.</param>
+    private void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
     {
+        if (kohde.Tag.ToString() == "vihu")
+        {
+            kohde.Destroy();
+            pistelaskuri.AddValue(10);
+        }
+
+        if (kohde.Tag.ToString() == "pelaaja")
+        {
+            // MessageDisplay.Add("Osui"); Tällä testattiin, osuiko peli.
+            healthPoints--;
+        }
         osumaAani.Play();
         ammus.Destroy();
     }
 
+
+    /// <summary>
+    /// Pelihahmon liikuttaminen.
+    /// </summary>
+    /// <param name="hahmo">Pelihahmo.</param>
+    /// <param name="nopeus">Pelihahmon nopeus.</param>
     private void Liikuta(PlatformCharacter hahmo, double nopeus)
     {
+        if (hahmo == null || hahmo.IsDestroyed)
+            return;
         hahmo.Walk(nopeus);
     }
 
+
+    /// <summary>
+    /// Pelihahmon hyppääminen.
+    /// </summary>
+    /// <param name="hahmo">Pelihahmo</param>
+    /// <param name="nopeus">Hyppynopeus.</param>
     private void Hyppaa(PlatformCharacter hahmo, double nopeus)
     {
         hyppyAani.Play();
         hahmo.Jump(nopeus);
     }
 
+
+    /// <summary>
+    /// Reaktio silloin, kun pelihahmo törmää health potioniin. Pelihahmo saa tällöin +1 elämäpistettä lisää.
+    /// </summary>
+    /// <param name="hahmo">Pelihahmo</param>
+    /// <param name="healthPotion">Health potion</param>
     private void TormaaHealthPotion(PhysicsObject hahmo, PhysicsObject healthPotion)
     {
         healthPoints++;
@@ -354,6 +403,12 @@ public class Eskape : PhysicsGame
         healthPotion.Destroy();
     }
 
+
+    /// <summary>
+    /// Reaktio, kun pelihahmo osuu 1 pisteen kolikkoon.
+    /// </summary>
+    /// <param name="hahmo">Pelihahmo.</param>
+    /// <param name="kolikko">Kolikko</param>
     private void TormaaKolikkoon(PhysicsObject hahmo, PhysicsObject kolikko)
     {
         pistelaskuri.AddValue(1);
@@ -362,31 +417,73 @@ public class Eskape : PhysicsGame
         // pistelaskuri.Value += 1;
     }
 
+
+    /// <summary>
+    /// Reaktio, kun pelihahmo osuu 5 pisteen kolikkoon.
+    /// </summary>
+    /// <param name="hahmo">Pelihahmo.</param>
+    /// <param name="kolikko">Kolikko</param>
     private void TormaaKolikkoon2(PhysicsObject hahmo, PhysicsObject kolikko)
     {
         coinAani.Play();
         kolikko.Destroy();
-        pistelaskuri.AddValue (5);
+        pistelaskuri.AddValue(5);
     }
 
+
+    /// <summary>
+    /// Reaktio, kun pelihahmo osuu pommiin.
+    /// </summary>
+    /// <param name="hahmo">Pelihahmo</param>
+    /// <param name="skull">Pommi</param>
     private void TormaaPommiin(PhysicsObject hahmo, PhysicsObject skull)
     {
         healthPoints--;
 
         if (healthPoints <= 0)
+        {
             pelaaja.Destroy();
-
+            Timer.SingleShot(3, AloitaPeli);
+        }
         rajahdysAani.Play();
         MessageDisplay.Add("HP -1");
         skull.Destroy();
     }
 
+
+    /// <summary>
+    /// Reaktio, kun pelihahmo osuu tappavaan tasoon.
+    /// </summary>
+    /// <param name="hahmo">Pelihahmo.</param>
+    /// <param name="spikes">Tappava taso.</param>
     private void TormaaTappavaanTasoon(PhysicsObject hahmo, PhysicsObject spikes)
     {
         healthPoints = 0;
         pelaaja.Destroy();
+        Timer.SingleShot(3, AloitaPeli);
         MessageDisplay.Add("Kuolit");
         // lisää tuskanhuuto
     }
+
+
+    /// <summary>
+    /// Aliohjelma, joka aloittaa pelin alusta silloin, kun pelihahmo kuolee.
+    /// </summary>
+    private void AloitaPeli()
+    {
+        ClearAll();
+
+        Gravity = new Vector(300, -2000);
+
+        LuoKentta();
+        LisaaNappaimet();
+        LuoPistelaskuri();
+
+        Camera.Follow(pelaaja);
+        Camera.ZoomFactor = 2;
+        Camera.StayInLevel = true;
+
+        MasterVolume = 0.1;
+    }
 }
 
diff --git a/Eskape/Eskape/bin/Debug/net5.0/Content/kentta1.txt b/Eskape/Eskape/bin/Debug/net5.0/Content/kentta1.txt
index a0fc254d97352439f9942a0d8cc275e9b14bf225..c7169810111e36707c36ff05ec85124e186fd51a 100644
--- a/Eskape/Eskape/bin/Debug/net5.0/Content/kentta1.txt
+++ b/Eskape/Eskape/bin/Debug/net5.0/Content/kentta1.txt
@@ -15,7 +15,7 @@
          XXXX                        ##      
                     H                 ##     #
                     ##                         
-          H E    F    F        F                  #
+       XX H E    F    F        F                  #
        ############################         ##
    N     *^     F**#                        
   ##     ##     ####                  ##
diff --git a/Eskape/Eskape/bin/Debug/net5.0/Content/tahti.png b/Eskape/Eskape/bin/Debug/net5.0/Content/tahti.png
deleted file mode 100644
index 12f4398771471bc9a704358049b6d6dd07f9b974..0000000000000000000000000000000000000000
Binary files a/Eskape/Eskape/bin/Debug/net5.0/Content/tahti.png and /dev/null differ
diff --git a/Eskape/Eskape/bin/Debug/net5.0/Eskape.dll b/Eskape/Eskape/bin/Debug/net5.0/Eskape.dll
index 4ee65e153c6111d63b5a80fc0cc09311fd5a6185..2d11800715d08e3752ee7c26fc52f0173e6af2ed 100644
Binary files a/Eskape/Eskape/bin/Debug/net5.0/Eskape.dll and b/Eskape/Eskape/bin/Debug/net5.0/Eskape.dll differ
diff --git a/Eskape/Eskape/bin/Debug/net5.0/Eskape.pdb b/Eskape/Eskape/bin/Debug/net5.0/Eskape.pdb
index a9e851f2c3ddba7aed8c9ed8a8d0eeaa6694ad61..64f8dcc94304431aeb326684ee5e869146ca3573 100644
Binary files a/Eskape/Eskape/bin/Debug/net5.0/Eskape.pdb and b/Eskape/Eskape/bin/Debug/net5.0/Eskape.pdb differ
diff --git a/Eskape/Eskape/bin/Debug/net5.0/ref/Eskape.dll b/Eskape/Eskape/bin/Debug/net5.0/ref/Eskape.dll
index d3aa7dbd2156ac4488382fc2acf684d0ae46dee4..3158315594f6e78cad28e5813756240d0c624b95 100644
Binary files a/Eskape/Eskape/bin/Debug/net5.0/ref/Eskape.dll and b/Eskape/Eskape/bin/Debug/net5.0/ref/Eskape.dll differ
diff --git a/Eskape/Eskape/obj/Debug/net5.0/Eskape.csproj.FileListAbsolute.txt b/Eskape/Eskape/obj/Debug/net5.0/Eskape.csproj.FileListAbsolute.txt
index 1177e62f88b60922e82f6c49d328820a86a307c4..ed39cf16676315b5b8f99368e3c97e33ac98d9b0 100644
--- a/Eskape/Eskape/obj/Debug/net5.0/Eskape.csproj.FileListAbsolute.txt
+++ b/Eskape/Eskape/obj/Debug/net5.0/Eskape.csproj.FileListAbsolute.txt
@@ -1,7 +1,6 @@
 C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Eskape.exe
 C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Content\kentta1.txt
 C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Content\maali.wav
-C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Content\tahti.png
 C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Eskape.deps.json
 C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Eskape.runtimeconfig.json
 C:\Users\royes\ohj1\Peli\Eskape\Eskape\bin\Debug\net5.0\Eskape.runtimeconfig.dev.json
diff --git a/Eskape/Eskape/obj/Debug/net5.0/Eskape.dll b/Eskape/Eskape/obj/Debug/net5.0/Eskape.dll
index 4ee65e153c6111d63b5a80fc0cc09311fd5a6185..2d11800715d08e3752ee7c26fc52f0173e6af2ed 100644
Binary files a/Eskape/Eskape/obj/Debug/net5.0/Eskape.dll and b/Eskape/Eskape/obj/Debug/net5.0/Eskape.dll differ
diff --git a/Eskape/Eskape/obj/Debug/net5.0/Eskape.pdb b/Eskape/Eskape/obj/Debug/net5.0/Eskape.pdb
index a9e851f2c3ddba7aed8c9ed8a8d0eeaa6694ad61..64f8dcc94304431aeb326684ee5e869146ca3573 100644
Binary files a/Eskape/Eskape/obj/Debug/net5.0/Eskape.pdb and b/Eskape/Eskape/obj/Debug/net5.0/Eskape.pdb differ
diff --git a/Eskape/Eskape/obj/Debug/net5.0/ref/Eskape.dll b/Eskape/Eskape/obj/Debug/net5.0/ref/Eskape.dll
index d3aa7dbd2156ac4488382fc2acf684d0ae46dee4..3158315594f6e78cad28e5813756240d0c624b95 100644
Binary files a/Eskape/Eskape/obj/Debug/net5.0/ref/Eskape.dll and b/Eskape/Eskape/obj/Debug/net5.0/ref/Eskape.dll differ
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..01252d538652fbb187b9b32f5d4436c9f5b33b58
--- /dev/null
+++ b/README.md
@@ -0,0 +1,11 @@
+# Pohja Ohjelmointi 1 -kurssin harjoitustöiden GIT-repoille.
+
+Tämä on pohja Ohjelmointi 1 -kurssin harjoitustöiden Git-repoille. 
+Opiskelija forkkaa tämän repon omaa harjoitustyötään varten. 
+`fork`-toiminto löytyy sivun yläreunasta.
+
+Muokkaa gitlab.jyu.fi-palvelussa oman projektisi asetuksia, kuten projektin nimeä
+ja projektin kuvausta kohdasta Settings. 
+
+Lue Git-versiohallinnan tarkemmat käyttöohjeet TIMistä: <https://tim.jyu.fi/view/kurssit/tie/ohj1/harjoitustyo/git>
+
diff --git a/Suunnitelma/README.md b/Suunnitelma/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..ab9998f3ea203460018cf7cbd8b9cab9d57e4167
--- /dev/null
+++ b/Suunnitelma/README.md
@@ -0,0 +1 @@
+# Pohja Ohjelmointi 1 -kurssin harjoitustöiden GIT-repoille.
diff --git a/gitignore b/gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..dfcfd56f444f9ae40e1082c07fe254cc547136cf
--- /dev/null
+++ b/gitignore
@@ -0,0 +1,350 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+[Ll]ogs/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+# Ionide (cross platform F# VS Code tools) working folder
+.ionide/