Göm menyn

TDDE10 Objektorienterad programmering i Java

Projekt


Omfattning och upplägg

Projektet omfattar 2 hp, d.v.s ca 50 arbetstimmar per person. I schemat har ni en lektion á 2 timmar och fyra projektpass (utan handledare) á 2 timmar. Projektet görs över kursens sista tre veckor. Kontentan av detta är att projektet genomföres självständigt och kommer kräva mycket arbete utanför schemalagd tid. Det kommer självklart att finnas möjlighet att boka tid med handledare under projekttiden men i stort kommer alla problem vad gäller projektets design, genomförande och slutställande göras självständigt av studenterna.

Projektet görs tillsammans med den labpartner som man gjort laborationer med. Det är tillåtet att byta partner om man vid denna del av kursen känner att man ligger på olika kunskaps eller ambitionsnivå, kraven är dock samma för alla (se nedan). Endast i undantagsfall tillåter vi tre-grupper eller singlar.

Projektförslag

Ett lämpligt projekt (till omfattning och innehåll), med kursens laborationer och teori som grund, är att göra ett klassiskt arkadspel. Du kanske kommer ihåg sådana höga montrar med en TV-inuti, de brukade (kanske fortfarande?) stå på fritidsgårdar och i bowlinghallar. Vanligtvis behövde spelaren lägga i mynt för att få spela. Därpå kör spelet i gång och målet är att försöka ta sig så långt som möjligt. Vanligtvis har spelaren ett antal liv och när liven är slut så är spelet likaså och det är dags att lägga i nya mynt, om man nu har råd och/eller tid med det.

Exakt vilket arkadspel och hur det skall se ut skall beskrivas i kravspecifikationen. Kravspecifikationen skall innehålla en beskrivning av projektet i en flödande text (och allra helst med en eller flera bilder). Detta utgör er vision över det färdiga systemet. Därefter skall ett antal konkreta krav följa (i tabellform). Det är då viktigt att kraven är tydliga, verifierbara, numrerade och prioriterade. Kraven måste också minst täcka de minimikrav som vi har på projektarbetet. Kravspecifikationen skall skickas som en PDF-fil till handledaren (er laborationsassistent) via e-post och godkännas innan projektet kan påbörjas. Kravspecifikationen ska även läggas upp i ert GitLab-projekt när den blivit godkänd, så att det blir lätt för er, och för oss att gå tillbaka och kolla kraven.

Längst ner på sidan har vi länkat till ett antal videoklipp på gamla klassiska arkadspel. Många av dessa har revitaliserats många gånger under åren eftersom de är så älskade. Lättast blir det nog om man försöker göra sin egen version av någon av dessa klassiker. Självklart får man göra ett helt eget arkadspel men man måste då räkna med att det kommer ta mer tid innan man kommer igång med själva kodandet, eftersom själva spelet skall designas också.

Minikrav

Funktionella
  • Projektet skall bestå av ett 1-spelarspel med grafiskt gränsnitt.
  • Gränssnittet skall styras med tangentbord och mus.
  • Spelet skall ha en "meny", med några alternativ (t.ex. "nytt spel", "highscore" och "avsluta").
  • Spelet skall åtminstone ha två "banor", minst två "fiender" och minst två "power-ups".
  • Spelet skall lagra poäng från tidigare spel i en "highscore" eller liknande. Detta måste lagras på datorns hårddisk.
Icke-funktionella
  • Projektet skall göras objektorienterat och vara skrivet i Java.
  • Alla klasser skall ha javadoc. Som minst kräver vi en kort beskrivning för klassen. Javadoc på metoder är frivilligt.
  • Projektet skall ha minst två moduler (paket), en för grafik och en för logik.
  • Projektet skall versionshanteras med Git.

Redovisning

Nedan följer vilka deadlines som gäller för projektet. Observera att dessa inte är s.k. "mjuka" deadlines.

