Kode kopiert! 📋

📅 Dag 3: Interaktive Dþrer

LĂŠr kommandoblocker, Python lytting og lag interaktiv dĂžr!

🌅 Oppstart og oppsummering (10 min)

  • Recap av dag 1-2: variabler, lĂžkker, if-setninger, agenten
  • Dagens mĂ„l: Lage en dĂžr som Ă„pnes og lukkes med knapper!

đŸ€ Konsept: Kommandoblocker og Python som jobber sammen (20 min)

Hva er en kommandoblokk?

  • En spesiell blokk som kan kjĂžre kommandoer
  • Kan plassere og fjerne blokker automatisk
  • Aktiveres av knapper eller redstone

Kommandoblocker kan plassere blokker:

Kommandoblokk kommando
/setblock x y z block_type

Eksempel: /setblock 100 70 200 glass plasserer glass pÄ koordinat (100, 70, 200)

Python kan sjekke om blokker er der:

Python sjekking
blocks.test_for_block(GLASS, world(100, 70, 200))
  • Returnerer True hvis glass-blokk er pĂ„ koordinatet
  • Returnerer False hvis det ikke er der
⚠ Magien skjer nĂ„r:
  1. Kommandoblokk plasserer en blokk pÄ koordinat X
  2. Python sjekker samme koordinat X for samme blokk-type
  3. Python reagerer nÄr den "ser" blokken!

Viktig: Koden mÄ kjÞre i bakgrunnen:

Bakgrunn-loop struktur
def loop():
    while True:
        # Din kode her

loops.run_in_background(loop)

🎯 Oppgave 1: FĂ„ tak i kommandoblokk og test (15 min)

📋 Trinn:
  1. FĂ„ tak i kommandoblokk: /give @p command_block
  2. Plasser kommandoblokken pÄ bakken
  3. HÞyreklikk pÄ den og skriv: /setblock 100 70 200 glass
  4. FĂ„ en knapp: /give @p stone_button
  5. Plasser knappen pÄ siden av kommandoblokken
  6. Test at glass-blokk plasseres pÄ koordinat (100, 70, 200) nÄr du trykker!
⚠ Viktig:
  • Du mĂ„ velge dine egne koordinater!
  • Skriv ned koordinatene du bruker!
  • Bruk F3 for Ă„ se koordinatene dine
đŸ‘ïž Vis fasit â–Œ
Fasit - Kommandoblokk innhold
/setblock [dine_koordinater] glass

Eksempel: /setblock 100 70 200 glass

Hvordan teste: GÄ til koordinat (100, 70, 200) og se om det dukker opp en glass-blokk nÄr du trykker knappen!

🎯 Oppgave 2: Python lytter og reagerer (15 min)

Oppgave: Lag Python-kode som oppdager glass-blokken og skriver i chatten

⚠ Viktig:

Bruk SAMME koordinater og SAMME blokk-type som i oppgave 1!

đŸ‘ïž Vis fasit â–Œ
Fasit - Python lytter

# Lytter etter glass-blokk og reagerer
def lytter():
    while True:
        # Bytt ut 100 70 200 med dine koordinater!
        if blocks.test_for_block(GLASS, world(31, -60, -20)):
            player.say("Jeg sÄ glass-blokken!")
            # Fjern blokken sÄ meldingen ikke kommer hele tiden
            blocks.place(AIR, world(31, -60, -20))

            # Kode for Ă„ fjerne dĂžra
            blocks.fill(AIR, world(31, -60, -17), world(31, -58, -15), FillOperation.REPLACE)

# Start lytting i bakgrunnen
loops.run_in_background(lytter)
💡 Test det:
  1. KjĂžr Python-koden
  2. Trykk pÄ knappen
  3. Du skal se meldingen i chatten!

☕ Pause (10 min)

Tid for en liten hvil fĂžr vi bygger den store dĂžren!

🎯 Oppgave 3: Bygg en dĂžrĂ„pning (10 min)

