TDDC74 Programmering: Abstraktion och modellering
Projekt
VT 2013
Projektidéer
Nedan följer ett antal typer av projekt som kan genomföras i kursen. Du kan föreslå helt egna projektidéer - tala isåfall med laborationsassistent och examinator.
- Animerade realtidsspel
- Brädspel
- Spel med AI-inriktning: Othello, Schack med mera
- Äventyrsspel
- Datorspråk
- Optimering, algoritmiska problem
- Medicinska bedslutstödsystrem
- Presentation/visualisering av hälsodata
- Andra projekt med medicinsk inriktning
- Övrig information
Animerade realtidsspel
Här ligger fokus på att skapa små spel med rörliga bilder som utspelar sig under löpande tid (inte turbaserat).
Exempelprojekt:
- Tetris
- Breakout
- Pac-Man
- Frozen Bubble
Brädspel / turbaserade spel
Här utvecklar du en datorspelsvariant av något enklare eller svårare turbaserat spel. Det kan handla om ett brädspel, eller att ta ett realtidsspel, göra en turbaserad version av det, och implementera.
Denna typ av projekt kan omfatta allt från enklare textbaserade spel till grafiska peka-klicka-användargränssnitt, och det har tidigare förekommit att studenter utvecklat nätverksspel. Det kan också vara möjligt att implementera en enklare datorspelare.
Exempelprojekt:
- Settlers
- Carcassonne
- Roborally
- Battlecars
- Power Grid
- Monopoly
- Tsuro
- Ticket to ride
- Elfenland
För mer inspiration, besök boardgamegeek.com eller brettspielwelt.de/.
Spel med AI-inriktning, Othello, Schack med mera
I detta projekt implementeras enklare tvåspelar-spel, och en enklare AI. Det finns flera delar av projektet - spelmotor, grafik och så vidare - men fokus ligger på att utveckla en datorspelare. Är man intresserad av att få en överblick över enklare klassiska AI-tekniker är detta en bra startpunkt.
För Othello finns ett (halv)färdigt GUI, så att man inte behöver fokusera på den delen.
Äventyrsspel
Äventyrsspel är en av de klassiska spelgenrerna (tänk Monkey Island, inte Assassin's Creed) som på senare tid fått nytt liv. Spelaren utforskar en värld, interagerar med olika figurer och löser mer eller mindre logiska gåtor.
I detta projekt får du chansen att vidareutveckla (eller bygga om) äventyrsspelet. Det handlar om att göra något större, bättre och roligare än det man hinner med i laboration 4. Det krävs att man lägger till något extra. Ett par exempel på sådant är:
- GUI
Utveckla ett enklare grafiskt interface, och ge på det sättet en bild av världen. Det kan handla om allt från en ren presentation av hur världen ser ut, till en mycket primitiv version av peka-klicka-spel. - Dynamiska världar, extern lagring
I laboration 4 skrivs hela spelvärlden direkt i Schemekoden. Här kan man beskriva världen, karaktärerna och hur de hänger samman i externa filer. Man ska kunna få ett nytt spel genom att ladda in en uppsättning nya sådana filer, utan att ändra koden. Dynamiska världar handlar också om att världen inte är statisk under spelets gång (vad du gör på ett ställe i spelet påverkar vad som kan göras senare).
Datorspråk
Här får du implementera en interpretator eller kompilator för ett annat programspråk (eller en del av det).
En interpretator läser programkod och utför instruktionerna omedelbart. Tänk dig hur man skriver in kod direkt i DrRackets REPL (Read-Eval-Print-Loop).
En kompilator tar kod i ett språk (som Pascal) och skriver om koden till ett annat språk (som C). Att köra denna nya uppsättning instruktioner lämnas åt andra system. När man säger kompilator menar man ofta något som tar kod i ett språk som C++ och skapar maskininstruktioner. Här skapar vi istället en kompilator som skapar Schemekod.
Ditt språk ska åtminstone klara
- Variabelhantering
- Tilldelning
- Kontrollstrukturer modell if eller något loopkonstruktion
- Procedurer
Ett annat möjligt spår för detta projekt är att vidareutveckla Scheme/Racket, eller att implementera ett uppmärkningsspråk, ett spreadsheet eller liknande.
Optimering, algoritmiska och matematiska problem
I detta projekt hittar du ett matematiskt eller algoritmiskt problem, formulerar en lösning. Det kan också handla om att implementera färdiga algoritmer från optimeringsläran.
Exempelproblem:
- Vägvisning
Hitta kortaste eller snabbaste vägen mellan två orter. En ungefärlig Sverigekarta finns att tillgå. Algoritmerna man använder är vanliga och viktiga inom exempelvis AI och optimeringslära. - Symbolräknare
Vi har enkla sätt att hantera symbolisk derivering (ett exempel finns i SICP). Att utveckla uttryck som (x+1)*(x-1) är lätt. Att förenkla eller faktorisera kan däremot vara ett mer intressant problem. - Logisk resolver (satslogik)
Vi bevisar om logiska slutsatser följer av en uppsättning fakta om världen. Ex: om vi har en uppsättning regler för en robot, modell "rött ljus -> stanna fordonet", och testar vilka tillåtna slutsatser som får dras.
Föreslå gärna egna pyssel eller dylikt. Tidigare har studenter exempelvis gjort mycket effektiva Sudokulösare.
Medicinska beslutsstödssystem
Presentation/visualisering av hälsodata
Andra projekt med medicinsk inriktning
Det är även möjligt att ni kan skapa egna projekt med en medicinsk-teknisk inriktning. Kanske kan ett spel eller äventyrsspel organsieras om med ett lärande moment. Tänk dig ett äventyrsspel där frågpr och uppgifter att utföra kräver eller kommer att ge dig medicin-kunskap. Ett pedagogiskt spel att kunna ha under sin utbildning.
Övrigt
Om du har någon egen idé, framför gärna den. Det hela hänger lite på om det är görbart, av lagom storlek och svårighetsgrad, och om det finns handledare. Om du har egna idéer, kontakta Jalal Maleki.
Sidansvarig: Anders Märak Leffler
Senast uppdaterad: 2013-04-03
