Kode kopiert! 📋

📅 Dag 2: Agenten og Logikk

Lær syntax, styr agenten og bygg berg-og-dal-bane!

🌅 Oppstart og oppsummering (10 min)

  • Hva husker dere fra i går?
  • Kjapp runde: fortell om noe gøy som skjedde siden sist

📝 Konsept 1: Hva er syntax? (15 min)

Hva er syntax?

  • Reglene for hvordan kode må skrives
  • Som grammatikk i norsk - alt må være helt riktig
  • Én liten feil kan ødelegge hele programmet

Vanlige syntax-feil:

  • Glemme kolon : etter for-løkke
  • Feil innrykk (ikke hakket inn koden)
  • Feil på store/små bokstaver i variabelnavn
  • Glemme anførselstegn rundt tekst

Demonstrasjon av feil:

❌ FEIL - mangler kolon
for count in range(5)
    player.say("Hei")
✅ RIKTIG
for count in range(5):
    player.say("Hei")

🎯 Oppgave 1: Finn feilen (10 min)

Oppgave: Disse kodene har feil. Finn og fiks dem:

Feil 1:
for i in range(3)
player.say("Test")
Feil 2:
mitt_navn = "Ola"
player.say(mitt_Navn)
Feil 3:
for count in range(5):
player.say("Hallo")
👁️ Vis fasit
✅ Rett 1 - manglet kolon og innrykk
for i in range(3):
    player.say("Test")
✅ Rett 2 - feil på stor/liten bokstav
mitt_navn = "Ola"
player.say(mitt_navn)
✅ Rett 3 - mangler innrykk
for count in range(5):
    player.say("Hallo")

🤖 Konsept 2: Møt agenten (20 min)

Hva er agenten?

  • En robot i Minecraft som kan følge instruksjoner
  • Må få helt nøyaktige kommandoer
  • Kan bevege seg, bygge, knuse blokker

Grunnleggende agent-kommandoer:

Agent kommandoer
agent.teleport_to_player()           # Hent agenten til deg
agent.move(FORWARD, 1)               # Gå 1 steg fremover
agent.turn(TurnDirection.LEFT)       # Snu til venstre
agent.place(DOWN)                    # Plasser blokk under seg
agent.destroy(FORWARD)               # Knus blokk foran seg
⚠️ Retninger:
  • FORWARD (fremover), BACK (bakover)
  • LEFT (venstre), RIGHT (høyre)
  • UP (opp), DOWN (ned)

🎯 Oppgave 2: Hent agenten (5 min)

Oppgave: Få agenten til å teleportere til deg og si "Hei!"

👁️ Vis fasit
Fasit - Hent agenten
agent.teleport_to_player()
player.say("Agenten er her!")

💃 Hovedoppgave 1: Enkel dans (25 min)

📋 Oppgave i deler:

Del 1: Få agenten til å gå frem og tilbake

Del 2: Legg til sving i dansen

Del 3: Gjenta dansen flere ganger med for-løkke

👁️ Vis fasit Del 1
Fasit Del 1 - Frem og tilbake
def enkel_dans():
    agent.teleport_to_player()
    agent.move(FORWARD, 2)
    agent.move(BACK, 2)

enkel_dans()
👁️ Vis fasit Del 2
Fasit Del 2 - Med sving
def dans_med_sving():
    agent.teleport_to_player()
    agent.move(FORWARD, 2)
    agent.turn(TurnDirection.LEFT)
    agent.move(FORWARD, 2)
    agent.turn(TurnDirection.RIGHT)
    agent.move(BACK, 2)

dans_med_sving()
👁️ Vis fasit Del 3
Fasit Del 3 - Gjentagende dans
def gjentagende_dans():
    agent.teleport_to_player()
    
    for count in range(3):
        agent.move(FORWARD, 2)
        agent.turn(TurnDirection.LEFT)
        agent.move(FORWARD, 1)
        agent.turn(TurnDirection.RIGHT)
        agent.move(BACK, 3)
        agent.turn(TurnDirection.LEFT)

gjentagende_dans()

☕ Pause (10 min)

Aktiviteter som fremmer samarbeid og bli-kjent

🤔 Konsept 3: Vilkår (if-setninger) (20 min)

Hva er et vilkår?

  • En måte for programmet å ta beslutninger
  • Spør: "Er dette sant?" - hvis ja, gjør noe, hvis nei, hopp over
  • Som å si: "Hvis det regner, ta med paraply"

Struktur av if-setning:

If-setning struktur
if vilkår:
    # Dette skjer hvis vilkåret er sant
⚠️ Sammenligning med == (to likhetstegn):
  • = lager variabel: navn = "Ola"
  • == sammenligner: if navn == "Ola"

Eksempel:

If-setning eksempel
alder = 12
if alder >= 10:
    player.say("Du er stor nok!")
💡 Vanlige sammenligninger:
  • == (er lik)
  • > (større enn)
  • < (mindre enn)
  • >= (større enn eller lik)
  • <= (mindre enn eller lik)

🎯 Oppgave 4: Enkel if-setning (10 min)

Oppgave: Lag en variabel med ditt favorittdyr. Hvis det er "hund", skal spilleren si "Voff voff!"