2019-02-26  kl. 17:00,   Kravspecifikation inskickad till handledare.
2019-03-15  kl. 12:00,   Projektarbete muntligt demonstrerat. 
2019-03-20  kl. 17:00,   Reflektion + klassdiagram inskickad till handledare.
Checklista för godkänt projektarbete
  • Inlämnad och godkänd kravspecifikation.
    Se ovan.
  • Handledare inbjuden till projektet i gitlab.
    Detta borde göras så snart ni har börjat hacka. Det finns en liten guide för hur man skapar ett projekt på gitlab och hur man bjuder in handledaren.
  • Godkänd muntlig redovisning/demonstration av färdigt projekt. Görs på redovisningstillfället i slutet av läse-perioden.
  • Inlämnad och godkänt reflektionsdokument. Ca 2-3 A4 sidors reflektion kring ert lärande i projektet. Ev. runt följande frågor:
    • Hur gjorde ni er objektorienterade analys? Använde ni Use-cases, CRC-kort eller något annat? Fungerade det bra eller dåligt? Varför?
    • Hur blev designen av systemet och hur påverkade det genomförandet och er möjlighet att uppfylla alla krav? (Obs. ej den grafiska designen). Vad hade kunnat göras annorlunda, designmässigt?
    • Vilka svårigheter hade ni? Vad var särskilt viktigt när projektet skulle startas upp/genomföras/färdigställas?
    • Hur hjälpte utvecklingsverktygen er, (eclipse, git, m.m.)?
    • Vad var den största lärdomen från projektarbetet?
    I slutet av reflektionsdokumentet skall det också finnas ett grovt klassdiagram över de klasser ni har. Fokusera på klassernas relationer snarare än faktiska metoder/variabler. Klassdiagrammet är utöver de 2-3 A4-sidorna text.

    Observera att reflektionsdokumentet inte skall innehålla reflektioner om eller synpunkter på själva kursen. Sådana är vi självklart också intresserade av, men hänvisas till våra kursvärderingssystem.

Länkar till klassiska arkadspel

Robotron 2084
Spelet som låter spelaren både förflytta sig i åtta riktningar OCH skjuta i alla åtta riktningar, SAMTIDIGT.
QBert
Isometriskt spel där man skall hoppa på alla "lådor" på en bana och samtidigt undvika fienderna.
Pac-Man
Ät bollar, undvik spöken. Ät en stor boll så kan du äta spöken. Genialt.
Arkanoid (a.k.a break-out, DX-ball)
Spelet där du kontrollerar en "paddel" och skall studsa en boll på brickor som då försvinner. Tänk att Pong kunde bli roligare när man tog bort den andra spelaren...
Galaga (a.k.a space invaders, life force)
Detta är ett av många s.k. "scrolling shooters". Du är ett litet skepp längst ner eller längst till vänster på skärmen och rör dig hela tiden frammåt. Fiender kommer in från olika sidor som du måste skjuta ned, annars skjuter de dig eller så kraschar du in i dem.
Centipede (Millipede, m.fl.)
En annan variant på "masken". I detta spel kommer masken för att äta dig!
Missle Command
Mänskligheten har bara ett litet antal städer kvar. Missiler regnar från himmelen, du kontrollerar ett luftvärn och måste skjuta ner dem innan städerna går förlorade!

Övriga resurser

  • Liten guide till att skapa ett projekt på gitlab och sedan "klona ner det" för att sätta igång och jobba, och hur man bjuder in sin handledare.
  • Liten guide till att lägga upp, ett redan existerande projekt på gitlab (och versionshantera det med git), och hur man bjuder in sin handledare
  • Länk till git bash (rekommenderas för de som vill köra git på windows)
  • Litet exempel på hur man kan strukturera spel-loop, modell, fönster och händelser. Det är OK att ta inspiration av eller bygga vidare på detta.
  • Litet exempel på hur man spelar upp ljud/bakgrundsmusik. (kan fungera lite si och så på vårt system.)

Sidansvarig: Erik Nilsson
Senast uppdaterad: 2019-02-27