frameCraft – Pedagogisk utökning för pygame

Pedagogisk utökning för pygame

frameCraft tar visuell programmering in i klassrummet

Spelutveckling, simuleringar och visuell programmering är mycket motiverande för elever. Att börja direkt med traditionella ramverk innebär dock ofta onödig teknisk komplexitet i undervisningen.

frameCraft lägger ett pedagogiskt förenklat lager ovanpå pygame: elever kan bygga interaktiva projekt snabbare och fokusera på logik, algoritmer, tillstånd och modellering i stället för detaljer i spelmotorn.

frameCraft som pedagogisk utökning för pygame

Lägre tröskel, synliga resultat och tydliga spelstrukturer: frameCraft gör pygame mer tillgängligt för vardagen i klassrummet.

Varför frameCraft?

Mindre fokus på spelmotorn, mer informatik

frameCraft är inte en traditionell utökning av en spelmotor, utan ett pedagogiskt verktyg för modern informatikundervisning. Biblioteket minskar tekniska hinder utan att dölja de grundläggande begreppen.

1

Snabb start

Vanliga pygame-komponenter som spelloop, händelsehantering och rendering samlas i ett elevvänligt API. Det gör att elever snabbare kan skapa sina första fungerande program.

2

Tydlig struktur

Scener, regler, objekt, kollisioner och tillstånd är tydligt separerade. Det stödjer begriplig kodorganisation och modellering.

3

Projektbaserat lärande

Spel, simuleringar och visuella modeller växer steg för steg: från det första objektet till HUD, nivålogik och slutlig finputsning.

frameCraft-koncept med scener, objekt, regler och synliga resultat

Pedagogiskt värde

Synliga projekt skapar meningsfulla lärandesituationer

Tidiga upplevelser av att lyckas är särskilt viktiga i undervisningen. När en figur rör sig, objekt kolliderar eller ett speltillstånd förändras synligt får eleverna direkt erfarenhet av abstrakta informatikbegrepp.

Det gör det möjligt att arbeta praktiskt med centrala begrepp som modularisering, abstraktion, algoritmiskt tänkande, datastrukturer och objektorienterad modellering.

Öppet och portabelt

Börja i CodeRoom – fortsätt med Python och pygame

frameCraft finns som ett open source-projekt på GitHub och som ett Python-paket på PyPI. Projekt som skapas i CodeRoom kan därför också vidareutvecklas utanför lärplattformen med vanlig CPython och pygame.

Open source på GitHub

Källkoden för frameCraft är offentligt tillgänglig. Versioner, exempel och den fortsatta utvecklingen av biblioteket kan följas direkt på GitHub.

Installera från PyPI

För lokal utveckling med vanlig Python och pygame kan frameCraft installeras direkt med pip.

pip install pygame-framecraft

Kurssamling

Fyra spelprojekt visar olika sätt att använda frameCraft

Frogger ger en särskilt lättillgänglig introduktion till rörelse, körfält, nivåstruktur och kollisioner. De andra projekten breddar innehållet: Breakout fokuserar på studs och blockrutnät, Space Invaders introducerar objektgrupper och pooler, och Flappy Colors Flight kombinerar inmatning, gravitation och ökande svårighetsgrad.

Förhandsvisning av Frogger-kursen

Komplett Frogger-projekt

12 modulerNivåer & kollisioner

Kursen går från den första scenen till rörelse, touchknappar, datadrivna bilar, liv, vinstvillkor, HUD, omstartslogik och grafisk finputsning.

Se kursen
Förhandsvisning av Breakout-kursen

Skapa Breakout

6 modulerBoll & studs

Breakout koncentrerar spelutvecklingen till racket, boll, blockrutnät, studs, poäng, liv, förlustzon och omstartslogik.

Se kursen
Förhandsvisning av kursen Flappy Colors Flight

Flappy Colors Flight

12 modulerFysik & balansering

Projektet kombinerar en synlig spelfigur, inmatning för vingslag, gravitation, rörpar, en entity-pool, poängräkning och ökande svårighetsgrad.

Se kursen
Förhandsvisning av Space Invaders-kursen

Space Invaders

11 modulerPooler & svärmar

Arcadeprototypen visar hur projektiler, fiendegrupper, nästlade loopar, kollisioner, poäng, tillstånd och effekter samverkar.

Se kursen

Välj ett projekt

Varje projekt lyfter fram olika informatikbegrepp

