Göm menyn

TDDI22 Objektorienterad problemlösning

Projekt


I denna kurs ska ni i grupper om fyra studenter utföra ett projekt. Projektet är till för att öva er problemlösning med ett objektorienterat angreppssätt. Vad ni gör är till stor del upp till er själva så länge projektet är nog stort. Fokus i denna kurs är på att programmera, vi kommer inte kräva stor dokumentation från er sida.

Gruppanmälan

I kursen ska projektgrupperna bestå av 4 personer. Det är upp till er att bilda grupper. Vi har några tips för att arbetet ska flyta så bra som möjligt:

  1. Välj ett projekt som ni tycker är roligt. Längre ned finns några förslag.
  2. Se till att alla i gruppen har samma ambition. Kom överens från början hur långt ni vill nå och vilka tekniker ni vill prova och se till att alla är sugna på detta. Det blir i regel inte så bra om någon vill göra ett 3D nätverksspel medan någon annan i gruppen vill göra ett enkelt turbaserat spel i ascii-grafik (risk bli osams om hur avancerat projektet ska vara).
  3. Se till att alla i gruppen är beredda att satsa ungeför lika mycket tid på projektet. Kom överens från början hur mycket tid ni vill lägga (utöver kursens krav). Det blir inte bra om någon vill lägga mycket tid på projektet medan någon annan vill fokusera på andra kurser (risk att den senare inte hinner bidra innan allt är gjort).

När ni bestämt projektgrupp om fyra (4) personer registrerar ni den i webreg via följande länk. Grupper som inte är fyra (4) personer riskerar bli splittrade av oss för att få ihop fler grupper om fyra (4) personer. Observera att det finns en separat grupp namngiven "Jag saknar grupp". De som anmäler sig där kommer bli tilldelade en grupp av oss med de nackdelar det innebär.

Anmäl er grupp via denna länk senast 26/4

Krav på projektarbetet

Några krav på ert projekt (vad krävs för att bli godkänd?):

  • Anmäl er i webreg 2017-04-26.
  • Projektet ska skrivas objektorienterat i C++.
  • Lämna in en kort beskrivning av ert tänka projekt SENAST 2017-05-01. Denna plan ska inkludera ett klassdiagram. Klassdiagrammet kommer troligen ändras över tiden när ni jobbar, men det ska visa hur ni tänkt att programmet ska fungera. Läs och följ Objektorienterad programmering i ett nötskal.
  • Ni måste skapa ett repository i gitlab.ida.liu.se för ert projekt och aktivt använda git under hela projektet. Detta gäller var och en i projektgruppen. Hjälps åt att komma överens om vem som programmerar på vad och att alla lär sig att checka in sin kod. Vi kommer varje vecka kontrollera att ni är aktiva och föra in status i webreg.
  • Var och en ska senast 2017-05-13 skriva en kort statusrapport om hur det går, framförallt om hur samarbetet i gruppen fungerar. Har du själv kommit igång bra och vet vad du ska göra? Vet du vad alla andra gör? Går arbetet framåt? Tycker du det är någon som jobbar för mycket, gör på sitt sätt, eller springer ifrån de övriga? Tycker du någon jobbar för lite och inte får gjort det ni kommit överens om? Skicka ett kort individuellt e-brev till din assistent där du berättar direkt i mailet om hur det går. Titulera mailet "TDDI22: statusrapport " och se till att skicka från din studentmail.
  • Aktivt deltagande vid redovisning för er assistent 2017-05-23. Var och en måste vara beredd på att berätta om vad hen bidragit med och om hur de klasser hen programmerat fungerar internt och tillsammans med resterande kod. Det är försås intressant att höra om de problem ni stött på och hur ni löst dem.

Projektförslag

  • Ett litet spel såsom Breakout, Super Mario, Yatzy, något kortspel eller annat roligt spel

Inspiration från liknande projektkurser

Projekt är ett vanligt inslag i många kurser och således finns en hel del förslag på projekt (och även andra tips) på respektive kurshemsida. Här följer några länkar till projekt i liknande omfattning som vårt.

OBS! Detta är bara länkar för att tipsa om ideer. Det är så klart kraven i kursen TDDI22 som gäller och oss i kursen TDDI22 ni ska vända er till vid frågor!

  • Projekttips från kursen TDP005. I denna kurs gör 2 IP-studenter ett 2D arkadspel inom 4hp i sin tredje programmeringskurs. Resultaten är ofta snygga och så bra att man vill fortsätta spela.
  • Projekttips från kursen TDDC76. 4-6 Y-studenter gör ett projekt inom 3hp.
  • Projekttips från kursen TDDD11. 3-4 I-studenter gör ett enklare ascii-grafik-spel inom ca 3hp i sin första programmeringskurs. Sikta på (lätt-)medelsvårt för att komma upp i tillräcklig omfattning i vår kurs.

Programmeringsbibliotek

Det är inte krav att använda externa bibliotek, men det rekommenderas för att få en bättre upplevelse.
Några förslag:
  • SFML - Ett objektorienterat multimediabibliotek för exempelvis grafik och ljud. Se även följande Iterativa SFML-exempel.
  • Cairo - Ett enkelt bibliotek för grafik.
  • SDL Har stöd för grafik, ljud, tangentbord mm. Se även denna introduktion till SDL2
  • BOOST En samling bibliotek för att hantera det mesta. Används ofta som grund för nya delar i språket

SFML på IDAs undervisningssystem

SFML finns installerat på IDAs undervisningssystem, tyvärr är standardversionen kopplad till standardkompilatorn (gcc 4.8). Om man vill kunna kompilera med en nyare kompilator måste man använda en separat modul för SFML. Kör följande kommandon:
   module add prog/sfml-2-gcc-6
   module initadd prog/sfml-2-gcc-6
För att sedan få med sfml i den slutgiltiga binären måste man även länka in lämpliga delar av sfml vid kompilering. Det normala är att man lägger till exempelvis följande (dvs l-flaggorna) i SLUTET av kompileringskommandot:
    g++ test.cc -lsfml-system -lsfml-window -lsfml-graphics
Eftersom sfml är installerat på en annorlunda plats på vårt system måste man lägga in två flaggor till och får följande kommando:
     g++ test.cc -I${SFML_ROOT}/include -L${SFML_ROOT}/lib -lsfml-system -lsfml-window -lsfml-graphics

Sidansvarig: Eric Elfving
Senast uppdaterad: 2017-05-16