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.

frameCraft som pedagogisk utvidelse for pygame

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.

1

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.

2

Tydelig struktur

Scener, regler, objekter, kollisjoner og tilstander er klart adskilt. Det gjør kodeorganisering og modellering lettere å forstå.

3

Prosjektbasert læring

Spill, simuleringer og visuelle modeller vokser steg for steg: fra det første objektet til HUD, nivålogikk og siste finpuss.

frameCraft-konsept med scener, objekter, regler og synlige resultater

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-framecraft

Kurssamling

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.

Forhåndsvisning av Frogger-kurset

Komplett Frogger-prosjekt

12 modulerNivåer & kollisjoner

Kurset går fra den første scenen til bevegelse, berøringsknapper, datadrevne biler, liv, seierbetingelser, HUD, omstartslogikk og grafisk finpuss.

Se kurset
Forhåndsvisning av Breakout-kurset

Lag Breakout

6 modulerBall & sprett

Breakout konsentrerer spillutviklingen om racket, ball, blokkrutenett, sprett, poeng, liv, tapsområde og omstartslogikk.

Se kurset
Forhåndsvisning av Flappy Colors Flight-kurset

Flappy Colors Flight

12 modulerFysikk & balansering

Prosjektet kombinerer en synlig spillfigur, input for vingeslag, tyngdekraft, rørpar, en entity-pool, poengtelling og økende vanskelighetsgrad.

Se kurset
Forhåndsvisning av Space Invaders-kurset

Space Invaders

11 modulerPools & svermer

Arcade-prototypen viser hvordan prosjektiler, fiendegrupper, nestede løkker, kollisjoner, poeng, tilstander og effekter virker sammen.

Se kurset

Velg 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.

Space Invaders-prosjekt med kollisjoner, poeng og synlig spilltilbakemelding

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.