Lärplattform · Detalj

Tetris med matriser och rotationer

Detta byggeblock visar hur ett spelplan modelleras som en matris samt hur rörelse, rotation och kollision bearbetas algoritmiskt. Didaktiskt relevant är den stegvisa kopplingen mellan datstrukturen, tillståndsläggning och visuell implementering i ett tydligt spårbar applikationskontext.

Tid 120 minuter
Format Pygame
Språk Python 3
Uppgifter 4
Förhandsvisningsbild: Tetris med matriser och rotationer

Introduktion (Originalutdrag)

Tetris är ett bra exempel på hur man kombinerar en matris som datstrukturen, rotation av former samt enkel spellogik i Pygame. Du flyttar fallande stenar i ett rutnät, placerar dem på marken och tar bort fullständiga rader.

Didaktisk klassificering

Subjektivt måluppsättning

I centrum av detta modul är modelleringen av ett spelplan som en tvådimensionell lista. Det introducerar ett centralt informationsbegrepp: att representera ett diskret rutnät genom en matrisstruktur. På basis av detta beskrivs stenar som mindre matriser och deras position hanteras via koordinater. Lärare kopplar abstrakta datamodeller till en konkret visuell representation i spelet. Rotationen av former kräver ett strukturerat omarrangemang av matriselement och gör algoritmiska transformationer synliga. Kopplingen mellan modell och implementation framgår särskilt i att varje rörelse, kollision och radräkning direkt följer från den valda datstrukturen.

Kompetensutveckling

Didaktiskt tillägg i lektionen

Lärprocessens flöde

1

Spelets fältmatris och tangentbordskontroll

I början säkerställs spelets fält som en matris och kompletteras med grundläggande tangentbordskontroll. Uppgiften kombinerar representationen av rutnätet med initiala rörelseregler och introducerar logiken för när en sten kan falla igen eller måste genereras nytt. Detta skapar den funktionella basen för alla senare spelmekanismer.

  • Didaktisk fokus: matrismodell och tillståndsbaserad kontroll
  • Typisk utmaning: konsekvent testning av gränsvillkor under rörelser
2

Rotera Tetrominos som matriser

I det andra steget introduceras olika former och bearbetas som små matriser. Rotationen kräver ett målriktat omarrangemang av matrisens element och kopplas ihop med samma krocktest som rörelse. Detta gör tydligt att olika spelåtgärder bygger på gemensamma logiska regler.

  • Didaktisk fokus: matristransformation och regelkonsekvens
  • Typisk utmaning: giltig rotation utan att överskrida spelets fält
3

Ta bort rader, poäng och hastighet

Efterföljande utökning av spelets logik för att identifiera och ta bort helt rader. På basis av detta introduceras poäng, linjer och nivåer som ytterligare tillstånd från vilka en ändrad fallhastighet kan härledas. Detta steg kombinerar dataprocessering med ett tydligt regelutvecklingsarbete under spelets gång.

  • Didaktisk fokus: utvärdering av matrisens tillstånd och framstegslogik
  • Typisk utmaning: Korrekt borttagning och tillägg av rader i spelplanen
4

Helt spel

Det sista uppgiften syftar på en sammanfattande övervägande av ett komplett referensspel. I förgrunden står inte tillägg av ny kod, utan identifiering av tidigare utvecklade mekanismer inom ett enhetligt hela program. Detta reflekterar utvecklingen av kompetens och säkerställer den professionellt.

  • Didaktisk fokus: Integration och reflektion av det övergripande sammanhanget
  • Typisk utmaning: Att individuella komponenter i det övergripande systemet ska tilldelas säkert

Arbetsuppgift (utdrag)

  1. Modellera spelplanen som en matris och lägg till ett styrbart fallande rörelse för den aktiva stenen.
  2. Utvidga spelet med olika Tetrominos och rotation baserat på matriscalculeringar.
  3. Kontrollera därefter rörelser och rotationer genom enhetlig krocklogik.
  4. Implementera borttagning av helt rader, poäng, linjer och ökad hastighet.

Exempel (utdrag)

Följande utdrag är didaktiskt relevant eftersom det gör rotationen synlig som ett målrikt omordning av en matris, vilket framhäver ett centralt kärnkoncept 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 för klassrummet

Detta modul kombinerar matrismodellering, rotation och spellogik i ett steg-för-steg och tekniskt tydligt implementerat system.

Den tydliga uppgiftsstruktur stöder klassrumsorganisationen och underlättar systematisk verifiering av resultat. Utökade uppgifter möjliggör korrekt differentiering vidare i kursens gång.

Begär ett demo-åtkomst och testa modulen i din egen kurskontext.