Læringsblokk · Detaljer

Bomberman lys: Rutenettbombe

Denne læringsblokken introduserer sentrale konsepter innen rutenettbasert spillutvikling i Python 2 ved hjelp av frameCraft. Fokuset er på trinn-for-trinn-modellering av spillegrensen, bevegelse, bombelogikk, eksplosjoner og spilltilstander i et forsiktig lite Bomberman-lys-prosjekt.

Tid 90 minutter
Format AI-koding
Teknologi frameCraft
Oppgaver 21
Forhåndsvisning: Bomberman lys: Rutenettbombe

Prosjektutvikling med KI-støtte

Strukturert programmering med KI-Coding og ProtoTypeFirst

Denne kursen er spesifikt utviklet for lære som ønsker å programmere strukturert med KI-støtte og videreutvikle eksisterende kode.

KI-Coding i prosjekttilstanden

KI-Coding integrerer en kontekstbevisst KI direkte inn i CodeRoom. Den utvider eksisterende kode, forklarer feil, setter målrettede endringer og støtter videreutvikling i den nåværende prosjekttilstanden.

Gjennomsiktig kodeutvikling

Kursen fokuserer på didaktisk innbygget støtte, gjennomsiktige endringer og umiddelbart testbare resultater. Prompter, endringer og versjoner forblir gjennomsiktige for instruksjonelle veiledninger.

ProtoTypeFirst-format

Alle innhold starter med en fungerende prototype som gradvis utvikles ved hjelp av AI-koding, slik at hver utvidelse starter fra et synlig utgangspunkt.

Introduksjon

Følgende utdrag viser innføringen av lesemodulen i forkortet form.

Du starter ikke med et ferdig spill, men med en forberedt byggeplass. Scenen er allerede i gang, og viser tittelen, et enkelt rektangulært spillefelt, en plassholderfigur og en markør. Den virkelige Bomberman-spillet blir kun skapt gjennom dine endringer ved hjelp av Strukturert programmering med AI-koding og ProtoTypeFirst.

Didaktisk klassifisering

Modulen er kompakt klassifisert i forhold til innhold og undervisningspraksis.

Subjektivt mål

Modulen gjør utviklingen av et rasterbasert spill synlig som resultat av små, testbare modelleringsskritt. Sentrale konsepter er raster-pixelskonvertering, spillogikk basert på tilstander, datalistene for spillobjekter og skille mellom startregler og kjørende regler.

Kompetanseutvikling

  • Modellering: Rutenettfelt, spillobjekt, bomber og blokker representeres som strukturert data i prosjektet.
  • Algoritmisering: Bevegelse, hindring, teller, eksplosjon og seierbetingelser oppstår fra klare regelkontroller.
  • Abstraksjon: En hjelpemåte for raster-til-pixelsposisjoner reduserer gjentagelser og gjør koordinatlogikken forståelig.
  • Test: Hver utvidelse kan testes og rangert etter effekten på den synlige prototypen.

Lærerens tilleggsmessige verdi

  • Den fungerende startprototypen gir en tydelig utgangspunkt for trinnvis utvidelse.
  • Oppgavesequensen deler et spill-system inn i håndterbare undermekanismer.
  • Utvidelsesoppgaver muliggjør differensiering gjennom fiender, måltilstander, omstart og poeng.

Oppgavesequensen i undervisningsenheten

Oppgavene presenteres i rekkefølge av JSON-en og samles sammen som utviklingssteg for prosjektet.

1

Gjør rasterlinjer synlige

Det eksisterende spillfeltområdet blir supplert med enkle rasterlinjer. Dette gjør at plassholderfeltet blir et tydelig strukturert spillobjekt uten å bygge regler eller kollisjoner allerede.

2

Designere spilleren som en Bomberman-figur

Plassholderfiguren utvikles grafisk til en liten Bomberman-lignende spillfigur. Posisjon og logikk forblir uendret, slik at representasjon og oppførsel kan arbeides med separat.

3

Lagre spillerens rasterposisjon

Egen sceneverdi for kolonne og rad blir skapt for spilleren. Denne datstrukturen forbereder feltforfeltbevegelse senere uten å flytte figuren automatisk enda.

4

Justere spilleren mot rasterfeltet

Figurens startposisjon beregnes fra gridkolonne, gridrad og feltstørrelse. Dette gjør at spillstykket blir synlig på gridmodellen av spillobjektet for første gang.

5

Konverter rasterposisjon til pikselposisjon

En hjelpemot funksjon beregner pixelmidten i en gridcelle fra kolonne og rad. Denne sentrale konverteringen brukes deretter for spillerens posisjon og utgjør grunnlaget for videre objekter.

