Spillet PacTroll

Hele eksamen, alle hjelpemidler

Spillet PacTroll

I denne oppgaven skal du utvikle et spill som vi har kalt PacTroll. Du bør sette av om lag to timer til denne oppgaven.

Spillet starter med et spillbrett (svart hovedboks), et troll (grønn boks merket T) og tre matbiter (gule bokser merket M) – se illustrasjonen nedenfor til venstre. Trollet skal bevege seg på spillbrettet og spise så mange matbiter som mulig. Trollet har en konstant fart og kan ikke stoppes, men spilleren styrer retningen ved å bruke tastaturet. Hver gang en matbit spises, blir den gjort om til en hindring (grå boks merket H), og en ny matbit plasseres ut på spillbrettet – se illustrasjonen nedenfor til høyre.

Hvis trollet treffer en av hindringene eller spillbrettets kanter, avsluttes spillet.

Til venstre: spillbrettet ved oppstart med trollet T i midten og tre matbiter M. Til høyre: spillbrettet etter en stund med tre matbiter og sju hindringer H.

Funksjonelle krav:

  • Ved oppstart skal grensesnittet se ut omtrent som i illustrasjonen ovenfor til venstre. Spillet skal bestå av et spillbrett, et trollobjekt og tre matobjekter. (Du kan utelate bokstavene på boksene.)
  • Ved oppstart plasseres matobjektene på tre tilfeldige plasseringer på spillbrettet, og trollobjektet plasseres i sentrum. Ingen objekter skal være oppå hverandre.
  • Trollobjektet beveger seg i rolig hastighet i en retning, enten opp, ned, til venstre eller til høyre. Retningen trollobjektet beveger seg i, styres med piltaster (alternativt tastene W, S, A og D).
  • Når trollobjektet treffer et matobjekt, skal det følgende skje:
    • Spilleren får et poeng.
    • Matobjektet gjøres om til et hindringsobjekt som trollobjektet ikke skal treffe igjen.
    • Et nytt matobjekt opprettes et tilfeldig sted på spillbrettet, slik at det alltid er tre matobjekter på spillbrettet. Nye matobjekter skal ikke plasseres på allerede eksisterende objekter.
    • Farten til trollobjektet økes.
  • Antallet poeng spilleren har, skal hele tiden være synlig i grensesnittet.
  • Spillet avsluttes om trollobjektet treffer en av spillbrettets kanter eller et av hindringsobjektene.
Hjelpemiddelkrav: For hånd

Lag et klassediagram der du definerer nødvendige klasser, med egenskaper og metoder, for å implementere/lage spillet.

Hjelpemiddelkrav: Krever PC

Implementer/lag spillet i samsvar med klassediagrammet fra a.

Fasit

For eksempel en abstrakt superklasse SpillObjekt med posisjon, størrelse og farge og metodene tegn() og kolliderer(). Subklassene Troll, Mat og Hindring arver fra den. Troll har fart og retning og metoder for å bevege seg, endre retning og øke farten. Spillbrett består av spillobjektene, holder poengsummen og styrer spillet (plassere ny mat, sjekke kollisjoner, avslutte).

LøsningsforslagKI-generert

Det finnes mange gode klassediagrammer for dette spillet. Diagrammet nedenfor er ett forslag.

Klassediagram for PacTroll med den abstrakte superklassen SpillObjekt, subklassene Troll, Mat og Hindring, og klassen Spillbrett som består av spillobjektene

Hver boks har tre felt: klassenavnet, egenskapene med datatype og metodene. - betyr privat, # beskyttet (tilgjengelig for subklassene) og + offentlig.

Superklassen SpillObjekt. Troll, matbiter og hindringer er alle firkanter med en posisjon, en størrelse og en farge, og alle skal tegnes. Felles egenskaper og metoder samles derfor i én superklasse. Metoden kolliderer(annet) sjekker om to objekter overlapper. Den brukes både når trollet treffer mat eller hindringer og når vi plasserer nye objekter, som ikke skal ligge oppå andre. Klassenavnet står i kursiv fordi klassen er abstrakt: Vi lager aldri et objekt av selve SpillObjekt, bare av subklassene.

Arv. Pilene med hul trekant viser at Troll, Mat og Hindring arver fra SpillObjekt. Hver subklasse har dermed posisjon, størrelse, farge, tegn() og kolliderer() uten at koden skrives på nytt. Subklassene får hver sin farge (grønn, gul og grå).

  • Troll har fart og en retning (retningX og retningY, med verdiene −1, 0 eller 1). beveg() flytter trollet fart piksler i retningen hver gang spillet oppdateres. Trollet kan ikke stoppes, så det finnes ingen stoppmetode. endreRetning(tast) kalles ved trykk på piltastene eller W, A, S og D. økFart() kalles hver gang trollet spiser en matbit, og utenforBrett() sjekker om trollet har truffet kanten.
  • Mat har ingen egne egenskaper. blirHindring() lager en hindring på samme sted som matbiten.
  • Hindring har verken egne egenskaper eller metoder. Den står stille, og det eneste som skiller den fra de andre objektene, er fargen og at kollisjon avslutter spillet. Klassen trengs likevel, slik at programmet kan skille hindringer fra matbiter.

Komposisjon. Linja med fylt rombe ved Spillbrett betyr at spillbrettet består av spillobjektene. Objektene hører til brettet og finnes ikke uten det. Multiplisiteten 4..* viser at det alltid er minst fire objekter (ett troll og tre matbiter), og at antallet vokser etter hvert som det blir flere hindringer. Spillbrett holder objektene i egenskapene troll, matbiter og hindringer.

Klassen Spillbrett har ansvaret for selve spillet:

  • bredde og høyde er brettets størrelse, og poeng er spillerens poengsum, som vises med visPoeng().
  • start() plasserer trollet i sentrum og kaller leggTilMat() tre ganger. ledigPosisjon() trekker tilfeldige posisjoner til den finner en som ikke overlapper noe annet objekt.
  • oppdater() kjøres i spill-løkka: Den flytter trollet, kaller sjekkKollisjoner() og tegner alt på nytt med tegn().
  • sjekkKollisjoner() avslutter spillet (avslutt(), spillSlutt settes til sann) hvis trollet er utenfor brettet eller treffer en hindring. Treffer trollet en matbit, kalles spisMat(mat).
  • spisMat(mat) øker poengsummen med 1, gjør matbiten om til en hindring, flytter den fra matbiter til hindringer, kaller leggTilMat() slik at det alltid er tre matbiter, og øker farten til trollet.

Diagrammet dekker dermed alle de funksjonelle kravene. Et alternativ er å la Mat og Hindring være én klasse med en egenskap erHindring. Det gir færre klasser, men egne klasser gjør koden tydeligere og lettere å utvide.

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