Kurserna är mer än bara varianter av samma spelidé. De stödjer olika lärandemål och kan väljas utifrån elevgrupp, tillgänglig tid och ämnesfokus.

Frogger: tillstånd på spelplanen

Passar bra för körfält, rörelse i diskreta riktningar, nivågränser, liv och vinstvillkor.

Breakout: kollisioner som kärnregel

Lämpligt för undervisning om studs, träffdetektering, blockrutnät, räknare, förlustzoner och tydliga game-over-mekanismer.

Flappy: rörelse och svårighetsgrad

Ett tydligt exempel för hastighet, gravitation, tidsbaserade uppdateringar, återanvändning av hinder, engångspoäng och spelbalansering.

Space Invaders: organisera grupper av objekt

Användbart för loopar, nästlade loopar, numrerade entities, projektilpooler, fiendegrupper, kollisionshantering och effektpooler.

Läsbar kod

Spelreglerna står i centrum

Med frameCraft behöver eleverna inte börja med spelmotorns interna detaljer. De viktigaste idéerna syns direkt i koden: objekt använder taggar, speltillstånd lagras i scenen och regler och kollisioner förändrar spelet.

  • Taggar kopplar logiskt samman relaterade objekt.
  • ctx.vars lagrar speltillstånd som liv, poäng eller game over.
  • Kollisionshanterare gör händelsestyrd logik tydlig och läsbar.
import frameCraft as fc
GRODA_START_X = 160
GRODA_START_Y = 180
BIL_BREDD = 46
BIL_HOJD = 20
SPEL(
    "Frogger - Kollisioner",
    fonster=(320, 200),
    fps=30,
    bakgrund=(30, 120, 40)
)
SCEN("huvud", liv=5, dod=False)
@BYGG_SCEN("huvud")
def bygg(ctx):
    OBJEKT("groda", pos=(GRODA_START_X, GRODA_START_Y), tag="groda")
    REKTANGEL("groda", 24, 24, utlosare=True)
    OBJEKT("bil_0", pos=(40, 100), tag="bil")
    REKTANGEL("bil_0", BIL_BREDD, BIL_HOJD, utlosare=True)
    HASTIGHET("bil_0", 90, 0)
    def kollision_bil(ctx, groda_e, bil_e):
        if ctx.vars.get("dod"):
            return
        ctx.vars["liv"] -= 1
        groda_ent = ctx.E("groda")
        if ctx.vars["liv"] <= 0:
            ctx.vars["dod"] = True
            if groda_ent is not None:
                groda_ent.alive = False
        else:
            if groda_ent is not None:
                groda_ent.x = GRODA_START_X
                groda_ent.y = GRODA_START_Y
    VID_KOLLISION("groda", "bil", kollision_bil)
fc.START_STANDALONE("huvud")

Typiska klassrumsprojekt

frameCraft är inte begränsat till arkadspel

Samma struktur kan användas för klassiska spel, simuleringar, matematiska visualiseringar och kreativa experiment. Därför passar frameCraft både i informatikundervisning och i ämnesövergripande STEM-projekt.

Klassiska spel

Snake, Breakout, Tetris, Pong, Frogger och andra små arkadspel passar bra för att modellera rörelse, kollisioner och speltillstånd.

Simuleringar

Rörelse, hastighet, rörelsemängd, kollisioner, vågor, svängningar och agentbaserade modeller kan undersökas som dynamiska system.

Kreativa visualiseringar

Symmetri, mönster, färgrymder, generativa bilder och datavisualiseringar kopplar programmering till kreativ gestaltning.

Space Invaders-projekt med kollisioner, poäng och synlig spelåterkoppling

Skapat för skolor

Webbläsarbaserat, strukturerat och flexibelt

Genom att kombinera ett pygame-baserat arbetssätt, körning i webbläsaren med CodeRoom och ett pedagogiskt förenklat API blir frameCraft ett praktiskt verktyg för lektioner, projekt, differentierat lärande och kortare aktiviteter.

Lärare får tydliga byggblock och snabbare projektstart. Elever får synliga resultat, kreativa uppgifter och ett arbetssätt som fortfarande är nära kopplat till centrala informatikbegrepp.

Nästa steg

frameCraft gör pygame till ett verktyg för aktivt lärande i informatik

Tillgängligt, strukturerat och projektbaserat: elever skapar egna interaktiva program samtidigt som de lär sig centrala begrepp som villkor, loopar, funktioner, tillstånd, kollisioner, datastrukturer och modellering.