📋 Oppgave:
  1. Bygg vegger rundt deg med en dÞrÄpning
  2. DÞrÄpningen skal vÊre 2 blokker bred og 3 blokker hÞy
  3. Skriv ned koordinatene for dÞrÄpningen
💡 Tips for koordinater:
  • StĂ„ i dĂžrĂ„pningen og bruk F3
  • DĂžrĂ„pning fra (x1, y1, z1) til (x2, y2, z2)
  • Eksempel: fra (95, 70, 195) til (96, 72, 195)

🎯 Oppgave 4: Lukke dþren med kode (15 min)

Oppgave: Endre Python-koden sÄ den fyller dÞrÄpningen med blokker i stedet for Ä skrive i chatten

💡 Tips:
  • Bruk blocks.fill() for Ă„ fylle omrĂ„det
  • Husk Ă„ bruke koordinatene til dĂžrĂ„pningen din
đŸ‘ïž Vis fasit â–Œ
Fasit - Lukke dĂžr
# Lytter og lukker dĂžren
def lukke_dor():
    while True:
        # Bytt ut med dine koordinater!
        if blocks.test_for_block(GLASS, world(100, 70, 200)):
            player.say("Lukker dĂžren!")
            # Fyll dÞrÄpningen med stein (bytt koordinater!)
            blocks.fill(COBBLESTONE, world(95, 70, 195), world(96, 72, 195), FillOperation.REPLACE)
            # Fjern glass-blokken
            blocks.place(AIR, world(100, 70, 200))

# Start systemet
loops.run_in_background(lukke_dor)

đŸšȘ Hovedoppgave: Komplett dĂžr-system (30 min)

📋 Oppgave:
  1. Lag en andre kommandoblokk med en andre knapp
  2. Denne skal plassere en ANNEN type blokk pÄ nye koordinater
  3. Python skal lytte pĂ„ den nye blokken og ÅPNE dĂžren (fjerne blokkene)
  4. Test at du kan bÄde Äpne og lukke dÞren!
🔧 Detaljerte trinn:
  1. Ny kommandoblokk: Plasser en ny kommandoblokk
  2. Ny kommando: /setblock 105 70 205 stone
  3. Koble til knapp: Plasser en knapp pÄ den nye kommandoblokken
  4. Utvid Python-koden: Legg til lytting for stone-blokk
đŸ‘ïž Vis fasit â–Œ
Fasit - Komplett dĂžr-system
# Komplett dÞr-system med Äpne og lukke
def door_system():
    while True:
        # Lukke-dĂžr knapp (glass-blokk)
        if blocks.test_for_block(GLASS, world(100, 70, 200)):
            player.say("🔒 Lukker dþren!")
            # Fyll dÞrÄpningen med stein (endre koordinater!)
            blocks.fill(COBBLESTONE, world(95, 70, 195), world(96, 72, 195), FillOperation.REPLACE)
            blocks.place(AIR, world(100, 70, 200))  # Fjern signalblokk
        
        # Åpne-dþr knapp (stone-blokk)  
        if blocks.test_for_block(STONE, world(105, 70, 205)):
            player.say("🔓 Åpner dþren!")
            # Fjern blokkene fra dÞrÄpningen (endre koordinater!)
            blocks.fill(AIR, world(95, 70, 195), world(96, 72, 195), FillOperation.REPLACE)
            blocks.place(AIR, world(105, 70, 205))  # Fjern signalblokk

# Start dĂžr-systemet
loops.run_in_background(door_system)

🌟 Ekstra utfordringer:

  1. Lett: Endre dĂžrmaterialet til glass eller jern
  2. Medium: Lag en dĂžr som lukker seg automatisk etter 5 sekunder
  3. Vanskelig: Lag en hemmelig dĂžr som krever et "passord" (3 knapper i riktig rekkefĂžlge)

🔧 Viktige tips og feilsþking (15 min)

