From 6f30a0c6a9851b865f9a247f828e6f10681a1dbe Mon Sep 17 00:00:00 2001
From: Peder Spooren <peder.spooren@student.uib.no>
Date: Fri, 25 Mar 2022 17:27:52 +0100
Subject: [PATCH] Added documentation and fixed various other things for
 deadline

---
 Deliverables/ObligatoriskOppgave1.md          |  20 +--
 Deliverables/ObligatoriskOppgave2.md          | 129 ++++++++++++++++++
 pom.xml                                       |  10 +-
 .../java/{inf112/skeleton => }/app/AGame.java |   8 +-
 .../java/{inf112/skeleton => }/app/Main.java  |   2 +-
 .../skeleton/app => }/entities/IItem.java     |   2 +-
 .../skeleton/app => }/entities/IPlayer.java   |   2 +-
 .../skeleton/app => }/entities/IScore.java    |   2 +-
 .../skeleton/app => }/entities/Player.java    |  25 +++-
 .../skeleton/app => }/entities/Score.java     |   2 +-
 src/main/java/inf112/skeleton/app/Logo.java   |  67 ---------
 .../inf112/skeleton/app/entities/Player2.java | 100 --------------
 .../inf112/skeleton/app/entities/Ruby.java    |  50 -------
 .../skeleton/app/scenes => overlay}/Hud.java  |   8 +-
 .../skeleton/app => }/screens/GameScreen.java |  27 +---
 .../skeleton/app => }/screens/MainMenu.java   |   4 +-
 .../skeleton/app => }/tools/Contact.java      |  15 +-
 .../java/inf112/skeleton/app/AppTest.java     |   2 +
 18 files changed, 199 insertions(+), 276 deletions(-)
 rename src/main/java/{inf112/skeleton => }/app/AGame.java (85%)
 rename src/main/java/{inf112/skeleton => }/app/Main.java (92%)
 rename src/main/java/{inf112/skeleton/app => }/entities/IItem.java (96%)
 rename src/main/java/{inf112/skeleton/app => }/entities/IPlayer.java (90%)
 rename src/main/java/{inf112/skeleton/app => }/entities/IScore.java (94%)
 rename src/main/java/{inf112/skeleton/app => }/entities/Player.java (88%)
 rename src/main/java/{inf112/skeleton/app => }/entities/Score.java (92%)
 delete mode 100644 src/main/java/inf112/skeleton/app/Logo.java
 delete mode 100644 src/main/java/inf112/skeleton/app/entities/Player2.java
 delete mode 100644 src/main/java/inf112/skeleton/app/entities/Ruby.java
 rename src/main/java/{inf112/skeleton/app/scenes => overlay}/Hud.java (89%)
 rename src/main/java/{inf112/skeleton/app => }/screens/GameScreen.java (78%)
 rename src/main/java/{inf112/skeleton/app => }/screens/MainMenu.java (97%)
 rename src/main/java/{inf112/skeleton/app => }/tools/Contact.java (83%)

diff --git a/Deliverables/ObligatoriskOppgave1.md b/Deliverables/ObligatoriskOppgave1.md
index 32ea68c..b70638f 100644
--- a/Deliverables/ObligatoriskOppgave1.md
+++ b/Deliverables/ObligatoriskOppgave1.md
@@ -1,10 +1,14 @@
-# Deloppgave 1:
-Gruppe 4, team 1: Marius, Oscar, Peder og Audun
-## Erfaring
+# Oblig 2 – A-Game
+
+* Team: A-Team (Gruppe 4): Oscar Nysten, Audun Haugen, Marius Aasebø, Peder Spooren
+
+## Deloppgave 1:
+
+### Erfaring
 
 Vi har lik erfaring siden alle går på datateknologi i samme kull.
 
-## Roller
+### Roller
 
 Teamlead		 	     - Marius<br>
 Grafikkansvarlig	     - Oscar<br>
@@ -19,7 +23,7 @@ Etterhvert som vi jobber videre med prosjektet kan vi tilpasse roller.
 Vi kjenner ikke hverandre fra før, og det vil nok være mer naturlig etterhvert.
 
 
-# Deloppgave 2:
+## Deloppgave 2:
 
 Vi valgte kanban-metodikken, da vi planlegger omfattende bruk av Trello.
 Teamet likte kanban på grunn av enkelt oppsett, få regler og fleksibel arbeidsmettodikk.
@@ -34,7 +38,7 @@ Teamet likte kanban på grunn av enkelt oppsett, få regler og fleksibel arbeids
 
 
 
-# Deloppgave 3:
+## Deloppgave 3:
 
 - Ett plattform spill hvor man kan hoppe, eliminere fiender, mulighet for å stå på plattformer.
 
