diff --git a/Eskape graffat/Box3-20211008-174519.piskel b/Eskape graffat/Box3-20211008-174519.piskel
new file mode 100644
index 0000000000000000000000000000000000000000..ce761d89a4b2cbbfbc5040425faffc5ec056b9dd
--- /dev/null
+++ b/Eskape graffat/Box3-20211008-174519.piskel	
@@ -0,0 +1 @@
+{"modelVersion":2,"piskel":{"name":"Box3","description":"Box(object)","fps":12,"height":32,"width":32,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAR0lEQVRYhWNgGAWjYBRgAbe29PynFSbaASdmpFMdjzpg1AHDywH9lUlY6VEHjDpg5DiAHDzqgFEHjDqAJAcMaJtwFIwCegIANeJQkBo2K2gAAAAASUVORK5CYII=\"}]}"],"hiddenFrames":[""]}}
\ No newline at end of file
diff --git a/Eskape graffat/Box3.png b/Eskape graffat/Box3.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6019d072bad274ad545b6312ec0da287e0dc53c
Binary files /dev/null and b/Eskape graffat/Box3.png differ
diff --git a/Eskape graffat/Enemy1-20211008-174013.piskel b/Eskape graffat/Enemy1-20211008-174013.piskel
new file mode 100644
index 0000000000000000000000000000000000000000..67db5379dc17a2726395596d1f8d2f36ee6fcde1
--- /dev/null
+++ b/Eskape graffat/Enemy1-20211008-174013.piskel	
@@ -0,0 +1 @@
+{"modelVersion":2,"piskel":{"name":"Enemy1","description":"","fps":12,"height":32,"width":32,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAA0ElEQVRYhe2SMQrDIBSG3yIGhEDMkDVjTpADZMuJCl5AyJwhq3cLCIWc4e/QGFKxUKixQ/3gx+fi+9RHlMlkItExhp5zuLXnHMmbn9Mxlk5gB17Scp9nnJNcYDMGmzG/EyAiqoYJ1TClbe6avkuMHv5wvaQeF9TjcqkAET2HjIiwKoVVqUPAah0UcGLRBHb8A0EU/garNazWcQWKooC/t1ofrxJKVAHyXsDdMqVAkEuH7xNKIVAKAb/OAlngfwQaKdFICb9Owq1tEUoygUzmWx6Ejuis/PR3SgAAAABJRU5ErkJggg==\"}]}"],"hiddenFrames":[""]}}
\ No newline at end of file
diff --git a/Eskape graffat/Enemy1.png b/Eskape graffat/Enemy1.png
new file mode 100644
index 0000000000000000000000000000000000000000..b3ff4aeb5a4d5c4112a6246a36e5823cb35f2ac0
Binary files /dev/null and b/Eskape graffat/Enemy1.png differ
diff --git a/Eskape graffat/PlayerHero-20211008-170536.piskel b/Eskape graffat/PlayerHero-20211008-170536.piskel
new file mode 100644
index 0000000000000000000000000000000000000000..9e2d234c03162ddc2cd649d9a5a242df2e491783
--- /dev/null
+++ b/Eskape graffat/PlayerHero-20211008-170536.piskel	
@@ -0,0 +1 @@
+{"modelVersion":2,"piskel":{"name":"PlayerHero","description":"The main person","fps":19,"height":32,"width":32,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":17,\"chunks\":[{\"layout\":[[0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiAAAAAgCAYAAAArFsM1AAACkUlEQVR4nO3cwWnbUBzHcZ2EDp7CG2SDTtJBvIAW0EzdIBMkweAee3Chh9dLbGwj2Yktvf9L3ucLgggKn5+ithZKadNIkiRJkiRJkiRJkiRJkiRJS/X37SmdHdsfqQabz+fz+fxa/SI27N+e0v5lfcT//f6ZbUCkzefz+Xx+rX74hj9tmy6PGmw+n8/n82v1S9nQ7IYh7YYhrVartBuGrAMibT6fz+fza/WL2HAYcDhqsfl8Pp/Pr9UvYoMHED6fz+fz6/JL2dA8t216jvj5T7DN5/P5fH6tftiGX22brh2RdrS/pD2Hv39ZP7TR9X/t6+fz+d/XL2HD0v7kgJOnoVvH7Ha0n8Oew9+/rNMjH8JzXf+9O+a8/ns2zHH9l+5ndiz1/f/ohjl//9+zYe4/f2Mbcvofve4l/c9sWPLvv4j7P7Yh0r9V9OfftQ25/ONrl7EB274/Qq+bTXrdbFLTNLP9jGjKjvZz2HP4j74BcP1f+/r5fP7380vYkMtvtn2ftn0/+k14/yWX2Gz4NTvaX9rm8/l8Pj/q8+/Whhx+c3iyGTu2fZ+6rjsDL8+XsqP9pW0+n8/n80vdkMO/OeD9NcxpWR9ALv2cDyBL2nw+n8/nl7ph6c//s668glm8G6+gQvxcNp/P5/P5pW3I6TfN+b9qPf06tx3t57b5fD6fz586z70hwvcAEmTz+Xw+nz91nnuDB5BAv8abz+fz+fx4v4QNHkAC/RpvPp/P5/Pj/RI2eAAJ9Gu8+Xw+n8+P90vY4AEk0K/x5vP5fD4/3i9hQ36/67rjfzpy+nVuO9rPbfP5fD6fP3Wee0OE36SJcttj5zn93Dafz+fz+QczekOEL0mSJEmSJEmSJEmSJEmSJB37D2wBuS+/NPl1AAAAAElFTkSuQmCC\"}]}"],"hiddenFrames":[""]}}
\ No newline at end of file
diff --git a/Eskape graffat/PlayerHero.png b/Eskape graffat/PlayerHero.png
new file mode 100644
index 0000000000000000000000000000000000000000..f12436f4c21db46d83b98fe27ea9cb9323a30a5e
Binary files /dev/null and b/Eskape graffat/PlayerHero.png differ
diff --git a/Eskape graffat/PlayerHero1.png b/Eskape graffat/PlayerHero1.png
new file mode 100644
index 0000000000000000000000000000000000000000..db1ae6137a692bcee5aae7e07a6e54cfd8fe2e55
Binary files /dev/null and b/Eskape graffat/PlayerHero1.png differ
diff --git a/Eskape graffat/background1.piskel b/Eskape graffat/background1.piskel
new file mode 100644
index 0000000000000000000000000000000000000000..01fe99dbc3a914e109fb5e1aa3d7bce35c7cde11
--- /dev/null
+++ b/Eskape graffat/background1.piskel	
@@ -0,0 +1 @@
+{"modelVersion":2,"piskel":{"name":"background1","description":"background","fps":12,"height":32,"width":32,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADy0lEQVRYR4XXIU9dQRAFYJ5DIpFI0hrSGtIa0hrSutaQ9o8ikUgkEolE4l5zJvluT7cv7U1e7r17d2dnzpw5s2/39s2b/dE/ruPj4/ma++vr63Y3dnp6OuNPT0//MjPrcp2cnBw9Pz/PPdfu/bt3e8bbgrEYX8fzLQZeXl7md+i7MRvHTuZaF8fzvPsfAry2MIY41aj0huZkTc8/OzvbkLq4uPiNwAoxw22AA4ciawSkqcesjV2IBYG8Twrizf39/UASL5Mj0GVB51705rXz5+fns9acbBJu5B1X8px5Gc999/XLl71cIkYbiMEVXhxAvASQeaJrTnnmTJN6HPj86dM4ECOPj4+btyIXfXOgHQ0SuTI/xqGXdzlfA8v8LQU/f/zYN2zZcN2McVDm/fr6ehzOBSVrM5bnJl2cw4Fsbt0g0KWGtZmU38PDw1a/jMbw3d3dGOw8gzvQstO2sy7vHB8SxgHQNdy8FVXnUoQZQzJkzJjIIScdbEJsHPj+7dsggEB5vrq6Gi8TXe6Ik/csPkQozpjD8fXeHBkhCgKkMQP5xZiNaUEcZFy5qQ4cSuTQbN0Q+aolcW50IIaU0uXl5eQ3kwMvpzI5G8mjZ/mMU8q5N2wOHBKz3ccPH/aiXktJhJzIu9TgQSPTouS5FVEv6LHpBcoCWbJJEEkFJLI4YOMWm+aNMmvVXGVb/luo/ipDokJgwJZ7HCLXcYiktnYgbKPXJG89GA4oQ/Ak78hEsTJGdm9ubo5ub28bxe2ZUHWkAlqrwX4bCYkKRoeMSNjkinNpXLkQj6ppOGuuW9xwxtiQsL3DYFqQDalhNsxzi9OqFcinv+iyBCrvOLeVIWHRYuWfPjSkhOhQx+u8d0WFN3E+vDFOLScFuhXvSWX3cCLUkgzOpAr5EE56ukFJr7LO+jkP2DAfOkKbrV1OpESmu2X3e4HFZiPwRwp0w84ltZP/NiotSNTHtp5HqFrKfZfqOZBQQmIjDZmUnFHJQxtiO8PNFWhqzetRjR5MCrKpkusoQO+41WpHI5RgCwPonXr6XIg3eshGwv6z0KQEZd9b5/GABCMuBznvf0AjkeftUErFSG8fSGwCgRjnJKjNQWL2uj1rZhG56MkcSJyKlZn67JxrOn1k17g6Ig4iHqQE5aBLZ5Ka7VScQURcvY4zyOSg0nqAP9LgLJFIlTg5bw2Ig4OABWDv+ifJBCbfOkKVAHKkTDvPt1ZTFWVshKh7QX+w0drZusev31QNTekeI8XNn+kF/py2oCQd8tUSq2NqzRBrrej/AlKi9LoT4tAveIjHdeD+vVoAAAAASUVORK5CYII=\"}]}"]}}
\ No newline at end of file
diff --git a/Eskape graffat/background1.png b/Eskape graffat/background1.png
new file mode 100644
index 0000000000000000000000000000000000000000..e468d7cc4df351624d6ba727c77915746bc169ef
Binary files /dev/null and b/Eskape graffat/background1.png differ
diff --git a/Eskape graffat/floor.piskel b/Eskape graffat/floor.piskel
new file mode 100644
index 0000000000000000000000000000000000000000..fbf4b4e3b361369cb13c4b7b18538bb129cd6d27
--- /dev/null
+++ b/Eskape graffat/floor.piskel	
@@ -0,0 +1 @@
+{"modelVersion":2,"piskel":{"name":"floor","description":"background art","fps":12,"height":32,"width":32,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABGElEQVRYR+2XQWrDMBBFLQIGg8CQVei6dF26LjlAz9pj5AA9QA9QyCpgCASCyxM8MzHZezMDRrY08+frSRuXbuMoG/fv0kASSAJJIAkkgSSQBJJAEkgC2xP4qHV+r7X7u926utu13wTG3+u1jTzT/d4ewzm+mT/0/ZJnDnrMx4h1apev/X5+HYZmgLAxxYhrav1uY004kk+tesyjj64arpNT3oahGbAxBVGAtbj79c7i2nq3kZDN0fuZpsVM4QhEFR1yLN/n8wNCixW2uSYlSe3pclkoeETmSYf58tL3s7umEFESNAOZz3F8uCPi926YH93SLAY6z6Icx3H20kWcUQCn7CgGc5KjHhPPmqBDnmu+22shsNVf8j+U7sBWs/66NgAAAABJRU5ErkJggg==\"}]}"]}}
\ No newline at end of file
diff --git a/Eskape graffat/floor.png b/Eskape graffat/floor.png
new file mode 100644
index 0000000000000000000000000000000000000000..83a2cfee48a38286ed65e539ab040727970280f1
Binary files /dev/null and b/Eskape graffat/floor.png differ
diff --git a/Eskape graffat/skull_logo.piskel b/Eskape graffat/skull_logo.piskel
new file mode 100644
index 0000000000000000000000000000000000000000..8b92b1bbaa8fc3d54b1b388ea09d33212137d8f1
--- /dev/null
+++ b/Eskape graffat/skull_logo.piskel	
@@ -0,0 +1 @@
+{"modelVersion":2,"piskel":{"name":"floor","description":"background art","fps":12,"height":32,"width":32,"layers":["{\"name\":\"Layer 1\",\"opacity\":1,\"frameCount\":1,\"chunks\":[{\"layout\":[[0]],\"base64PNG\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAtElEQVRYR+2Vuw2AMAxEyRKUbMS0bETJEqAUlk5W4k9ShOKoANnn84uTlG3xUxbX32ggReDYzzeyZPdzhXVDgVjYE8/E1mZMA1kxpBPNdQ1gxyIq/7zvaqjGWNT+b6B2gR1bRHTHmlBrgF0CPQMojpj1O+ZPG9BD1iMjcdMEBKkIavze0njdu9uwta1aRbPYUTd0ECHSiAHvsKKBKQJLLqNI0dGY1BCOFrHyaIAESIAESIAEPsM6zCFtsXCxAAAAAElFTkSuQmCC\"}]}"]}}
\ No newline at end of file
diff --git a/Eskape graffat/skull_logo.png b/Eskape graffat/skull_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..774a5ad450900c5efb087e16f5fbe878854699ff
Binary files /dev/null and b/Eskape graffat/skull_logo.png differ
diff --git a/Eskape/Eskape.sln b/Eskape/Eskape.sln
new file mode 100644
index 0000000000000000000000000000000000000000..73504281c626c3421a907f63aea17be83df0d45a
--- /dev/null
+++ b/Eskape/Eskape.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31624.102
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Eskape", "Eskape\Eskape.csproj", "{B7EF3412-4F45-4B03-A087-96D61F6A2600}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B7EF3412-4F45-4B03-A087-96D61F6A2600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B7EF3412-4F45-4B03-A087-96D61F6A2600}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B7EF3412-4F45-4B03-A087-96D61F6A2600}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B7EF3412-4F45-4B03-A087-96D61F6A2600}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {225DE9E5-DC87-4140-9C55-15EDD7A38A00}
+	EndGlobalSection
+EndGlobal
diff --git a/Eskape/Eskape/Content/Box3.png b/Eskape/Eskape/Content/Box3.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6019d072bad274ad545b6312ec0da287e0dc53c
Binary files /dev/null and b/Eskape/Eskape/Content/Box3.png differ
diff --git a/Eskape/Eskape/Content/Enemy1.png b/Eskape/Eskape/Content/Enemy1.png
new file mode 100644
index 0000000000000000000000000000000000000000..b3ff4aeb5a4d5c4112a6246a36e5823cb35f2ac0
Binary files /dev/null and b/Eskape/Eskape/Content/Enemy1.png differ
diff --git a/Eskape/Eskape/Content/PlayerHero.png b/Eskape/Eskape/Content/PlayerHero.png
new file mode 100644
index 0000000000000000000000000000000000000000..f12436f4c21db46d83b98fe27ea9cb9323a30a5e
Binary files /dev/null and b/Eskape/Eskape/Content/PlayerHero.png differ
diff --git a/Eskape/Eskape/Content/PlayerHero1.png b/Eskape/Eskape/Content/PlayerHero1.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e35f2f1e0d0e48f63c5085882756eac30862abb
Binary files /dev/null and b/Eskape/Eskape/Content/PlayerHero1.png differ
diff --git a/Eskape/Eskape/Content/background1.png b/Eskape/Eskape/Content/background1.png
new file mode 100644
index 0000000000000000000000000000000000000000..e468d7cc4df351624d6ba727c77915746bc169ef
Binary files /dev/null and b/Eskape/Eskape/Content/background1.png differ
diff --git a/Eskape/Eskape/Content/floor.png b/Eskape/Eskape/Content/floor.png
new file mode 100644
index 0000000000000000000000000000000000000000..83a2cfee48a38286ed65e539ab040727970280f1
Binary files /dev/null and b/Eskape/Eskape/Content/floor.png differ
diff --git a/Eskape/Eskape/Content/kentta1.txt b/Eskape/Eskape/Content/kentta1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..383a616a8f818980cbc73bf9654a45206de09ae2
--- /dev/null
+++ b/Eskape/Eskape/Content/kentta1.txt
@@ -0,0 +1,17 @@
+         *
+         ##
+
+       *   B*
+       ##  ##
+
+     *    B  B *
+     ##  ##  ##
+
+   *   B*  *B   *     
+   ##  ##  ##  ##
+
+ *    *      B*   *
+ ##  ##  ##  ##  ##
+
+        N    E
+######################
diff --git a/Eskape/Eskape/Content/maali.wav b/Eskape/Eskape/Content/maali.wav
new file mode 100644
index 0000000000000000000000000000000000000000..d59487214e456fc654096d0f3284661051590b3d
Binary files /dev/null and b/Eskape/Eskape/Content/maali.wav differ
diff --git a/Eskape/Eskape/Content/norsu.png b/Eskape/Eskape/Content/norsu.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd22e5b3ad58e4a2a3825b313054cbec58e3c788
Binary files /dev/null and b/Eskape/Eskape/Content/norsu.png differ
diff --git a/Eskape/Eskape/Content/skull_logo.png b/Eskape/Eskape/Content/skull_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..774a5ad450900c5efb087e16f5fbe878854699ff
Binary files /dev/null and b/Eskape/Eskape/Content/skull_logo.png differ
diff --git a/Eskape/Eskape/Content/tahti.png b/Eskape/Eskape/Content/tahti.png
new file mode 100644
index 0000000000000000000000000000000000000000..12f4398771471bc9a704358049b6d6dd07f9b974
Binary files /dev/null and b/Eskape/Eskape/Content/tahti.png differ
diff --git a/Eskape/Eskape/Eskape.cs b/Eskape/Eskape/Eskape.cs
new file mode 100644
index 0000000000000000000000000000000000000000..0f8737015a318744c7e4edf40773c16f736ecf93
--- /dev/null
+++ b/Eskape/Eskape/Eskape.cs
@@ -0,0 +1,150 @@
+using Jypeli;
+using Jypeli.Assets;
+using Jypeli.Controls;
+using Jypeli.Widgets;
+using System;
+using System.Collections.Generic;
+
+public class Eskape : PhysicsGame
+{
+    private const double NOPEUS = 150;
+    private const double HYPPYNOPEUS = 900;
+    private const int RUUDUN_KOKO = 20;
+
+    private PlatformCharacter pelaaja1;
+
+    private Image pelaajanKuva = LoadImage("PlayerHero1.png");
+    private Image enemyPic = LoadImage("Enemy1.png");
+    private Image tahtiKuva = LoadImage("tahti.png");
+    private Image boxPic = LoadImage("Box3.png");
+    private Image floorPic = LoadImage("floor.png");
+    private Image taustakuva = LoadImage("background1.png");
+
+
+    private SoundEffect maaliAani = LoadSoundEffect("maali.wav");
+
+    public override void Begin()
+    {
+        Gravity = new Vector(0, -1500);
+
+        LuoKentta();
+        LisaaNappaimet();
+
+        Camera.Follow(pelaaja1);
+        Camera.ZoomFactor = 1.8;
+        Camera.StayInLevel = true;
+
+        MasterVolume = 0.5;
+    }
+
+    private void LuoKentta()
+    {
+        TileMap kentta = TileMap.FromLevelAsset("kentta1.txt");
+        kentta.SetTileMethod('#', LisaaTaso);
+        kentta.SetTileMethod('*', LisaaTahti);
+        kentta.SetTileMethod('N', LisaaPelaaja);
+        kentta.SetTileMethod('E', LisaaVihollinen);
+        kentta.SetTileMethod('B', LisaaLaatikko);
+        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
+        Level.CreateBorders();
+        Level.Background.Image = taustakuva;
+        Level.Background.TileToLevel();
+    }
+
+    private void LisaaTaso(Vector paikka, double leveys, double korkeus)
+    {
+        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
+        taso.Position = paikka;
+        taso.Image = floorPic;
+        taso.Tag = "floor";
+        Add(taso);
+    }
+
+    private void LisaaTahti(Vector paikka, double leveys, double korkeus)
+    {
+        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
+        tahti.IgnoresCollisionResponse = true;
+        tahti.Position = paikka;
+        tahti.Image = tahtiKuva;
+        tahti.Tag = "tahti";
+        Add(tahti);
+    }
+
+    private void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
+    {
+        pelaaja1 = new PlatformCharacter(leveys, korkeus);
+        pelaaja1.Position = paikka;
+        pelaaja1.Mass = 4.0;
+        pelaaja1.Image = pelaajanKuva;
+        pelaaja1.Weapon = new AssaultRifle(0, 0);
+        pelaaja1.Weapon.Ammo.Value = 999;
+        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
+        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
+        Add(pelaaja1);
+    }
+
+    private void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
+    {
+        // tähän tulee vihollinen
+        PhysicsObject enemy1 = new PhysicsObject(leveys, korkeus);
+        enemy1.Position = paikka;
+        enemy1.Image = enemyPic;
+        Add(enemy1);
+    }
+
+    private void LisaaLaatikko(Vector paikka, double leveys, double korkeus)
+    {
+        // tähän tulee vihollinen
+        PhysicsObject box = new PhysicsObject(leveys, korkeus);
+        box.Position = paikka;
+        box.Image = boxPic;
+        Add(box);
+    }
+
+    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", pelaaja1, -NOPEUS);
+        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, NOPEUS);
+        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, HYPPYNOPEUS);
+        Keyboard.Listen(Key.RightControl, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
+
+        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
+    }
+
+    void AmmuAseella(PlatformCharacter pelaaja)
+    {
+        PhysicsObject ammus = pelaaja.Weapon.Shoot();
+
+        if (ammus != null)
+        {
+            ammus.Size *= 3;
+            // ammus.Image = ...
+            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
+        }
+    }
+
+    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
+    {
+        ammus.Destroy();
+    }
+    private void Liikuta(PlatformCharacter hahmo, double nopeus)
+    {
+        hahmo.Walk(nopeus);
+    }
+
+    private void Hyppaa(PlatformCharacter hahmo, double nopeus)
+    {
+        hahmo.Jump(nopeus);
+    }
+
+    private void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
+    {
+        maaliAani.Play();
+        MessageDisplay.Add("Keräsit tähden!");
+        tahti.Destroy();
+    }
+}
+
diff --git a/Eskape/Eskape/Eskape.csproj b/Eskape/Eskape/Eskape.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..b22fce8875b4048a9a14a83f278ee329a3bf78e2
--- /dev/null
+++ b/Eskape/Eskape/Eskape.csproj
@@ -0,0 +1,31 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <OutputType>WinExe</OutputType>
+        <TargetFramework>net5.0</TargetFramework>
+        <PublishReadyToRun>false</PublishReadyToRun>
+        <TieredCompilation>false</TieredCompilation>
+    </PropertyGroup>
+
+    <ItemGroup>
+        <PackageReference Include="Jypeli.NET" Version="10.*" />
+        <PackageReference Include="Jypeli.FarseerPhysics.NET" Version="1.0.*" />
+    </ItemGroup>
+
+    <ItemGroup>
+        <None Update="Content\kentta1.txt">
+            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+        </None>
+        <None Update="Content\maali.wav">
+            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="Content\norsu.png">
+            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+        <None Update="Content\tahti.png">
+            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+        </None>
+    </ItemGroup>
+
+</Project>
+
diff --git a/Eskape/Eskape/Ohjelma.cs b/Eskape/Eskape/Ohjelma.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3cf9c46c194bea0f7352780b9da69200e61f5ad7
--- /dev/null
+++ b/Eskape/Eskape/Ohjelma.cs
@@ -0,0 +1,25 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+#endregion
+
+namespace Program
+{
+    /// <summary>
+    /// The main class.
+    /// </summary>
+    public static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            using (var game = new Eskape())
+                game.Run();
+        }
+    }
+}