Spillet Manic Mansion

Hele eksamen, alle hjelpemidler

Spillet Manic Mansion

Manic Mansion

I denne oppgaven skal du utvikle et spill som heter Manic Mansion.

I Manic Mansion styrer spilleren et menneske som prøver å hente hjem sauene sine en etter en. På veien må mennesket ta seg forbi hindringer og unngå å bli tatt av spøkelser.

Spillet starter med et spillebrett, et menneske, et spøkelse, tre hindringer og tre sauer. Mennesket skal styres av spilleren, og målet med spillet er å komme seg over på den andre siden av brettet og hente en sau flest mulig ganger uten å være i kontakt med noen av spøkelsene.

Krav

  • Ved oppstart skal spillet bestå av et spillebrett, et menneskeobjekt, et spøkelsesobjekt, tre hindringsobjekter og tre saueobjekter.
  • Det skal være en liten frisone både på venstre og høyre side av spillebrettet hvor kun mennesker og sauer kan oppholde seg, mens det ikke kan være spøkelser eller hindringer der.
  • Spøkelses- og hindringsobjektene plasseres på tilfeldige steder på spillebrettet, menneskeobjektet i frisonen på venstre side av spillebrettet og sauene på tilfeldige steder i frisonen på høyre side av spillebrettet. Ingen objekter skal være oppå hverandre.
  • Ulike typer objekter skal være visuelt forskjellige.
  • Menneskeobjektet starter i ro og kan bevege seg i rolig hastighet opp, ned, til venstre eller til høyre. Retningen styres med piltaster (alternativt tastene W, S, A og D).
  • Spøkelsesobjektene starter på et tilfeldig sted på spillebrettet, men altså ikke i noen av frisonene. Spøkelsesobjektene beveger seg med konstant fart i en tilfeldig retning. Spøkelsesobjektene kan bevege seg på skrå i flere forskjellige vinkler. Når et spøkelse treffer kanten av spillebrettet eller kanten på en av frisonene, endrer spøkelset retning. Spøkelset blokkeres ikke av hindringer eller av andre spøkelser, men går tvers gjennom dem.
  • Når menneskeobjektet treffer en hindring eller kanten av spillebrettet, blokkeres menneskeobjektet helt til retningen endres.
  • Når menneskeobjektet treffer et saueobjekt, skal det følgende skje:
    • Saueobjektet fjernes fra spillebrettet (dette representerer at mennesket bærer sauen). (Alternativt: Saueobjektet «festes» til menneskeobjektet og følger menneskeobjektets bevegelser.)
    • Farten til menneskeobjektet reduseres.
    • Fram til saueobjektet er levert på den andre siden, vil en kollisjon mellom menneskeobjektet og et annet saueobjekt føre til at spillet stoppes.
  • Når menneskeobjektet kommer tilbake til startsonen på venstre side av spillebrettet, skal det følgende skje:
    • Spilleren får et poeng.
    • Farten til menneskeobjektet økes til samme fart som ved spillets start.
    • Et nytt saueobjekt plasseres et tilfeldig sted i frisonen til høyre på spillebrettet.
    • Et nytt spøkelsesobjekt og et nytt hindringsobjekt plasseres på tilfeldige steder på spillebrettet.
  • Når menneskeobjektet, med eller uten sau, treffer et spøkelsesobjekt, skal spillet stoppes.

Oppdrag

På figuren under ser du et forslag til en objektorientert modell for spillet.

Klassediagram for Manic Mansion med superklassen SpillObjekt, subklassene Menneske, Spøkelse, Hindring og Sau, og klassen Spillebrett som inneholder spillobjektene

Hjelpemiddelkrav: For hånd

Forklar modellen.

Hjelpemiddelkrav: Krever PC

Ta utgangspunkt i modellen, gjør tilpasninger av egenskaper og metoder der du mener det er nødvendig, og implementer spillet slik det er beskrevet i kravene. Tilpasningene du gjør, skal dokumenteres med kommentarer i programkoden.

Fasit

Abstrakt superklasse SpillObjekt med posisjon og metodene plassering og flytt. Fire subklasser arver fra den: Menneske, Spøkelse, Hindring og Sau. Spillebrett har størrelse og en liste med spillobjekter (komposisjon) og metoder for å legge til og fjerne objekter.

LøsningsforslagKI-generert