@@ -102,9 +106,9 @@ Teamet likte kanban på grunn av enkelt oppsett, få regler og fleksibel arbeids
     - Flytte spiller (vha taster e.l.)
 
 
-# Deloppgave 5:
+## Deloppgave 5:
 
-#Oppsumering:
+## Oppsumering:
 
 Vi har jobbet ca. 15 timer i løpet av denne obligatoriske oppgaven, dette har vi gjort i fellesskap.
 Vi har samlet oss 6 ganger, ved bruk av grupperom, gruppetimer og ved VilVite senteret.
diff --git a/Deliverables/ObligatoriskOppgave2.md b/Deliverables/ObligatoriskOppgave2.md
index c9cc1a2..2ea6aa3 100644
--- a/Deliverables/ObligatoriskOppgave2.md
+++ b/Deliverables/ObligatoriskOppgave2.md
@@ -2,6 +2,9 @@
 
 * Team: A-Team (Gruppe 4): Oscar Nysten, Audun Haugen, Marius Aasebø, Peder Spooren
 
+## Deloppgave 1:
+
+
 ### Referat av teammøter:
 
 #### 17.03.2022
@@ -24,3 +27,129 @@ Tilstede: Oscar Nysten, Peder Spooren
 Utforsket mulige løsninger for problemene nevnt i forrige referat. Her ble kollisjon og bevegelse/gravitasjon fikset til en akseptabel implementasjon som funker. Vi har også småfikset på interfaces basert på denne implementasjonen, i tillegg til å fikse på enkelte ting ut i fra tilbakemeldingen vi fikk fra obligatorisk 1. Vi slet en del med å finne ut av bevegelse/gravitasjon, da bevegelsen fungerte som å stå på is (ingen "friksjon") og gravitasjonen ikke fungerte i det hele tatt i første omgang. Etter å ha søkt litt på nettet fant vi ut av løsninger til disse problemene som ga oss en grei implementasjon for disse funksjonene. Vi diskuterte videre hvordan vi skulle jobbe i morgen da det er frist for obligatorisk 2, hvor vi ble enige om at vi skal jobbe sammen med dokumentasjon som er påkrevd til den aktuelle obligatoriske oppgaven. Vi ble også enige om hva som skal gjøres til neste gang, som var å utforske akselerasjon av spiller og utvidelse av kartet, out-of-bounds detection og diverse rydding av kode. 
 
 
