diff --git a/Surffipeli/Content/aalto.png b/Surffipeli/Content/aalto.png
index 1617ee552a556e3dde17e6fa87aae0d7c2c46d9c..cdd7b59fbf0184caed208b14b10bc94098d07403 100644
Binary files a/Surffipeli/Content/aalto.png and b/Surffipeli/Content/aalto.png differ
diff --git a/Surffipeli/Content/kivi.png b/Surffipeli/Content/kivi.png
index 5c1dbe83cc7a77f2ff1df3bcc33da80bbb900ae4..8b927f2aaef9ba62c611913b775234b7f7a9d413 100644
Binary files a/Surffipeli/Content/kivi.png and b/Surffipeli/Content/kivi.png differ
diff --git a/Surffipeli/Content/surffilauta.png b/Surffipeli/Content/surffilauta.png
index f4ede58becb04fd85b8c874b106471b15e600cf9..ff629f09ea29b02b2282b4dc192b3becac624469 100644
Binary files a/Surffipeli/Content/surffilauta.png and b/Surffipeli/Content/surffilauta.png differ
diff --git a/Surffipeli/Content/surffilautaKatki.png b/Surffipeli/Content/surffilautaKatki.png
index fb8abd7e8c19858041c4741c4576cdba396e8c33..e9ca66e6909a341ec698a6adcbf061a09987fb5e 100644
Binary files a/Surffipeli/Content/surffilautaKatki.png and b/Surffipeli/Content/surffilautaKatki.png differ
diff --git a/Surffipeli/Surffipeli.cs b/Surffipeli/Surffipeli.cs
index ecc4e4d828c00823c4badf6f000b0122187ad80a..df01286405da1290f71e44d93afb3e39b4872fd1 100644
--- a/Surffipeli/Surffipeli.cs
+++ b/Surffipeli/Surffipeli.cs
@@ -4,13 +4,15 @@ using Jypeli.Controls;
 using Jypeli.Widgets;
 using System;
 using System.Collections.Generic;
