frameCraft – Pedagogisk utvidelse for pygame
Pedagogisk utvidelse for pygame
frameCraft bringer visuell programmering inn i klasserommet
Spillutvikling, simuleringer og visuell programmering er svært motiverende for elever. Men å starte direkte med tradisjonelle rammeverk fører ofte til unødvendig teknisk kompleksitet i undervisningen.
frameCraft legger et pedagogisk forenklet lag oppå pygame: Elevene kan bygge interaktive prosjekter raskere og konsentrere seg om logikk, algoritmer, tilstander og modellering i stedet for detaljer i spillmotoren.

Lavere terskel, synlige resultater og tydelige spillstrukturer: frameCraft gjør pygame lettere å bruke i vanlig undervisning.
Hvorfor frameCraft?
Mindre fokus på spillmotoren, mer informatikk
frameCraft er ikke en tradisjonell utvidelse av en spillmotor, men et pedagogisk verktøy for moderne informatikkundervisning. Biblioteket reduserer tekniske barrierer uten å skjule de grunnleggende konseptene.
Rask start
Vanlige pygame-komponenter som spilløkke, hendelseshåndtering og rendering er samlet i et elevvennlig API. Dermed kan elevene lage sine første fungerende programmer raskere.
Tydelig struktur
Scener, regler, objekter, kollisjoner og tilstander er klart adskilt. Det gjør kodeorganisering og modellering lettere å forstå.
Prosjektbasert læring
Spill, simuleringer og visuelle modeller vokser steg for steg: fra det første objektet til HUD, nivålogikk og siste finpuss.

Pedagogisk verdi
Synlige prosjekter skaper meningsfulle læringssituasjoner
Tidlige mestringsopplevelser er spesielt viktige i undervisningen. Når en figur beveger seg, objekter kolliderer eller en spilltilstand endres synlig, opplever elevene abstrakte informatikkbegreper direkte.
På denne måten kan sentrale konsepter som modularisering, abstraksjon, algoritmisk tenkning, datastrukturer og objektorientert modellering arbeides med i en praktisk sammenheng.
Åpent og portabelt
Start i CodeRoom – fortsett med Python og pygame
frameCraft er tilgjengelig som et åpen kildekode-prosjekt på GitHub og som en Python-pakke på PyPI. Dermed kan prosjekter som er laget i CodeRoom, også videreutvikles utenfor læringsplattformen med vanlig CPython og pygame.
Åpen kildekode på GitHub
Kildekoden til frameCraft er offentlig tilgjengelig. Utgivelser, eksempler og videreutviklingen av biblioteket kan følges direkte på GitHub.
Installer fra PyPI
For lokal utvikling med vanlig Python og pygame kan frameCraft installeres direkte med pip.
pip install pygame-framecraftKurssamling
Fire spillprosjekter viser ulike måter å bruke frameCraft på
Frogger gir en særlig tilgjengelig introduksjon til bevegelse, trafikklinjer, nivåstruktur og kollisjoner. De andre prosjektene utvider spekteret av konsepter: Breakout fokuserer på sprett og blokkrutenett, Space Invaders introduserer objektgrupper og pools, og Flappy Colors Flight kombinerer input, tyngdekraft og økende vanskelighetsgrad.

