diff --git "a/NukkuMatti -harjoitusty\303\266/NukkuMatti -harjoitusty\303\266/Ohjelma.cs" "b/NukkuMatti -harjoitusty\303\266/NukkuMatti -harjoitusty\303\266/Ohjelma.cs"
index 676af722692b84adceb8134fa80743c3bd6eba16..68527dc5f7f2ffc189035245ac1f64976d7ee2e1 100644
--- "a/NukkuMatti -harjoitusty\303\266/NukkuMatti -harjoitusty\303\266/Ohjelma.cs"	
+++ "b/NukkuMatti -harjoitusty\303\266/NukkuMatti -harjoitusty\303\266/Ohjelma.cs"	
@@ -3,11 +3,11 @@ using System.Collections.Generic;
 using Jypeli;
 
 // Eero Salmen tekemä tasohyppelypeli osana ohjelmointi 1 -kurssia. Pelin nimi on NukkuMatti.
-// Pelaajan tehtävänä on kuljettaa NukkuMattia tasolta toiselle, tippumatta alas.
+// Pelaajan tehtävänä on kuljettaa NukkuMattia tasolta toiselle tippumatta alas.
 
 public class Tasohyppely : PhysicsGame
 {
-    // Muutama vakio arvo määritelty pelin mekaniikalle, jotta ne on helpommin hallittavissa samassa paikassa
+    // Muutama vakio arvo määritelty tähän, jotta ne on helpommin hallittavissa samassa paikassa
     
     private const double GravityStrength = -800;
     private const double HyppyVoima = 1100;
@@ -18,27 +18,34 @@ public class Tasohyppely : PhysicsGame
     private const double AlkuperainenHyppyNopeus = 1000;
     private const double TasoPoistoMarginaali = 200;
     private const double StartingHeight = -20; 
+    private const double FallThreshold = 1200; // Pelaaja saa pudota enintään 1200 yksikköä huippupisteestään
+    private double highestY;
+
+/// <summary>
+/// Pelin keskeiset objektit ja tilamuuttujat
+/// </summary>
 
     private PhysicsObject pelaaja;
     private bool peliKaynnissa = true;
     private GameObject taustakuva;
     private Label gameOverTeksti;
-    private int score = 0;
     private List<PhysicsObject> tasot = new List<PhysicsObject>();
     
+    /// <summary>
+    /// Aloitetaan peli.
+    /// </summary>
     public override void Begin()
     {
         // Asetetaan painovoima
         Gravity = new Vector(0, GravityStrength);
         
-        // Luodaan kentän elementit
         LuoKentta();
         LisaaOhjaimet();
         LuoGameOverTeksti();
         
         // Ajastin sille, kyinka usein uusia tasoja ilmestyy pelikenttään 
         Timer tasoAjastin = new Timer();
-        tasoAjastin.Interval = 0.8;
+        tasoAjastin.Interval = 1.4;
         tasoAjastin.Timeout += LuoTaso;
         tasoAjastin.Start();
         
@@ -46,6 +53,11 @@ public class Tasohyppely : PhysicsGame
         pelaaja.Velocity = new Vector(0, AlkuperainenHyppyNopeus);
     }
     
+    
+    /// <summary>
+    /// Luodaan peliin kenttä, joka sisältää taustan, pelaajan,
+    /// aloitustason ja törmäystenkäsittelijän
+    /// </summary>
     private void LuoKentta()
     {
         LuoTausta();
@@ -53,6 +65,7 @@ public class Tasohyppely : PhysicsGame
         
         // Asetetaan pelaajan ominaisuudet ja lisätään kentälle
         pelaaja.Position = new Vector(0, StartingHeight);
+        highestY = pelaaja.Y;
         pelaaja.CanRotate = false;
         pelaaja.Restitution = 0;
         Add(pelaaja);
@@ -75,6 +88,10 @@ public class Tasohyppely : PhysicsGame
             LuoTaso();
     }
     
+    
+    /// <summary>
+    /// Luodaan peliin tausta.
+    /// </summary>
     private void LuoTausta()
     {
         // Lisätään taustakuva ja sijoitetaan se taustalle 
@@ -84,6 +101,10 @@ public class Tasohyppely : PhysicsGame
         Add(taustakuva, -1);
     }
     
+    
+    /// <summary>
+    /// Luodaan peliin lopetusteksti, joka ilmoittaa pelaajalla, että peli on päättynyt
+    /// </summary>
     private void LuoGameOverTeksti()
     {
         // Asetetaan pelin päättymis teksti
@@ -95,6 +116,10 @@ public class Tasohyppely : PhysicsGame
         Add(gameOverTeksti);
     }
     
+    
+    /// <summary>
+    /// Luodaan pelaaja-olio ja määritellään sen perusasetukset
+    /// </summary>
     private void LuoPelaaja()
     {
         //Luodaan hahmo
@@ -103,21 +128,32 @@ public class Tasohyppely : PhysicsGame
         pelaaja.Restitution = 0;
     }
     
+    
+    /// <summary>
+    /// Luodaan peliin tasoja.
+    /// </summary>
     private void LuoTaso()
     {
-        //Luodaan tasoja 
-        double x = RandomGen.NextDouble(Level.Left + 100, Level.Right - 100);
-        double y = Camera.ScreenToWorld(new Vector(0, Screen.Height / 2)).Y + RandomGen.NextDouble(10, 10);
-    
-        PhysicsObject taso = PhysicsObject.CreateStaticObject(TasoLeveys, TasoKorkeus);
-        taso.Position = new Vector(x, y);
-        taso.Color = Color.White;
-        taso.Tag = "taso";
-        Add(taso);
-    
-        tasot.Add(taso);
+        // Luodaan useampi taso yhdellä silmukalla
+        
+        for (int i = 0; i < 1; i++)
+        {
+            double x = RandomGen.NextDouble(Level.Left + 100, Level.Right - 100);
+            double y = Camera.ScreenToWorld(new Vector(0, Screen.Height / 2)).Y + RandomGen.NextDouble(10, 10);
+
+            PhysicsObject taso = PhysicsObject.CreateStaticObject(TasoLeveys, TasoKorkeus);
+            taso.Position = new Vector(x, y);
+            taso.Color = Color.White;
+            taso.Tag = "taso";
+            Add(taso);
+            tasot.Add(taso);
+        }
     }
 
+
+    /// <summary>
+    /// Määritellään näppäimistöohjaimet pelaajan liikkumiseen ja pelin lopettamiseen.
+    /// </summary>
     private void LisaaOhjaimet()
     {
         // Asetetaan komennot näppäimistöltä
@@ -126,12 +162,23 @@ public class Tasohyppely : PhysicsGame
         Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
     }
     
+    
+    /// <summary>
+    /// Muutetaan pelaajan vaakasuuntaista liikettä annetun nopeuden perusteella.
+    /// </summary>
+    /// <param name="nopeus"></param>
     private void Liikuta(double nopeus)
     {
         if (peliKaynnissa)
             pelaaja.Velocity = new Vector(nopeus, pelaaja.Velocity.Y);
     }
     
+    
+    /// <summary>
+    /// Määritellään pelaajan ja tason törmäys.
+    /// </summary>
+    /// <param name="pelaaja"></param>
+    /// <param name="taso"></param>
     private void OsuiTasoon(PhysicsObject pelaaja, PhysicsObject taso)
     {
         // Törmäys pelaajan ja tason välillä
@@ -147,9 +194,12 @@ public class Tasohyppely : PhysicsGame
             pelaaja.Velocity = new Vector(pelaaja.Velocity.X, HyppyVoima);
         }
         
-        pelaaja.IgnoresCollisionResponse = false;
     }
     
