Læringsblokk · Detalj

Tetris med matriser og rotasjoner

Denne læringsblokken viser modelleringen av et spillfelt som en matrise samt algoritmisk behandling av bevegelse, rotasjon og kollisjon. Didaktisk relevant er den trinnvis koblingen mellom datastruktur, tilstandlogikk og visuell implementasjon i et tydelig sporbar applikasjonskontekst.

Tid 120 minutter
Format Pygame
Språk Python 3
Oppgaver 4
Forhåndsvisning: Tetris med matriser og rotasjoner

Introduksjon (Originalt utdrag)

Tetris er et godt eksempel på å kombinere en matrise som datastruktur, rotasjon av former og enkel spilllogikk i pygame. Du beveger fallende steiner i et rutenett, plasserer dem på bakken og fjerner fullstendige rader.

Didaktisk klassifisering

Subjektiv målsetting

I midten av dette modul er modelleringen av et spillfelt som en todimensjonal liste. Dette innfører et sentralt informasjonskonsept: å representere et diskret rutenett ved hjelp av en matrisestruktur. Basert på dette beskrives steiner som mindre matriser, og deres posisjon håndteres gjennom koordinater. Lærerne kobler abstrakte datamodeller til en konkret visuell representasjon i spillet. Rotasjonen av former krever en strukturert omorganisering av matriseinnholdet og gjør algoritmiske transformasjoner synlige. Forbindelsen mellom modell og implementasjon viser seg spesielt i at hver bevegelse, kollisjon og radfjerning direkte følger fra den valgte datstrukturen.

Kompetanseutvikling

Didaktisk tilleggsverdi i undervisningen

Leksjonens gang

1

Spillfelt som matrise og tastaturkontroll

På starten sikres spillfeltet som en matrise og utvides med grunnleggende tastaturkontroll. Oppgaven kombinerer representasjonen av rutemønsteret med oppstartende bevegelsesregler og introduserer logikken for når en stein kan falle igjen eller må genereres nyttig. Dette skaper den funksjonelle grunnlaget for alle videre spillmekanismer.

  • Didaktisk fokus: matrise-modell og tilstandsbasert kontroll
  • Vanlig utfordring: konsekvent testing av grensebetingelser under bevegelser
2

Roterende Tetrominos som matriser

I neste trinn blir ulike former innført og bearbeidet som små matriser. Rotasjonen krever en målrettet omorganisering av matriseelementene og er koblet til samme kollisions-test som bevegelse. Dette gjør det tydelig at forskjellige spillaksjoner baserer seg på felles logiske regler.

  • Didaktisk fokus: matrisetransformasjon og regelkonsistens
  • Vanlig utfordring: gyldig rotasjon uten å overskride spillfeltet
3

Sletting av rader, poeng og hastighet

Deretter utvides spillogikken for å kunne oppdage og fjerne fulle rader. Basert på dette blir poeng, linjer og nivåer innført som ekstra tilstander fra hvorfra en endret fallhastighet kan avledes. Dette trinnet kombinerer databehandling med en forståelig regelutvikling gjennom spillet.

  • Didaktisk fokus: evaluering av matrise-tilstander og fremgangslogikk
  • Vanlig utfordring: Riktig fjerning og tillegg av rader i spillfeltet
4

Fullt spill

Den siste oppgaven gir en sammenhengende refleksjon over et komplett referansespill. I forgrunnen står ikke tillegget av ny kode, men anerkjennelsen av tidligere utviklede mekanismer i et koherente helhetssystem. Dette reflekterer utviklingen av kompetanse og sikrer den profesjonelt.

  • Didaktisk fokus: Integrering og refleksjon over det hele kontekst
  • Vanlig utfordring: Individuelle komponenter i det hele systemet må tildeles sikkert

Oppgavebeskrivelse (utdrag)

  1. Modeller spillfeltet som en matrise og legg til et styrt fallbevegelse for den aktive steinen.
  2. Utvid spillet med ulike Tetrominos og rotasjon basert på matriseroperasjoner.
  3. Kontroller deretter bevegelser og rotasjoner gjennom en enhetlig kollisjonlogikk.
  4. Implementer fjerning av fullstendige rader, poeng, linjer og økt hastighet.

Eksempel (utdrag)

Følgende utdrag er didaktisk relevant fordi det gjør rotasjonen synlig som et målrettet omordning av en matrise, og dermed fremhever et sentralt element i modulen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def drehe_matrix_rechts(form):
    hoehe = len(form)
    breite = len(form[0])
    neue_form = []
    for x in range(breite):
        neue_zeile = []
        for y in range(hoehe - 1, -1, -1):
            neue_zeile.append(form[y][x])
        neue_form.append(neue_zeile)
    return neue_form

Tips for klasseromspraksis

Dette modullet kombinerer matrisemodellering, rotasjon og spilllogikk i en trinnvis og teknisk velforståelig implementering.

Den klare oppgavestrukturen støtter klasseromsorganisering og gjør systematisk resultatverifikasjon enklere. Utvidelsesoppgaver muliggjør korrekt differensiering i videregangen.

Forespør demo-tilgang og test modulene i din egen kurskontekst.