⚠ Husk alltid:
  • Same koordinater: Python mĂ„ lytte pĂ„ SAMME sted som kommandoblokken plasserer
  • Same blokk-type: Hvis kommandoblokk plasserer GLASS, mĂ„ Python lytte etter GLASS
  • Fjern blokken: Alltid blocks.place(AIR, koordinat) for Ă„ fjerne signalblokk

🔧 Vanlige feil og lþsninger:

❌ Forskjellige koordinater

mellom kommandoblokk og Python

LĂžsning: Dobbelsjekk tallene!

❌ Glemmer Ă„ fjerne blokken

da kjĂžrer koden hele tiden

LĂžsning: blocks.place(AIR, koordinat)

❌ Feil blokk-type

kommandoblokk plasserer glass, Python lytter etter stone

LĂžsning: Bruk samme blokk-type

❌ Koden kjþrer ikke

glemmer loops.run_in_background()

LĂžsning: Husk Ă„ starte loopen!

💡 Nyttige koordinat-tips:
  • Bruk F3 for Ă„ se hvor du stĂ„r
  • Skriv ned alle koordinater du bruker pĂ„ papir
  • Test med /tp x y z for Ă„ teleportere til koordinater
  • Bruk /fill x1 y1 z1 x2 y2 z2 air for Ă„ rydde omrĂ„det

đŸ—ïž Prosjektarbeid: Lag din egen interaktive bygning (20 min)

Velg ett av disse prosjektene:

🏠 Smart hus

Lag et hus med flere dÞrer som Äpnes med forskjellige knapper

🏰 Slott med portkullis

Bygg et slott med en stor port som kan Äpnes og lukkes

🔒 Bankboks

Lag en sikker boks som bare Äpnes med riktig "passord"

đŸŽȘ Magisk scene

Lag en scene hvor ting dukker opp og forsvinner

đŸ‘ïž Vis eksempel-prosjekt â–Œ
Eksempel - Smart hus med 3 dĂžrer
# Smart hus med flere dĂžrer
def smart_house():
    while True:
        # FrontdĂžr (rĂžd knapp = emerald signal)
        if blocks.test_for_block(EMERALD_BLOCK, world(100, 70, 200)):
            player.say("đŸšȘ FrontdĂžr Ă„pnes!")
            blocks.fill(AIR, world(95, 70, 190), world(96, 72, 190), FillOperation.REPLACE)
            blocks.place(AIR, world(100, 70, 200))
        
        # BakdÞr (blÄ knapp = diamond signal)
        if blocks.test_for_block(DIAMOND_BLOCK, world(110, 70, 200)):
            player.say("đŸšȘ BakdĂžr Ă„pnes!")
            blocks.fill(AIR, world(95, 70, 210), world(96, 72, 210), FillOperation.REPLACE)
            blocks.place(AIR, world(110, 70, 200))
        
        # Lukk alle dĂžrer (gul knapp = gold signal)
        if blocks.test_for_block(GOLD_BLOCK, world(105, 70, 205)):
            player.say("🔒 Alle dþrer lukkes!")
            blocks.fill(COBBLESTONE, world(95, 70, 190), world(96, 72, 190), FillOperation.REPLACE)
            blocks.fill(COBBLESTONE, world(95, 70, 210), world(96, 72, 210), FillOperation.REPLACE)
            blocks.place(AIR, world(105, 70, 205))

loops.run_in_background(smart_house)

📝 Oppsummering av dag 3 (10 min)

🎉 Hva har vi lért i dag?

  • Kommandoblocker kan plassere blokker pĂ„ spesifikke koordinater
  • Python kan lytte etter blokker med blocks.test_for_block()
  • Vi kan lage systemer hvor knapper styrer dĂžrer
  • Viktig Ă„ bruke samme koordinater og blokk-typer
  • Kombinere flere knapper for komplekse systemer
🚀 I morgen (Dag 4):
  • Lage monstre som spawner nĂ„r du beveger deg
  • Bygge farlige omrĂ„der og feller
  • Kombinere bevegelse med automatisering
← Forrige: Dag 2 Neste: Dag 4 - Monster-Spawning →