Komplett Frogger-prosjekt
Kurset går fra den første scenen til bevegelse, berøringsknapper, datadrevne biler, liv, seierbetingelser, HUD, omstartslogikk og grafisk finpuss.
Se kurset
Lag Breakout
Breakout konsentrerer spillutviklingen om racket, ball, blokkrutenett, sprett, poeng, liv, tapsområde og omstartslogikk.
Se kurset
Flappy Colors Flight
Prosjektet kombinerer en synlig spillfigur, input for vingeslag, tyngdekraft, rørpar, en entity-pool, poengtelling og økende vanskelighetsgrad.
Se kurset
Space Invaders
Arcade-prototypen viser hvordan prosjektiler, fiendegrupper, nestede løkker, kollisjoner, poeng, tilstander og effekter virker sammen.
Se kursetVelg et prosjekt
Hvert prosjekt fremhever ulike informatikkbegreper
Kursene er mer enn bare variasjoner av den samme spillideen. De støtter ulike læringsmål og kan velges ut fra elevgruppe, tilgjengelig tid og faglig fokus.
Frogger: tilstander på spillebrettet
Godt egnet for trafikklinjer, bevegelse i diskrete retninger, nivågrenser, liv og seierbetingelser.
Breakout: kollisjoner som kjerneregel
Egnet for undervisning om sprett, treffdeteksjon, blokkrutenett, tellere, tapsområder og tydelige game-over-mekanismer.
Flappy: bevegelse og vanskelighetsgrad
Et tydelig eksempel på hastighet, tyngdekraft, tidsbaserte oppdateringer, gjenbruk av hindringer, engangspoeng og balansering av spillet.
Space Invaders: organisere grupper av objekter
Nyttig for løkker, nestede løkker, nummererte entities, prosjektil-pools, fiendegrupper, kollisjonshåndtering og effekt-pools.
Lesbar kode
Spillreglene står i sentrum
Med frameCraft trenger elevene ikke å begynne med detaljene i spillmotoren. De viktigste ideene er direkte synlige i koden: objekter bruker tags, spilltilstander lagres i scenen, og regler og kollisjoner endrer spillet.
- Tags kobler relaterte objekter logisk sammen.
- ctx.vars lagrer spilltilstander som liv, poeng eller game over.
- Kollisjonshåndterere gjør hendelsesstyrt logikk eksplisitt og lesbar.
import frameCraft as fc
FROSK_START_X = 160
FROSK_START_Y = 180
BIL_BREDDE = 46
BIL_HOYDE = 20
SPILL("Frogger - Kollisjoner", vindu=(320, 200), fps=30, bakgrunn=(30, 120, 40))
SCENE("hoved", liv=5, dod=False)
@BYGG_SCENE("hoved")
def bygg(ctx):
OBJEKT("frosk", pos=(FROSK_START_X, FROSK_START_Y), tag="frosk")
REKTANGEL("frosk", 24, 24, utloser=True)
OBJEKT("bil_0", pos=(40, 100), tag="bil")
REKTANGEL("bil_0", BIL_BREDDE, BIL_HOYDE, utloser=True)
HASTIGHET("bil_0", 90, 0)
def kollisjon_bil(ctx, frosk_e, bil_e):
if ctx.vars.get("dod"):
return
ctx.vars["liv"] -= 1
frosk_ent = ctx.E("frosk")
if ctx.vars["liv"] <= 0:
ctx.vars["dod"] = True
if frosk_ent is not None:
frosk_ent.alive = False
else:
if frosk_ent is not None:
frosk_ent.x = FROSK_START_X
frosk_ent.y = FROSK_START_Y
VED_KOLLISJON("frosk", "bil", kollisjon_bil)
fc.START_STANDALONE("hoved")Typiske klasseromsprosjekter
frameCraft er ikke begrenset til arcade-spill
Den samme strukturen kan brukes til klassiske spill, simuleringer, matematiske visualiseringer og kreative eksperimenter. Dermed egner frameCraft seg både for informatikkundervisning og tverrfaglige STEM-prosjekter.
Klassiske spill
Snake, Breakout, Tetris, Pong, Frogger og andre små arcade-spill egner seg godt til å modellere bevegelse, kollisjoner og spilltilstander.
Simuleringer
Bevegelse, hastighet, bevegelsesmengde, kollisjoner, bølger, svingninger og agentbaserte modeller kan utforskes som dynamiske systemer.
Kreative visualiseringer
Symmetri, mønstre, fargerom, generative bilder og datavisualiseringer kobler programmering med kreativ utforming.

Laget for skoler
Nettleserbasert, strukturert og fleksibelt
Ved å kombinere en pygame-basert tilnærming, nettleserkjøring i CodeRoom og et pedagogisk forenklet API blir frameCraft et praktisk verktøy for undervisning, prosjekter, differensiert læring og korte aktiviteter.
Lærere får tydelige byggeklosser og raskere prosjektoppsett. Elevene får synlige resultater, kreative oppgaver og en tilnærming som fortsatt er tett knyttet til sentrale informatikkbegreper.
Neste steg
frameCraft gjør pygame til et verktøy for aktiv læring i informatikk
Tilgjengelig, strukturert og prosjektbasert: Elevene lager sine egne interaktive programmer samtidig som de lærer sentrale konsepter som betingelser, løkker, funksjoner, tilstander, kollisjoner, datastrukturer og modellering.