Livets spill
Lov på eksamen
- Datamaskin med programmeringsverktøy
- Lærebok, dokumentasjon og egne notater og programmer
Ikke åpent internett (bare noen utvalgte nettressurser), kommunikasjon med andre eller kunstig intelligens.
Kan den løses uten PC?
Ingen av deloppgavene kan løses helt uten PC.
Fra 2027 er det bare kalkulator og skriftlige hjelpemidler på del 2. Vurderingen er gjort med KI og kan inneholde feil.
I denne oppgaven skal du lage et program som simulerer livssyklusen til celler, altså hvordan celler oppstår, lever og dør, og hvordan én generasjon med celler gir opphav til en ny.
Programmet skal bygges opp som et todimensjonalt rutenett med celler som alle kjenner til sine naboceller. Cellene kan veksle mellom tilstandene levende og død. Celler reproduseres eller dør basert på de fire følgende regler for liv og død:
- Enhver levende celle med færre enn to levende naboer dør, som ved underpopulasjon.
- Enhver levende celle med to eller tre naboer lever videre til neste generasjon.
- Enhver levende celle med flere enn tre levende naboer dør, som ved overpopulasjon.
- Enhver død celle med akkurat tre levende naboer blir vekket til live, som ved reproduksjon.
Nedenfor oppgavepunktene ser du eksempler på hvordan en generasjon celler blir til neste generasjon celler når reglene ovenfor gjelder.
Programmet skal utvikles som et objektorientert program med nødvendige klasser og metoder. Du kan svare på oppgaven stegvis eller som ett samlet program, akkurat som du selv ønsker. Ta utgangspunkt i disse stegene:
Lag et spillebrett med et startoppsett av levende og døde celler, såkalt generasjon 0, der hver celle på spillebrettet har 1/3 sjanse til å starte som levende.
Implementer muligheter for å
endre alle cellene til døde, slik at du får et «tomt» brett
bytte om statusen til en enkeltcelle fra død til levende og omvendt, ved å klikke på den
Utvid programmet med funksjonalitet som automatisk oppdaterer tilstanden til hver celle i spillebrettet fra gjeldende generasjon til den neste, basert på de fire reglene som er beskrevet ovenfor. Alle cellene skal oppdateres samlet.
Eksempel på startoppsett
Et rutenett med et tilfeldig antall levende og døde celler kan for eksempel se slik ut:

Levende celler er markert som svart rute og døde celler er markert som hvit rute.
Eksempel 1
Om man starter med følgende levende celler som generasjon 0,

vil den etterfølgende serien med generasjoner bli slik:

Nedenfor ser du en repeterende GIF som viser hvordan generasjonene gjentar seg:

Eksempel 2
Levende celler er markert som svart rute, døde celler er markert som hvit rute.
Om man starter med følgende levende celler som generasjon 0,

vil den etterfølgende serien med generasjoner bli slik:

De siste to generasjonene gjentar seg akkurat som i eksempel 1. Nedenfor ser du en repeterende GIF som viser de 13 første generasjonene (0 til 12) for dette tilfellet:

Sensorveiledning
Oppgaven gir til sammen 24 poeng
Startoppsett: Det er laget et startoppsett med brett og celler som kan ha tilstand levende eller døde. Levende celler: Cellene genereres med 1/3 sjanse for å være levende ved oppstart.
Tomt brett: Alle cellene settes til status død, når brukeren velger det. Veksle status: Det gis uttelling for at celler kan klikkes på og objektet oppfatter det, og at det byttes status.
Traversere: Det gis uttelling for å lage en metode som traverserer alle cellene i brettet. Det stilles ikke krav til hvordan kantcellene håndteres. Finne naboer: Det gis uttelling for å telle opp antall levende naboer til hver celle, eller tilsvarende løsning. Ny status: Det gis uttelling for å finne og ta vare på ny status til hver celle, eller tilsvarende løsning. Oppdatere status: Det gis uttelling for å samlet oppdatere visningen med den nye generasjonen celler.
Objektorientering (6 poeng): Det gis uttelling for at det er benyttet hensiktsmessig objektorientering i implementasjonen.