✨ Semesteroppgave 2 - Vår 2025 ✨
Frist: Søndag 27. april
I denne oppgaven skal du lage din helt egen applikasjon! 🎉
Du kan velge mellom tre startpunkt for oppgaven (alle gir like mange poeng):
-
Tetris-utgangspunkt 🎮
- Lag et nytt program med utgangspunkt i Tetris
- Her kan du bruke vårt løsningsforslag eller din egen kode fra semesteroppgave 1.
- NB: Det vil ikke være lov å lage en avansert versjon av Tetris.
-
Brettspill-utgangspunkt 🎡
- Bruk koden fra Othello, Tic Tac Toe, Connect Four eller Blob Wars som base. Denne koden vil vi vise frem på forelesning.
-
Start fra bunnen av! 🌿
- Begynn helt fra scratch med et tomt repo.
Vi skal opprette repoene for dere når oppgaven åpnes.
⚠️ Viktig: Jobb ut fra ett av repoene i
assignments
-mappen. Hvis du fork'er eller oppretter ditt eget repo vil du få 0 poeng.
📝 Krav til oppgaven
Uansett hvilket alternativ du velger, må du følge disse kravene:
☕ Skrives i Java
- Applikasjonen skal være skrevet i Java.
- Gjelder de spesielt interesserte: Andre språk kan brukes for API-er, men Java skal være hovedfokuset.
🎨 Må være visuell
- Applikasjonen må ha en grafisk grensesnitt (GUI). Konsoll alene er ikke nok.
- Bruk Swing (det vi har brukt så langt i emnet), med mindre du får godkjent et annet rammeverk.
- Hvis applikasjonen er algoritmisk/beregningsbasert, må den fortsatt ha et visuelt grensesnitt.
🎮 Må være interaktiv
- Brukeren skal kunne klikke med musen eller bruke tastaturet for å interagere.
🧐 Må ha tilstrekkelig kompleksitet
- Eksempel på godkjent kompleksitet: Snake, Pong med poengsystem og applikasjoner som er mer komplekse enn disse. Her kan det være greit å se på videoen fra i fjor for å vite hva som er tilstrekkelig.
- Eksempel på ikke nok kompleksitet: En ball som spretter tilfeldig rundt.
- Vi forventer en god objektstruktur med flere klasser som representerer ulike deler av programmet.
Det er viktigere at programmet har høy kodekvalitet enn at de har masse funksjonalitet. Hvis dere lager Minecraft, men koden ser helt forferdelig ut så vil dere få en lav poengsum.
⚠️ Tidsbruk: Vi forventer at du bruker minst 25 timer, men dette kan variere.
Hvis du har gjort åpen oppgave i INF101 i et tidligere semester så er det lov å jobbe videre på denne kodebasen. I disse tilfellene skal det være en tilstrekkelig endring i programmet som tilsvarer ca. 25 timer arbeid som vi ellers forventer fra oppgavene som starter fra scratch.
I vurderingsmøtet skal du da vise frem begge versjonene av programmet: programmet fra det tidligere semesteret og det nåværende programmet. Gruppeleder vil gjøre en vurdering om endringen i programmet er tilstrekkelig.
🎩 De ulike oppgavene
🎮 Tetris-baserte applikasjoner
Vil du jobbe med bevegelse, timerstyring og figurer i et rutenett? Da kan du ta utgangspunkt i Tetris-koden.
Forslag til applikasjoner:
- Pacman
- Labyrintspill
- Tower Defense
- Space Invaders
🎡 Brettspill-baserte applikasjoner
Vil du jobbe med logikk, brikker på et spillbrett og strategi? Da kan du bruke koden fra Othello, Tic Tac Toe, Connect Four og Blob Wars
Forslag til applikasjoner:
🌿 Start fra scratch
Vil du ha full frihet? Da kan du bruke et tomt repo!
Forslag til applikasjoner:
- Spill uten grid (f.eks. RPG, plattformspill)
- Ikke-spill (f.eks. databasesystem, planleggingsverktøy, musikk-editor)
ℹ️ Merk: Det kan være vanskeligere å få hjelp hvis du starter fra scratch, så planlegg godt!
For inspirasjon, sjekk ut videoen fra i fjor!
https://www.youtube.com/watch?v=vHdYdPUaNeE&t=220s
📜 Obligatoriske møter
Du må delta på tre obligatoriske møter. Disse er de vanlige gruppetimene.
MERK: Du må gå til den samme gruppeledern for hvert møte. Du må være oppmeldt på den aktuelle gruppen på MittUiB.
På disse møtene må du ha møtt en rekke krav. Det vil ikke være nok å gjøre alt arbeid i siste uke. Du må jobbe jevnt gjennom hele denne perioden.
På gruppetimen så oppsøker du gruppelederen din og viser frem hva du har gjort så langt. Hvis du har møtt kravene for det aktuelle møtet så skriver gruppelederen det ned og du kan fortsette å jobbe :)
Her kommer møtetidene og kravene:
📆 Møte 1 - Oppstart (Uke 14: 31. mars - 04. april)
- Idé og plan for programmet. Hva skal du lage? Hva av funksjonalitet skal du implementere? Dette må du ha bestemt før møtet. Hvis du er usikker på omfang så kan du snakke med gruppeleder om hva som er realisitisk.
- Valg av kodebase (Tetris, Brettspill, eller fra scratch). Du må ha valgt hvilken kodebase/repository du skal jobbe med.
- Oversikt over de viktigste klassene. Skriv opp de viktigste klassene du skal bruke for å representere de forskjellige delene av programmet ditt.
📆 Møte 2 - Progresjon (Uke 15: 07. - 11. april eller uke 17: 21. - 25 april)
- Kode som kan kjøres (GUI må være synlig). Du må ha et program som kjører hvor du viser frem grunnleggende funskjonalitet for programmet.
- Ha skrevet minst 5 tester.
📆 Møte 3 - Vurdering (Uke 18/19, etter fristen)
Her skal du ha et ferdig program. På dette møtet skal du bli vurdert av gruppelederen ved å:
- Vise frem programmet.
- Forklare viktigste kodeelementer.
- Kjøre og forklare testene.
⚠️ Merk: Hvis du ikke deltar på møtene, får du stryk og kan ikke ta eksamen.
🌟 Poengberegning
Du kan få totalt 16 poeng:
Kategori | Poeng |
---|---|
Funksjonalitet (Er programmet visuelt, interaktivt og komplekst nok?) | 3 |
OOP-konsepter (Bruk av objekter, grensesnitt, arv, etc.) | 3 |
Kodestil (Lesbarhet, hjelpemetoder, struktur) | 3 |
Dokumentasjon (Gode variabelnavn, Javadoc) | 3 |
Testing (Tilstrekkelige og gode tester) | 3 |
Video (Kort demo-video av applikasjonen din) | 1 |
Du kan få et ekstrapoeng (gå fra 15 til 16 mulige poeng) for å lage en video av programmet hvor du viser frem og forklarer hvordan programmet fungerer.
Merk: Som det står på emnesiden, det er ikke mulig å oppnå mer enn 35 poeng fra labbene og semesteroppgavene. Ekstrapoengene vil kun gjøre opp for manglende poeng ellers.
Samtykke til å vise frem programmet ditt
I alle repoene har vi lagt til Consent.java
. Her kan du gi samtykke (eller ikke gi samtykke) til at vi får bruke prosjektet ditt i undervisningssammenhenger. Les nøye de tre forskjellige punktene der. Denne filen må fylles ut for å få godkjent på oppgaven.
🤝 Arbeid i par?
Du kan jobbe sammen med en partner dersom:
- Dere deltar på de samme gruppemøtene.
- Dere skriver all koden selv, uten direkte kopiering.
- Dere leverer individuelt og blir vurdert hver for seg.
⛔ Plagiat og kilder
Det er lov å:
✅ Diskutere oppgaven med andre studenter
✅ Hjelpe hverandre med feilsøking – men du må dokumentere dette i koden
✅ Be om hjelp fra gruppeledere (dette trenger ikke å dokumenteres)
✅ Dele korte kodeutdrag i diskusjoner (f.eks. over Discord)
✅ Benytte seg av korte kodesnutter fra StackOverflow og lignende nettsider (må dokumenteres)
Det er ikke lov å:
❌ Kopiere kode direkte fra andre studenter
❌ Kopiere kode direkte fra KI-verktøy
❌ Gjøre koden din offentlig tilgjengelig før kurset er over (eller helst aldri)
Lykke til! 🚀🌟