Oversikt. Modellen er et UML-klassediagram med seks klasser. Hver boks har tre felt: klassenavnet, egenskapene (attributter med datatype) og metodene (med parametertyper).

Arv. SpillObjekt er superklassen. Navnet er skrevet i kursiv, som betyr at klassen er abstrakt. Det skal ikke lages objekter av selve SpillObjekt, bare av subklassene. Pilene med hul trekant peker fra Menneske, Spøkelse, Hindring og Sau til SpillObjekt. Det betyr at de fire klassene arver fra superklassen. Alle spillobjektene får dermed egenskapene xPosisjon og yPosisjon og metodene plassering(int, int) og flytt(int, int). Felles kode skrives én gang, og brettet kan behandle alle objektene likt.

Komposisjon. Linjen mellom SpillObjekt og Spillebrett har en fylt rombe ved Spillebrett og teksten «inneholder». Det er komposisjon: spillebrettet består av spillobjekter. Objektene lever bare så lenge brettet finnes. Spillebrett har egenskapene høyde, bredde og objekter (en liste med SpillObjekt). Metodene leggTilObjekt og fjernObjekt legger til nye objekter (ny sau, nytt spøkelse og ny hindring etter poeng) og fjerner objekter (sau som blir hentet).

Subklassene:

  • Menneske har fart, poeng og bærerSau. Metodene er beveg(int, retning) for styring med piltastene, reduserFart og økPoeng, bærSau(Sau) når mennesket henter en sau, og sjekkKollisjon() som finner ut om mennesket treffer en hindring, en sau, et spøkelse eller kanten.
  • Spøkelse har endreRetning(), som brukes når spøkelset treffer kanten av brettet eller en frisone.
  • Hindring har ingen egne egenskaper. Den står stille.
  • Sau har blirBåret og metodene blirLøftet() og fjernSau().

Polymorfi. plassering(int, int) står i superklassen og igjen i alle subklassene. Det betyr at subklassene overstyrer metoden. Reglene for startplassering er ulike: mennesket i venstre frisone, sauene tilfeldig i høyre frisone, og spøkelser og hindringer tilfeldig utenfor frisonene.

Svakheter som kan rettes i b). Spøkelse mangler egenskaper for fart og retning (for eksempel dx og dy), selv om spøkelset beveger seg med konstant fart på skrå. sjekkKollisjon() kunne ligget i SpillObjekt, siden kollisjonstesten er den samme for alle objekter. Sau har både blirBåret og Menneske.bærerSau, så den samme informasjonen lagres to steder. Modellen har heller ingen klasse eller metode som styrer selve spillet (spill-løkke, tastetrykk, poengvisning og avslutning).

Forstå oppgaven med en KI

Du får en ferdig tekst du limer inn i den KI-chatboten du bruker. Teksten inneholder oppgaven og en instruks om at chatboten skal hjelpe deg å tenke selv — stille spørsmål, gi ett hint av gangen og la deg gjøre regningen.

Anbefalt. Chatboten får beskjed om å bruke det til å veilede deg riktig vei — ikke til å røpe svaret. Du kan slå det av hvis du vil være helt sikker på at ingenting lekker.

Hva du bør vite
  • Ingenting sendes herfra. Teksten kopieres bare til utklippstavla på enheten din. Det du limer inn i en chatbot, går til den tjenesten — og de har sine egne regler for hva de lagrer.
  • Ikke lim inn personopplysninger — navn, skole eller noe annet om deg selv eller andre. Oppgaveteksten holder.
  • KI kan ta feil, også i informasjonsteknologi. Sjekk alltid mot løsningsforslaget her på siden.
  • Er du usikker på om du har lov til å bruke KI på skolearbeidet ditt, spør læreren din først.

Tastatursnarveier

Navigasjon

⌘K / Ctrl+K
Åpne søk
G F
Gå til Fag
G E
Gå til Eksamener
G T
Gå til Temaer
G K
Gå til Kompetansemål
G H
Hjem
?
Vis snarveier

I oppgave

←/→ · J/K
Forrige / neste oppgave
0
Marker som ikke prøvd
1
Marker som prøvd
2
Marker som trenger hjelp
3
Marker som ferdig
S
Vis / skjul løsningsforslag
A
Legg til i liste
N
Skriv notat
Esc
Tilbake / avslutt