+#### 25.03.2022
+Tilstede: Oscar Nysten, Peder Spooren, Marius Aasebø
+
+Planen for dette møtet var å gjøre ferdig alt av dokumentasjon og enkel rydding fram til deadline obligatorisk 2. Her ble det mye felles diskutering av de punktene som står i obligatorisk 2-4 i tillegg til diskusjon om hva som skulle være med i siste release, som tok mesteparten av tiden. Vi diskuterte også videre smått hva vi tenker å prioritere etter denne deadlinen, som vi ble enige om er fiender, poengsystem og mer fokus på tester. Vi gikk også gjennom tilbakemeldingen vi fikk fra obligatorisk 1, hvor vi fikset på det som kunne fikses. Til neste gang ble vi enige om å utforske elementer som fiender, og utbrede tester, i tillegg til klassediagram (som skal være klart til deadline) og å utforske poengsystemet videre. 
+
+
+### Oppsummering (for punktene under referat)
+Rollene i teamet trenger en liten oppdatering så vi gjør følgende endringer:
+
+Produktansvarlig / Grafikkansvarlig 	- Marius <br>
+Physicsansvarlig / kvalitetskontroll	- Oscar <br>
+Dokumentasjonsansvarlig / Scrum master   - Peder <br>
+Git-expert / Kundekontakt 				- Audun <br>
+
+De første rollene i obligatorisk 1 var mer som placeholders roller, da vi følte etterhvert når vi startet prosjektet at rollene ville komme mer naturlig frem til oss etterhvert som vi jobber, enn om vi tvinger på roller gruppemedlemmer eventuelt/etterhvert ikke vil ha. Dette har vi funnet ut funket bra for oss. 
+
+#### Rollenes betydning:
+- Produktansvarlig er personen som har ansvaret til å definere hvordan spillet skal være og se ut. Dette inkluderer også å gjennomgå brukerhistorier, i tillegg til å komme med diverse idéer.
+
+- Grafikkansvarlig er ansvarlig for alt av det grafiske i spillet. Dette gjelder utseende av spillkarakter/spillbrett, menyer og diverse andre "skjermer" (loading screen, game-over screen).
+
+- Physicsansvarlig er ansvarlig for alt om fysikk og movement av spillet og andre objekter i spillet. Dette inkluderer da tyngdekraft, kollisjon og alt av movement til spilleren. 
+
+- Kvalitetskontroll er personen som forsikrer at koden ser ryddig og pen ut, i tillegg til at koden fungerer som den skal i spillet når man kjører det. Her kan man tenke at tester skal gjøre mye av jobben automatisk, men kvalitetskontrolløren skal overse leveransen og de manuelle testene. 
+
+- Dokumentasjonsansvarlig er ansvarlig for alt av dokumentasjon i prosjektet. Denne personen skal ikke skrive dokumentasjonen til metodene/klassene andre personer skriver, men denne personen skal kontrollere om det ser pent, riktig og forståelig ut.
+
+- Scrum master er personen som styrer teamet, alt fra å dirigere møter og holde prosjektet i gang. Denne personen er altså den som tar initiativ, og om det er noe uklart eller uenigheter, så er det scrum master som har veto.
+
+- Git-experten skal ha kontroll over alt som skjer i git og repositoriet. Dette gjelder pushing, pulling, merging og leveransekontroll (sammen med kvalitetskontrollør) for å nevne noe. 
+
+- Kundekontakt er den personen som har kontakt med kunde, enten om det er kunden som har problem, eller om det er vi som etterspør tilbakemelding. 
+
+Disse nye rollene har fungert veldig greit så langt, da disse rollene kom fram naturlig mens vi har jobbet med prosjektet. Her kan vi nevne at alle sammen er med på å implementerer metoder/klasser/tester, så det ikke bare er en del av gruppen som jobber med selve kodingen/denne rollen.
+
+
+#### Prosjektmetodikk
+Som nevnt i tilbakemeldingen fra obligatorisk 1, så gir det mening at scrum egner seg bedre. Dette fordi emnet er satt opp som sprint/milepæl modell. I tillegg ønsker vi å bruke Trello, som nevnt tidligere, noe som også kan bli brukt under scrum-metodikken. Nå igjen nevner jeg også punktet om fleksibilitet, som også scrum har noe av. Vi valgte i første omgang kanban, noe som ble litt dårlig forklart fram, men som vi også tror at vi var litt usikre på. Men siden emnet var satt opp slikt til å ha en sprint/milepæl modell, gitt vi naturlig over til en scrum-lignende metodikk. 
+
+- Vi lagde en liten og enkel plan på starten av prosjektet slik at vi kunne få kommet i gang. 
+
+- Da, ved hjelp av de tilgitte MVP-ene (og de vi prioritierte), bygde vi opp den første iterasjonen av spillet vårt. 
+
+- Vi lagde tester til denne første iterasjonen (men som ble endret/fjernet pga. endringer gjort i senere stadiet av spillet), i tillegg til å teste spillet manuelt ved å kjøre det. 
+
+- Nærme deadline, bestemte vi oss for hva som skulle bli sendt til kunde gjennom vurdering av prosjektet.
+
+Dette ble da vår sprint 1, og prosessen blir da repetert i flere sprints, som tilsvarer den sprint modellen scrum har. Altså, obligatorisk 1 er sprint 1, obligatorisk 2 er sprint 2 osv. 
+
+Vi skal lage en backlog i form av brukerhistorier, hvor vi oppdaterer obligatorisk 1 sin liste av brukerhistorier med en ny prioritert liste med disse hvor de fullførte er fjernet og eventuelle nye er lagt til. Vi vil også fortsette å bruke Trello for å holde oss organisert, hvor vi skal bli bedre på å konstruere kortene, da dette ble nevnt i tilbakemeldingen for obligatorisk 1.
+
+
+#### Gruppedynamikk
+Gruppedynamikken har fungert ganske bra så langt. Vi har ikke har noen store uenigheter, og de enkelte småe vi har hatt løste seg veldig fort gjennom hurtig diskusjon. Mye av arbeidet har blitt gjort i fellesskap, så vi har blitt enige og diskutert om alt. 
+
+Kommunikasjonen har fungert bra. Ingen av oss har ingen problem med å ta ordet om det er noe man lurer på, og vi tenker så og si i lik bane så kommunikasjonen har gått naturlig fram så langt.
+
+
+#### Retrospektiv
+Vi har jobbet ganske bra sammen til nå, og vil fortsette slik fremover, hvis ikke enda bedre om mulig. Vi fokuserer videre på arbeidsvurdering slik at ting ikke overlapper, kommunikasjon i forhold til merging (accepting) slik at det ikke blir noen conflicts (noe som var et problem i starten av obligatorisk 1). Vi fortsetter også å fokusere videre på arbeid i fellesskap slik vi har gjort det så langt, hvor vi da gir oss selv "hjemmelekser" av ting som skal jobbes til neste møte, da det er dette som har fungert godt for oss. Alt av dette kan bli bedre, noe som vi prøver å strekke oss etter, som er grunnen til at vi fokuserer på disse områdene fremover.
+
+
+Med tanke på hvem som committer og hvor mange ganger, så blir mesteparten av arbeidet gjort i fellesskap, noe som da kan være grunnen til at en person eller flere personer committer oftere enn andre. Her prøver vi da å veksle mellom hvem som har kontroll av kodingen/endringer under møtene.
+ 
+ 
+ 
+## Deloppgave 2:
+
+### "Stretch goal"
+Her ble vi spurt om å bestemme oss for én litt mer avansert ting som skal bli lagt til i spillet. Her har vi bestemt oss for å i alle fall fikse multiplayer på samme maskin. Dette har vi bestemt oss for grunnet at det virker overkommelig for oss å utføre dette innenfor den rimelige tiden vi har for prosjektet. I tillegg har vi diskutert om å porte til en annen platform (Android), noe som vi tenker å prøve å gjøre om vi føler vi har tid nok. 
+
+
+### MVP og annet
+#### Prioriteringsliste (MVPs / krav):
+(basert på obligatorisk 1)
+
+1. Vise et spillebrett
+2. Vise spiller på spillebrett
+3. Flytte spiller (vha taster e.l.)
+4. Tyngdekraft på spilleren
+5. Spiller interagerer med terreng
+6. Start-skjerm ved oppstart
+7. Hud som viser poeng
+8. Spiller har poeng og interagerer med poenggjenstande
+9. Vise fiender/monstre; de skal interagere med terreng og spill
+10. Spiller kan dø (ved kontakt med fiender, eller ved å falle utfor skjermen)
+11. Game-over skjerm
+12. Restart-funksjon 
+13. Musikk/sound effects
+14. MÃ¥l for spillbrett (enten et sted, en mengde poeng, drepe alle fiender e.l.
+15. Flere nivåer/brett.
+16. Nytt nivå når forrige er ferdig
+17. Støtte flere spillere (enten på samme maskin eller over nettverk)
+18. Android port (stretch goal)
+
+Dette er foreløpig prioriteringsliste som er basert på de MVP-kravene fra obligatorisk 1, som vi har oppdatert basert på hva vi vil gjøre med produktet. Her har vi lagt til/endret 6, 9, 11, 12, 13, 15, 17.
+De kravene vi har gjort så langt er 1-3 (15.03.2022). 
+
+De nye funksjonalitetene vi har lagt til har vi prioritert basert på hvilke tilknytninger funksjonaliteten/kravet har til andre funksjonaliteter/krav. F.eks. punkt 11 har tilknytting til punkt 9 og 10 og vi har da valgt å sette prioriteringen der. Prioriteringen blir altså bestemt gjennom hva som virker mest naturlig å jobbe med videre etter at ett krav er ferdig.
+
+
+#### Brukerhistorier 
+Her skal vi skrive brukerhistorier av de kravene som vi har planer om å få fullført fram til deadline. 
+
+
+#### Akseptansekriterer
+
+
+
+
+Prioritering av oppgavene er basert på prioriteringslisten skrevet over, hvor mye av fokuset vil bli lagt på å få legge til tyngdekraft og kollisjon med spiller, da dette utgjør mye av spillet. 
+
+Vi har gjort noen få justeringer på MVP-kravene basert på listen vi fikk i obligatorisk 1. Disse endringene har vært å dele opp noen av de eksisterende kravene, i tillegg til at vi har lagt til noen nye og hvor vi også da har endret litt på rekkefølgen av kravene. Grunnen til dette var for å skape en bedre "flyt" mellom kravene og for å ikke gjøre hver av kravene for store.
+
+
+#### Bugliste
+Her er en liste over nåværende bugs som ikke har blitt fikset, og som vi vet om:
+- Man kan falle ned for alltid om man går utenfor "skjermen".
+- Hvis man flytter seg i en retning og så plutselig flytter seg i annen/motsatt retning, hvor man fortsatt holder tasten for originale retning inn, og så slipper  tasten for den nye retningen, så stopper spilleren opp.
+
+
+#### Oversikt over hva som har blitt fikset basert på tilbakemelding:
+- Lagt til referate av møter.
+- Endringer av roller og mer utdypende begrunnelse og forklaring av roller. 
+- Endring og mer utdypende forklaring av prosjekt metodikk.
+- 
diff --git a/pom.xml b/pom.xml
index d91f147..0b8e0a4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,23 +4,23 @@
 	<modelVersion>4.0.0</modelVersion>
 
 	<!-- FIXME - set group id -->
-	<groupId>inf112.skeleton.app</groupId>
+	<groupId>inf112-agame</groupId>
 	<!-- FIXME - set artifact name -->
-	<artifactId>gdx-app</artifactId>
+	<artifactId>gdx-inf112-agame</artifactId>
 	<version>1.0-SNAPSHOT</version>
 	<packaging>jar</packaging>
 
 	<!-- FIXME - set app name -->
-	<name>mvn-app</name>
+	<name>agame</name>
 	<!-- FIXME change it to the project's website -->
-	<url>http://www.example.com</url>
+	<url></url>
 
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<maven.compiler.release>17</maven.compiler.release>
 		<libgdx.version>1.10.0</libgdx.version>
 		<!-- FIXME - set to app's main class' -->
-		<main.class>inf112.skeleton.app.Main</main.class>
+		<main.class>app.Main</main.class>
 	</properties>
 
 	<dependencies>
diff --git a/src/main/java/inf112/skeleton/app/AGame.java b/src/main/java/app/AGame.java
similarity index 85%
rename from src/main/java/inf112/skeleton/app/AGame.java
rename to src/main/java/app/AGame.java
index a0ba04a..684396c 100644
--- a/src/main/java/inf112/skeleton/app/AGame.java
+++ b/src/main/java/app/AGame.java
@@ -1,11 +1,11 @@
-package inf112.skeleton.app;
+package app;
 
 import com.badlogic.gdx.Game;
-import inf112.skeleton.app.entities.Player;
-import inf112.skeleton.app.screens.MainMenu;
-
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 
+import entities.Player;
+import screens.MainMenu;
+
 
 public class AGame extends Game {
 	public static final int V_Width = 640;
diff --git a/src/main/java/inf112/skeleton/app/Main.java b/src/main/java/app/Main.java
similarity index 92%
rename from src/main/java/inf112/skeleton/app/Main.java
rename to src/main/java/app/Main.java
index c3f261a..efef849 100644
--- a/src/main/java/inf112/skeleton/app/Main.java
+++ b/src/main/java/app/Main.java
@@ -1,4 +1,4 @@
-package inf112.skeleton.app;
+package app;
 
 import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
 import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
diff --git a/src/main/java/inf112/skeleton/app/entities/IItem.java b/src/main/java/entities/IItem.java
similarity index 96%
rename from src/main/java/inf112/skeleton/app/entities/IItem.java
rename to src/main/java/entities/IItem.java
index dce356d..d0c3bbb 100644
--- a/src/main/java/inf112/skeleton/app/entities/IItem.java
+++ b/src/main/java/entities/IItem.java
@@ -1,4 +1,4 @@
-package inf112.skeleton.app.entities;
+package entities;
 
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 
diff --git a/src/main/java/inf112/skeleton/app/entities/IPlayer.java b/src/main/java/entities/IPlayer.java
similarity index 90%
rename from src/main/java/inf112/skeleton/app/entities/IPlayer.java
rename to src/main/java/entities/IPlayer.java
index 06e4ce7..a7c45b5 100644
--- a/src/main/java/inf112/skeleton/app/entities/IPlayer.java
+++ b/src/main/java/entities/IPlayer.java
@@ -1,4 +1,4 @@
-package inf112.skeleton.app.entities;
+package entities;
 
 /**
  * Interface that extends IItem which govern the methods for a player.
diff --git a/src/main/java/inf112/skeleton/app/entities/IScore.java b/src/main/java/entities/IScore.java
similarity index 94%
rename from src/main/java/inf112/skeleton/app/entities/IScore.java
rename to src/main/java/entities/IScore.java
index 8a3d9cb..44755b5 100644
--- a/src/main/java/inf112/skeleton/app/entities/IScore.java
+++ b/src/main/java/entities/IScore.java
@@ -1,4 +1,4 @@
-package inf112.skeleton.app.entities;
+package entities;
 
 /** 
  * The score starts out at 0 and can increase or decrease whether 
diff --git a/src/main/java/inf112/skeleton/app/entities/Player.java b/src/main/java/entities/Player.java
similarity index 88%
rename from src/main/java/inf112/skeleton/app/entities/Player.java
rename to src/main/java/entities/Player.java
index 7e348b5..3225c86 100644
--- a/src/main/java/inf112/skeleton/app/entities/Player.java
+++ b/src/main/java/entities/Player.java
@@ -1,4 +1,4 @@
-package inf112.skeleton.app.entities;
+package entities;
 
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.Input;
@@ -8,8 +8,15 @@ import com.badlogic.gdx.graphics.g2d.Sprite;
 import com.badlogic.gdx.graphics.g2d.SpriteBatch;
 import com.badlogic.gdx.maps.tiled.TiledMapTileLayer;
 import com.badlogic.gdx.math.Vector2;
-import inf112.skeleton.app.tools.Contact;
 
+import tools.Contact;
+
+/**
+ * Player class, includes collision with surroundings and movement.
+ * 
+ * © dermetfan, All rights reserved
+ * URL: https://hg.sr.ht/~dermetfan/tiledmapgame/browse/TiledMapGame/src/net/dermetfan/tiledMapGame/entities/Player.java?rev=tip
+ */
 public class Player extends Sprite implements IPlayer, InputProcessor {
 	
 	Vector2 velocity = new Vector2();
@@ -93,7 +100,12 @@ public class Player extends Sprite implements IPlayer, InputProcessor {
 
         // calculate the increment for step in #collidesLeft() and #collidesRight()
         increment = collisionLayer.getTileWidth();
-        increment = getWidth() < increment ? getWidth() / 2 : increment / 2;
+        if(getWidth() < increment) {
+        	increment = getWidth() / 2;
+        }
+        else {
+        	increment = increment / 2;
+        }
 
         if(velocity.x < 0) // going left
             collisionX = cont.collidesLeft();
@@ -111,7 +123,12 @@ public class Player extends Sprite implements IPlayer, InputProcessor {
 
         // calculate the increment for step in #collidesBottom() and #collidesTop()
         increment = collisionLayer.getTileHeight();
-        increment = getHeight() < increment ? getHeight() / 2 : increment / 2;
+        if(getWidth() < increment) {
+        	increment = getWidth() / 2;
+        }
+        else {
+        	increment = increment / 2;
+        }
 
         if(velocity.y < 0) // going down
             canJump = collisionY = cont.collidesBottom();
diff --git a/src/main/java/inf112/skeleton/app/entities/Score.java b/src/main/java/entities/Score.java
similarity index 92%
rename from src/main/java/inf112/skeleton/app/entities/Score.java
rename to src/main/java/entities/Score.java
index c4ca3b4..7c30d62 100644
--- a/src/main/java/inf112/skeleton/app/entities/Score.java
+++ b/src/main/java/entities/Score.java
@@ -1,4 +1,4 @@
-package inf112.skeleton.app.entities;
+package entities;
 
 /**
  * Score class implements interface IScore.
diff --git a/src/main/java/inf112/skeleton/app/Logo.java b/src/main/java/inf112/skeleton/app/Logo.java
deleted file mode 100644
index 8674bd3..0000000
--- a/src/main/java/inf112/skeleton/app/Logo.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package inf112.skeleton.app;
-
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Screen;
-import com.badlogic.gdx.graphics.GL30;
-import com.badlogic.gdx.graphics.Texture;
-import com.badlogic.gdx.graphics.g2d.Sprite;
-import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-
-public class Logo implements Screen {
-	
-	private SpriteBatch batch;
-	private Sprite logo;
-	
-	
-
-	@Override
-	public void show() {
-		batch = new SpriteBatch();
-		
-		
-		Texture logoTexture = new Texture("data/aGame.png");
-		logo = new Sprite(logoTexture);
-		logo.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
-		
-		
-	}
-
-	@Override
-	public void render(float delta) {
-		
-		Gdx.gl.glClearColor(1, 1, 1, 1);
-		Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
-		
-		batch.begin();
-		logo.draw(batch);
-		batch.end();
-		
-	}
-
-	@Override
-	public void resize(int width, int height) {
-	
-	}
-	
-
-	@Override
-	public void pause() {
-		
-	}
-
-	@Override
-	public void resume() {
-		
-	}
-
-	@Override
-	public void hide() {
-		
-	}
-
-	@Override
-	public void dispose() {
-		
-	}
-
-}
diff --git a/src/main/java/inf112/skeleton/app/entities/Player2.java b/src/main/java/inf112/skeleton/app/entities/Player2.java
deleted file mode 100644
index 01a5f53..0000000
--- a/src/main/java/inf112/skeleton/app/entities/Player2.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package inf112.skeleton.app.entities;
-
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.Input;
-import com.badlogic.gdx.graphics.g2d.Sprite;
-import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-import com.badlogic.gdx.maps.tiled.TiledMapTileLayer;
-import com.badlogic.gdx.math.Vector2;
-import inf112.skeleton.app.tools.Contact;
-
-public class Player2 extends Sprite {
-
-
-
-    public float increment;
-    boolean canJump;
-    String blockedKey = "blocked";
-
-    private static int maxHealth = 100;
-    private int damage;
-    private int health;
-    private String name;
-
-    public TiledMapTileLayer collisionLayer;
-
-    /** 
-     * x and y velocity
-     */
-    private Vector2 velocity = new Vector2();
-    public float speed = 200;
-
-    //change 120 to 60*2 if it doesn't work
-    private float movespeed = 60 * 2, gravity = 1 * 1.8f;
-
-    private Contact cont = new Contact(this);
-
-    public Player2(Sprite s) {
-        super(s);
-
-    }
-
-    public void draw(SpriteBatch sb) {
-        update(Gdx.graphics.getDeltaTime());
-        super.draw(sb);
-
-    }
-    public void update(float delta) {
-
-        // apply gravity
-        velocity.y -= gravity * delta;
-
-        // clamp velocity
-        if(velocity.y > speed)
-            velocity.y = speed;
-        else if(velocity.y < -speed)
-            velocity.y = -speed;
-
-        // save old position
-        float oldX = getX(), oldY = getY();
-        boolean collisionX = false, collisionY = false;
-
-        // move on x
-        setX(getX() + velocity.x * delta);
-
-        // calculate the increment for step in #collidesLeft() and #collidesRight()
-        increment = collisionLayer.getTileWidth();
-        increment = getWidth() < increment ? getWidth() / 2 : increment / 2;
-
-        if(velocity.x < 0) // going left
-            collisionX = cont.collidesLeft();
-        else if(velocity.x > 0) // going right
-            collisionX = cont.collidesRight();
-
-        // react to x collision
-        if(collisionX) {
-            setX(oldX);
-            velocity.x = 0;
-        }
-
-        // move on y
-        setY(getY() + velocity.y * delta * 5f);
-
-        // calculate the increment for step in #collidesBottom() and #collidesTop()
-        increment = collisionLayer.getTileHeight();
-        increment = getHeight() < increment ? getHeight() / 2 : increment / 2;
-
-        if(velocity.y < 0) // going down
-            canJump = collisionY = cont.collidesBottom();
-        else if(velocity.y > 0) // going up
-            collisionY = cont.collidesTop();
-
-        // react to y collision
-        if(collisionY) {
-            setY(oldY);
-            velocity.y = 0;
-        }
-    }
-
-
-}
diff --git a/src/main/java/inf112/skeleton/app/entities/Ruby.java b/src/main/java/inf112/skeleton/app/entities/Ruby.java
deleted file mode 100644
index e39d24a..0000000
--- a/src/main/java/inf112/skeleton/app/entities/Ruby.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package inf112.skeleton.app.entities;
-
-import com.badlogic.gdx.graphics.g2d.SpriteBatch;
-
-/**
- * A Ruby class where a ruby is an object that gives points in the game.
- * The class implements IItem.
- * @author Peder Spooren / Marius Aasebø
- *
- */
-public class Ruby implements IItem {
-	private String name;
-	private final int value;
-	private int health;
-	private static final int maxHealth = 1;
-	
-	public Ruby() {
-		name = "Ruby-Duby";
-		value = 1;
-		health = Ruby.maxHealth; 
-	}
-
-	@Override
-	public String getName() {
-		return name;
-	}
-
-	@Override
-	public int getHealth() {
-		return health;
-	}
-
-	@Override
-	public int getMaxHealth() {
-		return Ruby.maxHealth;
-	}
-
-	@Override
-	public int takeDamage(int amount) {
-		health -= amount;
-		return amount;
-	}
-
-	@Override
-	public void drawItem(SpriteBatch spritebatch) {
-		// TODO Auto-generated method stub
-		
-	}
-
-}
diff --git a/src/main/java/inf112/skeleton/app/scenes/Hud.java b/src/main/java/overlay/Hud.java
similarity index 89%
rename from src/main/java/inf112/skeleton/app/scenes/Hud.java
rename to src/main/java/overlay/Hud.java
index 521803c..3f2cc91 100644
--- a/src/main/java/inf112/skeleton/app/scenes/Hud.java
+++ b/src/main/java/overlay/Hud.java
@@ -1,4 +1,4 @@
-package inf112.skeleton.app.scenes;
+package overlay;
 
 import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.OrthographicCamera;
@@ -12,9 +12,9 @@ import com.badlogic.gdx.utils.Disposable;
 import com.badlogic.gdx.utils.viewport.FitViewport;
 import com.badlogic.gdx.utils.viewport.Viewport;
 
-import inf112.skeleton.app.AGame;
-import inf112.skeleton.app.entities.Score;
-import inf112.skeleton.app.screens.GameScreen;
+import app.AGame;
+import entities.Score;
+import screens.GameScreen;
 
 
 //TODO: HUD-en blir vist riktig, men gir blåe bars på sidene av gamescreen, usikker hva som gjør det men det må fikses.
diff --git a/src/main/java/inf112/skeleton/app/screens/GameScreen.java b/src/main/java/screens/GameScreen.java
similarity index 78%
rename from src/main/java/inf112/skeleton/app/screens/GameScreen.java
rename to src/main/java/screens/GameScreen.java
index ddae239..28ab609 100644
--- a/src/main/java/inf112/skeleton/app/screens/GameScreen.java
+++ b/src/main/java/screens/GameScreen.java
@@ -1,4 +1,4 @@
-package inf112.skeleton.app.screens;
+package screens;
 
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.Input;
@@ -16,9 +16,10 @@ import com.badlogic.gdx.maps.tiled.TmxMapLoader;
 import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;
 import com.badlogic.gdx.utils.viewport.FitViewport;
 import com.badlogic.gdx.utils.viewport.Viewport;
-import inf112.skeleton.app.AGame;
-import inf112.skeleton.app.entities.Player;
-import inf112.skeleton.app.scenes.Hud;
+
+import app.AGame;
+import entities.Player;
+import overlay.Hud;
 
 public class GameScreen implements Screen {
 	
@@ -74,7 +75,7 @@ public class GameScreen implements Screen {
         
         game.batch.setProjectionMatrix(hud.stage.getCamera().combined);
         
-//        game.batch.begin();
+        
         mapRenderer.getBatch().begin();
         
         hud.stage.draw();
@@ -82,22 +83,6 @@ public class GameScreen implements Screen {
         
         System.out.println("x: " + player.getX() + " | y: " + player.getY());
         
-//        if(Gdx.input.isKeyPressed(Input.Keys.W) || Gdx.input.isKeyPressed(Input.Keys.UP)) {
-//            player.move(Input.Keys.UP);
-//        }
-//        if(Gdx.input.isKeyPressed(Input.Keys.D) || Gdx.input.isKeyPressed(Input.Keys.RIGHT)) {
-//            player.move(Input.Keys.RIGHT);
-//        }
-//        if(Gdx.input.isKeyPressed(Input.Keys.S) || Gdx.input.isKeyPressed(Input.Keys.DOWN)) {
-//            player.move(Input.Keys.DOWN);
-//        }
-//        if(Gdx.input.isKeyPressed(Input.Keys.A) || Gdx.input.isKeyPressed(Input.Keys.LEFT)) {
-//            player.move(Input.Keys.LEFT);
-//        }
-        	
-        
-        
-//        game.batch.end();
         mapRenderer.getBatch().end();
 		
 	}
diff --git a/src/main/java/inf112/skeleton/app/screens/MainMenu.java b/src/main/java/screens/MainMenu.java
similarity index 97%
rename from src/main/java/inf112/skeleton/app/screens/MainMenu.java
rename to src/main/java/screens/MainMenu.java
index e763c88..989a3cc 100644
--- a/src/main/java/inf112/skeleton/app/screens/MainMenu.java
+++ b/src/main/java/screens/MainMenu.java
@@ -1,11 +1,11 @@
-package inf112.skeleton.app.screens;
+package screens;
 
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.Screen;
 import com.badlogic.gdx.graphics.GL30;
 import com.badlogic.gdx.graphics.Texture;
 
-import inf112.skeleton.app.AGame;
+import app.AGame;
 
 public class MainMenu implements Screen {
 	
diff --git a/src/main/java/inf112/skeleton/app/tools/Contact.java b/src/main/java/tools/Contact.java
similarity index 83%
rename from src/main/java/inf112/skeleton/app/tools/Contact.java
rename to src/main/java/tools/Contact.java
index 7f179aa..64de2de 100644
--- a/src/main/java/inf112/skeleton/app/tools/Contact.java
+++ b/src/main/java/tools/Contact.java
@@ -1,9 +1,15 @@
-package inf112.skeleton.app.tools;
+package tools;
 
 import com.badlogic.gdx.maps.tiled.TiledMapTileLayer;
-import inf112.skeleton.app.entities.Player;
-import inf112.skeleton.app.entities.Player2;
 
+import entities.Player;
+
+/**
+ * Contact class, handles collision between object and Tiles with key-value "blocked"
+ * 
+ * © dermetfan, All rights reserved
+ * URL: https://hg.sr.ht/~dermetfan/tiledmapgame/browse/TiledMapGame/src/net/dermetfan/tiledMapGame/entities/Player.java?rev=tip
+ */
 public class Contact {
     private Player player;
     String blockedKey = "blocked";
@@ -13,9 +19,6 @@ public class Contact {
         this.player = player;
     }
 
-    public Contact(Player2 player){
-    }
-
     private boolean isCellBlocked(float x, float y) {
         TiledMapTileLayer.Cell cell = player.collisionLayer.getCell((int) (x / player.collisionLayer.getTileWidth()), (int) (y / player.collisionLayer.getTileHeight()));
         return cell != null && cell.getTile() != null && cell.getTile().getProperties().containsKey(blockedKey);
diff --git a/src/test/java/inf112/skeleton/app/AppTest.java b/src/test/java/inf112/skeleton/app/AppTest.java
index 9709222..17aa634 100644
--- a/src/test/java/inf112/skeleton/app/AppTest.java
+++ b/src/test/java/inf112/skeleton/app/AppTest.java
@@ -7,6 +7,8 @@ import com.badlogic.gdx.Input.Keys;
 import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
 import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
 
+import app.AGame;
+
 /**
  * Selve testene er skrevet riktig for hvordan spillet er nå, 
  * men de skal oppdateres når physics (og/eller andre ting) blir lagt til (hopping for W/Up),
-- 
GitLab