+    
+    /// <summary>
+    /// Poistetaan ne tasot, jotka poistuvat näkyvistä.
+    /// </summary>
     private void PoistaPoistuvatTasot()
     {
         // Turhat tasot poistetaan
@@ -162,7 +212,11 @@ public class Tasohyppely : PhysicsGame
             }
         }
     }
+    
 
+    /// <summary>
+    ///  Lopetetaan peli, mikäli pelaaja on pudonnut liikaa korkeimmasta saavutetusta pisteestä.
+    /// </summary>
     private void LopetaPeli()
     {
         // Pelin lopettamiskomento
@@ -175,6 +229,12 @@ public class Tasohyppely : PhysicsGame
         }
     }
     
+    
+    /// <summary>
+    /// Päivitetään pelin tila jokaisella ruudunpäivityksellä,
+    /// mukaan lukien taustakuvan sijainti ja pelaajan pudotuksen valvonta.
+    /// </summary>
+    /// <param name="time"></param>
     protected override void Update(Time time)
     {
         base.Update(time);
@@ -184,13 +244,24 @@ public class Tasohyppely : PhysicsGame
         
         PoistaPoistuvatTasot();
         
-        if (pelaaja.Y < Level.Bottom - 100)
+        if (pelaaja.Y > highestY)
+            highestY = pelaaja.Y;
+
+        // Tarkista, onko pelaaja pudonnut liian pitkän matkan huipustaan
+        
+        if (highestY - pelaaja.Y > FallThreshold)
+          
             LopetaPeli();
     }
 }
 
+
+/// <summary>
+/// Pääohjelman luokka, joka käynnistää pelin.
+/// </summary>
 public class Program
 {
+    // Päämetodi, joka luo pelin oliot ja käynnistää pelin.
     public static void Main()
     {
         using (var peli = new Tasohyppely())