- Kursmaterial
- Planering
- Arbete
- Kunskapsdokument
- Tutorials
- Andra kurser
- Om Kursolle
4. Moment04 - Gamestates och externa klasser
Spelet fungerar nu förhoppningsvis ganska så bra. Men för att få till en bra upplevelse av spelet så gäller det att vi kan rama in spelet på ett bättre sätt med en kontrollerad start och sedan att applikationen inte avslutas så fort vi dör.
4.1 Gamestates
I bokens kapitel 8 så är det dags att strukturera om koden igen. Detta beror på att ett färdigt spel innehåller fler delar än själva spelet, det kan/bör innehålla en välkomstsida, någon form av meny, kanske en highscorelista osv. I detta moment går tutorialen igenom just detta. Dessutom kommer det med start nu förberedas för en del eget arbete. Författaren ger förslag på saker som bör göras men som han inte går igenom utan det är saker som du troligtvis kan lösa på egen hand med de kunskaper du redan har. Var extra noggrann här med att kommentera och dokumentera det arbetet du gör. Ta också regelbundna säkerhetskopior på hela projektet så är det lättare att återskapa till en tidigare punkt där ditt projekt fungerade.
Att lägga till egna saker är inget krav men det är bra träning att kunna göra detta och det kommer också ge dig bättre förutsättningar om du skall bygga ett eget spel som slutprojekt i kursen. Kortfattat kan man säga att om du vill klara av kursen så behövs inga egna utbyggnader. Om du vill sträva efter ett högre betyg så kommer du tjäna på en högre förståelse samt fler och vassare egna utbyggnader.
Uppgift gamestats
När du är klar med kapitel 8 så är koden säkert rörig igen, så gå igenom koden, snygga till, kommentera de saker du har gjort medan du kommer ihåg vad du har gjort. Spara en kopia som innehåller allt som fungerar så här långt så kan du jobba vidare med en kopia i nästa kapitel. Skulle något bli väldigt fel i nästa del så kan du enkelt börja om från ett fungerande projekt istället för att behöva felsöka allt för länge.
Extrauppgift gamestats
Här finns det en extrauppgift kopplad till momentet för den som vill jobba mer och föbereda sig inför slutprojektet.
4.2 HighScore
Det har blivit dags att jobba lite med externa klasser. En extern klass är en klass som är skriven av någon annan än dig. Till boken som vi använder oss av när vi bygger vårt spel så finns det en guide till hur du skall bygga in en klass som lagrar HighScore och där vi dessutom skall lagra dessa i en fil så att det går att tävla mot de spelare som redan har spelat.
Börja med att ladda ner dessa två filer;
- HighScore.pdf är guiden för denna del.
- HighScore.cs är klassen som du skall använda dig av.
Följ sedan guiden och skapa en applikation som endast har till syfte att skapa en highscore-lista som kan sparas i fil. Bygg gärna detta som en egen applikation först för att få allt att fungera som det är tänkt.
Uppgift externa klasser
Beroende på om du endast följde guiden eller om du sammanfogade projekten så är koden säkert rörig igen. Lägg en stund på att städa upp och kommentera de delar som du misstänker kan behöva en extra förklaring i framtiden.
Extrauppgift HighScore
När du är klar så är det väl ingen överaskning att denna funktionalitet hade varit välkommen till vårt SpaceShooter-spel. Så om du känner dig mogen att sammanfoga dessa projekt så har du en bra utgångspunkt för slutprojektet senare.
Här finns det en extrauppgift kopplad till momentet för den som vill jobba mer och föbereda sig inför slutprojektet.
Denna gång är min rekommendation extra stark att du tar säkerhetskopior på bägge projekten innan du börjar sammanfoga dem.
4.3 Inlämning & betygsförberedelser
När du är klar med momentet ska ditt arbete lämnas in via uppgiften i Classroom, antingen som ett zippat projekt eller via länk till ditt GitHub-repository.
Projektet ska motsvara innehållet efter kapitel 8. Innan du lämnar in: säkerställ att koden är strukturerad, städad och kommenterad där det behövs. Det ska vara tydligt hur programmet är uppbyggt och vad de olika delarna ansvarar för.
Tillsammans med inlämningen ska du bifoga en kort text (några stycken räcker) där du beskriver:
- Hur du har arbetat med SpaceShooter.
- Om HighScore är inbyggt i SpaceShooter eller om det är två separata projekt.
- Om du har gjort några egna förändringar, förbättringar eller tillägg utöver grunduppgiften.
4.3.1 Betygsnivåer
Eftersom detta moment avslutas med en inlämning finns olika förväntningar beroende på betygsnivå. Det finns möjlighet att komplettera senare under kursen, men målet är att du ska kunna avsluta detta moment och därefter gå vidare till nya delar.
Betygsnivå E
För att nå betygsnivå E ska följande delar kopplade till SpaceShooter vara genomförda:
- Ett fungerande SpaceShooter enligt kapitel 8.
- GameStates så att spelet kan spelas flera gånger samt innehåller en fungerande start-/välkomstmeny.
- En extern klass: HighScore som en fristående applikation.
Betygsnivå C och uppåt
För betygsnivå C och högre förväntas du, utöver kraven för E, även kunna redovisa följande:
- Ett stabilt och välfungerande SpaceShooter enligt kapitel 8.
- Genomtänkt användning av GameStates, inklusive en tydlig och användarvänlig meny.
- Egna utbyggnader eller förbättringar av spelet. Dessa kan exempelvis presenteras i ett
om-state
där spelaren får instruktioner om hur spelet fungerar. - Att klassen HighScore är integrerad med SpaceShooter så att en aktuell HighScore-lista kan visas och sparas. (Detta kan eventuellt visas senare under kursen men kommer vara ett baskrav för betygen B/A)
4.3.2 Vad ska lämnas in?
Lämna in:
- Ditt färdiga SpaceShooter-projekt (efter kapitel 8).
- Applikationen HighScore, om den är ett separat projekt.
- Den korta beskrivande texten enligt punkterna ovan.
Om SpaceShooter och HighScore är ihopbyggda till ett gemensamt projekt räcker det att du lämnar in det sammanslagna projektet.