+using System.Text;
 
 namespace Surffipeli
 {
-    /// @author OMISTAJA
-    /// @version 30.05.2024
+    /// @author Nilla Magga
+    /// @version 31.05.2024
     /// <summary>
-    /// 
+    /// Surffipeli jossa tarkotuksena kerätä mahdollisimmaan paljon aaltoja 
+    /// ja varoa seiniä sekä kiviä
     /// </summary>
     public class Surffipeli : PhysicsGame
     {
@@ -30,12 +32,15 @@ namespace Surffipeli
 
         private bool peliKaynnissa = false;
 
-        Timer liikutusajastin = new Timer();
+        private Timer liikutusajastin;
+         
         public IntMeter pisteLaskuri;
         public Timer aikalaskuri;
 
         public override void Begin()
         {
+            ClearAll();
+            SetWindowSize(1280, 720);
             Gravity = new Vector(0, -100);
 
             LuoKentta();
@@ -50,22 +55,28 @@ namespace Surffipeli
 
             MasterVolume = 0.5;
 
-            
+            liikutusajastin = new Timer();
             liikutusajastin.Interval = 0.01;
             liikutusajastin.Timeout += SiirraPelaajaaOikeammalle;
             liikutusajastin.Start();
             peliKaynnissa = true;
         }
-
-        void SiirraPelaajaaOikeammalle()
-        {
-            pelaaja1.Push(new Vector(NOPEUS, 0.0));            
-        }
-
+        /// <summary>
+        /// Liikuttaa pelaajaa oikealle automaattisesti
+        /// </summary>
+       void SiirraPelaajaaOikeammalle()
+       {
+           pelaaja1.Push(new Vector(NOPEUS, 0.0));            
+       }
+        /// <summary>
+        /// Luodaan pistelaskuri aalloista saatuja pisteitä varten
+        /// Asetataan se oikeaan yläkulmaan ja tehdään sille palkki joka muuttuu pisteiden mukaisesti punaiseksi
+        /// Asetetaan pelille maksimipistemäärä
+        /// </summary>
         private void LuoPistelaskuri()
         {
             pisteLaskuri = new IntMeter(0);
-            pisteLaskuri.MaxValue = 5;
+            pisteLaskuri.MaxValue = 20;
             pisteLaskuri.UpperLimit += Voitto;
 
             Label pisteNaytto = new Label();
@@ -96,15 +107,21 @@ namespace Surffipeli
             {
                 Label voitto = new Label("VOITTO");
                 voitto.Y = 50;
-                voitto.TextColor = Color.White;
+                voitto.TextColor = Color.Black;
                 Add(voitto);
                 StopAll();
+                liikutusajastin.Stop();
                 LuoAikalaskuri2();
-                Keyboard.DisableAll();
+                Keyboard.Disable(Key.Up);
+                Keyboard.Disable(Key.Down);
                 aikalaskuri.Stop();
+                Gravity = Vector.Zero;                
             }
 
         }
+        /// <summary>
+        /// Pelille aikalaskuri joka juoksee pelin alusta siihen asti kun voitetaan peli tai hävitään
+        /// </summary>
         private void LuoAikalaskuri()
         {
             aikalaskuri = new Timer();
@@ -127,7 +144,9 @@ namespace Surffipeli
 
 
         }
-
+        /// <summary>
+        /// Aikalaskuri, jolla peli saadaan käynnistymään 5s päästä uudestaan voiton jälkeen
+        /// </summary>
         void LuoAikalaskuri2()
         {
 
@@ -138,14 +157,38 @@ namespace Surffipeli
 
             Label aika = new Label("Voittoon käytetty aika: ");
             aika.Y = +30;
-            aika.TextColor = Color.White;
+            aika.TextColor = Color.Black;
+            Add(aika);
+
+            string aika1 = aikalaskuri.CurrentTime.ToString();
+            aika1 = aika1.Substring(0, 4);
+            Label voittoAika = new Label(aika1);
+            voittoAika.Y = +10;
+            voittoAika.TextColor = Color.Black;
+            Add(voittoAika);
+
+        }
+        /// <summary>
+        /// Aikalaskuri, jolla peli saadaan käynnistymään 5s päästä uudestaan häviön jälkeen
+        /// </summary>
+        void LuoAikalaskuri3()
+        {
+
+            Timer nollaus = new Timer();
+            nollaus.Interval = 5;
+            nollaus.Timeout += AikaLoppui;
+            nollaus.Start(1);
+
+            Label aika = new Label("Peliä pelattu ennen häviötä: ");
+            aika.Y = +30;
+            aika.TextColor = Color.Black;
             Add(aika);
 
             string aika1 = aikalaskuri.CurrentTime.ToString();
             aika1 = aika1.Substring(0, 4);
             Label voittoAika = new Label(aika1);
             voittoAika.Y = +10;
-            voittoAika.TextColor = Color.White;
+            voittoAika.TextColor = Color.Black;
             Add(voittoAika);
 
         }
@@ -153,9 +196,11 @@ namespace Surffipeli
         void AikaLoppui()
         {            
             ResetLayers();
-            Begin();
+            Begin();            
         }
-
+        /// <summary>
+        /// Kentän luonti peliä varten
+        /// </summary>
         private void LuoKentta()
         {
             TileMap kentta = TileMap.FromLevelAsset("kentta1.txt");
@@ -164,18 +209,34 @@ namespace Surffipeli
             kentta.SetTileMethod('*', LisaaAalto);
             kentta.SetTileMethod('N', LisaaPelaaja);
             kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
-            Level.CreateBorders();
+            
             Level.Background.CreateGradient(Color.White, Color.SkyBlue);
+            Level.CreateLeftBorder();
+            Level.CreateTopBorder();
+            Level.CreateBottomBorder();
+            PhysicsObject oikeaReuna = Level.CreateRightBorder();
+            oikeaReuna.Tag = "maali";
         }
-
+        /// <summary>
+        /// Luodaan pelille seinät
+        /// </summary>
+        /// <param name="paikka"></param>paikka mihin seinä asetetaan, tieto tuodaan kentän tiedoista
+        /// <param name="leveys"></param>
+        /// <param name="korkeus"></param>
         private void LisaaSeina(Vector paikka, double leveys, double korkeus)
         {
             PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
             seina.Position = paikka;
-            seina.Color = Color.Green;
+            seina.Color = Color.Beige;
             seina.Tag = "seina";
             Add(seina);
         }
+        /// <summary>
+        /// Luodaan kenttään kiviä, joita pelaajan pitää väistää
+        /// </summary>
+        /// <param name="paikka"></param>paikka mihin kivi asetetaan, tieto tuodaan kentän tiedoista
+        /// <param name="leveys"></param>
+        /// <param name="korkeus"></param>
         private void LisaaKivi(Vector paikka, double leveys, double korkeus)
         {
             PhysicsObject kivi = PhysicsObject.CreateStaticObject(leveys, korkeus);
@@ -184,7 +245,12 @@ namespace Surffipeli
             kivi.Tag = "kivi";
             Add(kivi);
         }
-
+        /// <summary>
+        /// Luodaan kenttään aaltoja, joita pelaajan tarkoitus kerätä
+        /// </summary>
+        /// <param name="paikka"></param> paikka mihin aalto asetetaan, tieto tuodaan kentän tiedoista
+        /// <param name="leveys"></param>
+        /// <param name="korkeus"></param>
         private void LisaaAalto(Vector paikka, double leveys, double korkeus)
         {
             PhysicsObject aalto = PhysicsObject.CreateStaticObject(leveys, korkeus);
@@ -194,38 +260,66 @@ namespace Surffipeli
             aalto.Tag = "aalto";
             Add(aalto);
         }
-
+        /// <summary>
+        /// Luodaan pelaaja ja määritetään sen törmäyskäsittelijät
+        /// </summary>
+        /// <param name="paikka"></param> mihin pelaaja asetetaan, tieto tuodaan kentän tiedoista
+        /// <param name="leveys"></param>
+        /// <param name="korkeus"></param>
         private void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
         {
-            pelaaja1 = new PlatformCharacter(125, 125);
+            pelaaja1 = new PlatformCharacter(125, 50);
             pelaaja1.Position = paikka;
             pelaaja1.Mass = 4.0;
             pelaaja1.Image = pelaajanKuva;
             AddCollisionHandler(pelaaja1, "aalto", TormaaAaltoon);
             AddCollisionHandler(pelaaja1, "kivi", TormaaKiveen);
             AddCollisionHandler(pelaaja1, "seina", TormaaSeinaan);
+            AddCollisionHandler(pelaaja1, "maali", Maali);
             Add(pelaaja1);
         }
+        /// <summary>
+        /// Luodaan päätyseinästä objekti, jonka saavuttamalla kenttä päästään läpi 
+        /// </summary>
+        /// <param name="pelaaja"></param>
+        /// <param name="kohde"></param>
+        void Maali(PhysicsObject pelaaja, PhysicsObject kohde)
+        {
+            MessageDisplay.Add("Pääsit kentän läpi!");
+            Gravity = Vector.Zero; 
+            StopAll(); 
+            Keyboard.Disable(Key.Up);
+            Keyboard.Disable(Key.Down);
+            aikalaskuri.Stop();
+            liikutusajastin.Stop();
 
+        }
+        /// <summary>
+        /// Lisätään näppäimet millä peliä hallitaan
+        /// </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.Up, ButtonState.Pressed, Hyppaa, "Pelaaja siirtyy ylöspäin", pelaaja1, HYPPYNOPEUS);
             Keyboard.Listen(Key.Down, ButtonState.Pressed, Hyppaa, "Pelaaja siirtyy alaspäin", pelaaja1, -HYPPYNOPEUS);
-            
-        }
 
-        private void Liikuta(PlatformCharacter hahmo, double nopeus)
-        {
-            hahmo.Walk(nopeus);
         }
 
+        /// <summary>
+        /// Pakottaa pelaajan siirtymään ylös tai alaspäin kun ohjaavaa näppäintä painetaan
+        /// </summary>
+        /// <param name="hahmo"></param>Liikutettava objekti
+        /// <param name="nopeus"></param>Nopeus millä objektia liikutetaan
         private void Hyppaa(PlatformCharacter hahmo, double nopeus)
         {
             hahmo.ForceJump(nopeus);
         }
-
+        /// <summary>
+        /// Lisätään teksti "keräsit aallon" ja annetaan pistelaskuriin yksi lisäpiste
+        /// </summary>
+        /// <param name="hahmo"></param>
+        /// <param name="aalto"></param>
         private void TormaaAaltoon(PhysicsObject hahmo, PhysicsObject aalto)
         {
             maaliAani.Play();
@@ -233,7 +327,11 @@ namespace Surffipeli
             aalto.Destroy();
             pisteLaskuri.Value += 1;
         }
-
+        /// <summary>
+        /// Peli loppuu kun kiveen osutaan. Määritetään pelaajalle uusi kuva
+        /// </summary>
+        /// <param name="hahmo"></param>
+        /// <param name="kivi"></param>
         private void TormaaKiveen(PhysicsObject hahmo, PhysicsObject kivi)
         {
             if (peliKaynnissa)
@@ -241,12 +339,22 @@ namespace Surffipeli
                 MessageDisplay.Add("Kuolit! :(");
                 Keyboard.Disable(Key.Up);
                 Keyboard.Disable(Key.Down);
-                liikutusajastin.Stop();
                 peliKaynnissa = false;
                 pelaaja1.Image = pelaajanKuolemakuva;
+                StopAll();
+                LuoAikalaskuri3();
+                liikutusajastin.Stop();
+                Keyboard.Disable(Key.Up);
+                Keyboard.Disable(Key.Down);
+                aikalaskuri.Stop();
+                Gravity = Vector.Zero;
             }
         }
-
+        /// <summary>
+        /// Lisätään teksti "Varo seiniä" kun pelaaja osuu ylä- tai alaseinään.
+        /// </summary>
+        /// <param name="hahmo"></param>
+        /// <param name="seina"></param>
         private void TormaaSeinaan(PhysicsObject hahmo, PhysicsObject seina)
         {
             if (peliKaynnissa)