👁️ Vis fasit
Fasit - If-setning
favorittdyr = "hund"

if favorittdyr == "hund":
    player.say("Voff voff!")

🏗️ Konsept 4: Agent kan bygge komplekse strukturer (15 min)

Agent kan plassere blokker strategisk:

Agent building
agent.set_item(STONE, 64, 1)  # Gi agenten 64 stein i slot 1
agent.place(DOWN)             # Plasser blokk under seg
agent.place(FORWARD)          # Plasser blokk foran seg

Agenten kan bygge mens den beveger seg:

  • Kombinere movement og place-kommandoer
  • Bruke for-løkker for å bygge lange strukturer
  • Variere høyde og retning for komplekse former

Eksempel - bygge en enkel bro:

Enkel bro
def bygg_bro():
    agent.set_item(STONE, 64, 1)
    for i in range(10):
        agent.place(DOWN)
        agent.move(FORWARD, 1)

🎯 Oppgave 5: Agent bygger trapp (10 min)

Oppgave: Få agenten til å bygge en trapp oppover

👁️ Vis fasit
Fasit - Trapp
def bygg_trapp():
    agent.teleport_to_player()
    agent.set_item(STONE, 64, 1)
    
    for steg in range(8):
        agent.place(DOWN)
        agent.move(FORWARD, 1)
        agent.move(UP, 1)

bygg_trapp()

🎢 Hovedoppgave 2: Berg-og-dal-bane (30 min)

📋 Oppgave:

Programmere agenten til å bygge en berg-og-dal-bane med:

  • Skinner som går oppover og nedover
  • Stein som fundament under skinnene
  • Agenten følger en bane-rute
👁️ Vis fasit - Enkel berg-og-dal-bane
Fasit - Berg-og-dal-bane
def berg_og_dal_bane():
    agent.teleport_to_player()
    
    # Gi agenten materialer
    agent.set_item(STONE, 64, 1)
    agent.set_item(RAIL, 64, 2)
    
    # Bygg første del - oppover
    for steg in range(8):
        agent.set_slot(1)  # Velg stein
        agent.place(DOWN)
        agent.set_slot(2)  # Velg skinner
        agent.place(DOWN)
        agent.move(FORWARD, 1)
        agent.move(UP, 1)  # Gå oppover
    
    # Bygg andre del - flatt
    for steg in range(6):
        agent.set_slot(1)
        agent.place(DOWN)
        agent.set_slot(2)
        agent.place(DOWN)
        agent.move(FORWARD, 1)
    
    # Bygg tredje del - nedover
    for steg in range(8):
        agent.set_slot(1)
        agent.place(DOWN)
        agent.set_slot(2)
        agent.place(DOWN)
        agent.move(FORWARD, 1)
        agent.move(DOWN, 1)  # Gå nedover

berg_og_dal_bane()

🌟 Ekstra utfordring: Avansert berg-og-dal-bane med kurver

👁️ Vis fasit - Avansert versjon
Fasit - Avansert berg-og-dal-bane
def avansert_berg_og_dal():
    agent.teleport_to_player()
    
    # Gi agenten materialer
    agent.set_item(STONE, 64, 1)
    agent.set_item(RAIL, 64, 2)
    agent.set_item(POWERED_RAIL, 16, 3)  # Ekstra fart!
    
    # Del 1: Oppover med powered rails
    for steg in range(10):
        agent.set_slot(1)
        agent.place(DOWN)
        
        # Hver 3. skinne er powered rail
        if steg % 3 == 0:
            agent.set_slot(3)
        else:
            agent.set_slot(2)
        agent.place(DOWN)
        
        agent.move(FORWARD, 1)
        agent.move(UP, 1)
    
    # Del 2: Kurve til høyre
    agent.turn(TurnDirection.RIGHT)
    for steg in range(5):
        agent.set_slot(1)
        agent.place(DOWN)
        agent.set_slot(2)
        agent.place(DOWN)
        agent.move(FORWARD, 1)
    
    # Del 3: Bratt nedover
    agent.turn(TurnDirection.RIGHT)
    for steg in range(12):
        agent.set_slot(1)
        agent.place(DOWN)
        agent.set_slot(2)
        agent.place(DOWN)
        agent.move(FORWARD, 1)
        agent.move(DOWN, 1)
    
    # Del 4: Loop tilbake
    agent.turn(TurnDirection.RIGHT)
    for steg in range(8):
        agent.set_slot(1)
        agent.place(DOWN)
        agent.set_slot(2)
        agent.place(DOWN)
        agent.move(FORWARD, 1)

avansert_berg_og_dal()

📝 Oppsummering og utsikter (10 min)

🎉 Hva har vi lært i dag?

  • Syntax må være helt riktig
  • Agenten kan bevege seg og utføre oppgaver
  • If-setninger lar programmet ta beslutninger
  • Agenten kan bygge komplekse strukturer som berg-og-dal-baner
🚀 I morgen:
  • Bygge noe stort og kreativt
  • Bruke alt vi har lært
  • Lage vår egen feriedestinasjon!
← Forrige: Dag 1 Neste: Dag 3 - Koordinater og Kreativitet →