6

Implementer én-trinn gridbevegelse

Retningsaksjoner endrer lagret rasterposisjon hvert enkelt trinn. Figuren er deretter flyttet ved hjelp av konverteringsfunksjonen, uten veggblokkering eller animasjon ennå.

7

Fjern bevegelsesblokk

En enkel bevegelsesblokk hindrer at en holdt retningstast kan utløse flere trinn per frame. Et nytt enkelt trinn blir kun mulig etter at tasten er sluppet.

8

Forbered faste vegger

En liste med faste veggfelt blir opprettet og vist på rutemodellen. Veggene blokkerer ikke bevegelse ennå, men introduseres som separate spillobjekter.

9

Blokkere bevegelse mot vegger

Bevegelsesregelen sjekker før hvert trinn om målfeltet er i vegglisten. Spilleren kan da kun bevege seg til frie felt.

10

Vis ødelagte blokker

Bortsett fra faste vegger, legges en liste med ødelagbare blokker til. Disse feltene får sin egen visning, men mangler fremdeles eksplosjons- eller fjerningslogikk.

11

Sett plass for bomb som dataobjekt

Når en bombe settes, lagres en innføring med spillerens nåværende posisjon. I starten er kun én bombe tillatt per gang; synlighet, teller og eksplosjon følger senere.

12

Sett plass for bomb bare én gang per tastetrykk

En bommeblokk hindrer at en holdt bombe-tast kan opprette nye innføringer. Plasseringen blir kun igjen tilgjengelig etter å ha sluppet handlingen.

13

Gjør bomb synlig under kjøring

Eksisterende bombeinnføringer vises som tegn under spill. Oppgaven viser tydelig at dynamiske objekter ikke kan settes opp kun ved scenestart.

14

Legg til bombeteller

Hver bomb får en temporær teller som minskes med rammetid. Etter utløp merkes den for eksplosjon uten å tegne eksplosjonen enda.

15

Vis kryss-eksplosjon

Fra en forberedt bomb oppstår et kort kryssformet utbredelsefelt. Fjerning av blokker og skade er fortsatt ekskludert slik at eksplosjonsgeometrien kan vises isolert.

16

Fjern blokker gjennom eksplosjon

Eksplosjonsfeltene sammenlignes med ødelagte blokker. Bare de påvirkede blokkene fjernes fra listen; faste vegger endres ikke.

17

Vis poeng for ødelagte blokker

Et poengverdi og en HUD-visning legges til. Poengene øker når en ødelagt blokk forsvinner gjennom eksplosjonen.

18

Sjekk spiller skade

Spilllogikken sjekker om spillers posisjon er på et eksplosjonsfelt. I så fall sattes en tapstatus og vises en enkel Game Over melding.

19

Legg til enkle fiender

En fiende legges til som sin egen rutenettfelt og vises i spillfeltet. Den beveger seg ikke enda og forårsaker ingen skade, men utvider spillets objektmodell fra starten.

20

Legg til nivåmål og vinningsvilkår

Et enkelt mål defineres: Hvis alle fjernbare blokker er fjernet, endres spillstatusen til vunnet. En synlig seiersmelding gjør slutt på nivået gjenkjennelig.

21

Gjenta ved tast og berøring

En start- eller restartaksjon kobles sammen med tastatur og berøring. Etter en vunnet eller tapt status starter et tastetrykk scenen trygt på nytt.

Kodeeksempel

Fragmentet viser den forberedte tilstandsstruktur og stedet hvor bevegelse, bomber og regler vil legges til trinnvis senere.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
SZENE(
    'start',
    punkte=0,
    spiel_status='baustelle',
    raster_spalten=11,
    raster_zeilen=9,
    feld_groesse=16,
    bomben=[],
    bloecke=[],
    gegner=[]
)
def baustellen_regel(ctx):
    spieler = figur_von(ctx, 'spieler')
    if spieler is None:
        return
    status = wert_von(ctx, 'spiel_status', 'baustelle')
    if status == 'baustelle':
        # TODO: Hier entstehen später Bewegung, Bombe und Spielregeln.
        if aktion_aktiv(ctx, 'bombe'):
            pass
En visuell prototype blir gradvis omformet til et spillbart rutenett-spill med klare tilstander og verifiserbare regler.

Byggeblokken støtter en tydelig undervisningsorganisasjon fordi hver utvidelse er basert på et pågående prosjekt og gir verifiserbare resultater. Differensiering er mulig gjennom ekstra motstandere, måltilstander, poeng eller restartlogikk.

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