Invatare Atomica

Proiect: Labirint - Joc Complet in Scratch

Progres lectie:
0%
🎯

Obiectivul lectiei

Stii conditii, bucle, variabile... dar separat. Nu stii cum sa le combini intr-un program real. Fiecare concept pare izolat si fara legatura cu celelalte. Te intrebi: "La ce folosesc toate astea impreuna?"

Incearca singur!

🎮 Analizeaza un joc de labirint!

Provocare: Descopera conceptele ascunse!

Inainte sa construim propriul labirint, sa analizam cum functioneaza un joc de labirint. Gandeste-te la un joc in care un personaj se misca prin labirint, evita peretii si ajunge la iesire.

  1. Deschide Scratch si imagineaza-ti un joc de labirint simplu
  2. Jucatorul se misca cu sagetile si nu poate trece prin pereti
  3. Cand atinge iesirea (zona rosie), castiga
  4. Are 3 vieti - daca atinge un inamic, pierde o viata
  5. Un cronometru numara timpul de la start
  6. Identifica: unde sunt conditiile? unde sunt buclele? unde sunt variabilele?

📋 Analiza conceptelor dintr-un joc de labirint:

Comportament in joc Concept folosit Lectia de origine
Daca atinge peretele, se opreste daca...atunci (conditie simpla) Lectia 1
Daca atinge iesirea, castiga; altfel, continua daca...altfel (decizie dubla) Lectia 2
Atinge peretele SI are 0 vieti = game over operatori logici (SI, SAU) Lectia 3
La start, creeaza 3 inamici cu bucla repeta de N ori Lectia 4
Jocul ruleaza pana cand ajungi la iesire repeta pana cand Lectia 5
Scor, vieti, cronometru variabile Toate lectiile
💡 Indiciu #1: Unde este bucla principala a jocului?
Intregul joc este o bucla mare: "repeta pana cand (atingi iesirea SAU vieti = 0)". In interior, la fiecare cadru, se verifica: tastele apasate, coliziunile cu peretii, coliziunile cu inamicii. Aceasta bucla ruleaza de ~30 ori pe secunda!
💡 Indiciu #2: Unde sunt conditiile?
Conditiile sunt peste tot! "Daca tasta sageata-sus apasata ATUNCI misca-te sus" (Lectia 1). "Daca atingi peretele ATUNCI mergi inapoi la start, ALTFEL continua" (Lectia 2). "Daca atingi inamic SI vieti > 0 ATUNCI pierde viata" (Lectia 3).
💡 Indiciu #3: Unde sunt variabilele?
Variabilele stocheaza starea jocului: "scor" (creste cand colectezi un obiect), "vieti" (scade cand atingi un inamic), "cronometru" (creste in fiecare secunda), "pozitie_start_x" si "pozitie_start_y" (unde se teleporteaza jucatorul cand atinge peretele).

🌟 Provocare Bonus (optional)

Deschide Scratch si cauta proiecte de labirint existente (click pe "Explore" si cauta "maze"). Alege unul si incearca sa identifici toate blocurile din categoriile: Control (portocaliu), Sensing (albastru deschis) si Variables (portocaliu inchis). Cate gasesti din fiecare?

Exercitii practice

Exercitiul 1 (Nivel minim) -

Exercitiu Analitic
Gaseste bug-ul in pseudocod

Analizeaza urmatorul pseudocod pentru un joc de labirint si gaseste eroarea care face jocul sa nu functioneze corect:

cand se apasa steagul verde:
    mergi la x: -200  y: 150
    seteaza [vieti] la 3

    repeta pana cand (atingi culoarea [rosu]):
        cand tasta [sageata sus] apasata:
            schimba y cu 5
        cand tasta [sageata jos] apasata:
            schimba y cu -5
        cand tasta [sageata dreapta] apasata:
            schimba x cu 5
            DACA atingi culoarea [negru] ATUNCI
                mergi la x: -200  y: 150
        cand tasta [sageata stanga] apasata:
            schimba x cu -5

    spune "Ai castigat!"

Intrebari:

  1. Cate directii au verificare de perete (touching color negru)?
  2. Ce se intampla cand jucatorul merge in sus si atinge un perete?
  3. Cum ai repara bug-ul?

Exercitiul 2 (Nivel standard) -

Exercitiu Aplicativ
Construieste labirintul de baza (Fazele 1-3)

Deschide Scratch si construieste un labirint functional cu primele 3 faze:

  1. Faza 1: Deseneaza un backdrop cu pereti negri, drum alb, start verde, iesire rosie
  2. Faza 2: Programeaza miscarea cu cele 4 taste sageata (change x/y by 5)
  3. Faza 3: Adauga detectia peretilor la TOATE cele 4 directii

Criteriu de succes: Jucatorul se misca prin labirint, nu poate trece prin pereti si este trimis la start cand atinge negru.

Exercitiul 3 (Nivel performanta) -

Exercitiu Creativ
Labirint cu 3 camere si sistem de chei

Extinde proiectul de baza cu un labirint care are 3 camere separate, conectate prin usi colorate. Jucatorul trebuie sa gaseasca cheia potrivita pentru a deschide fiecare usa!

Cerinte:

  • Camera 1: Start + cheia albastra
  • Usa albastra: se deschide doar daca ai cheia albastra (variabila cheie_albastra = 1)
  • Camera 2: Contine cheia galbena
  • Usa galbena: se deschide doar daca ai cheia galbena
  • Camera 3: Contine iesirea (zona rosie)
  • Adauga un contor de chei colectate pe ecran

Exercitiul 4 (Nivel performanta) -

Exercitiu Matematic
Calculeaza drumul optim prin labirint

Analizeaza urmatoarea grila de labirint 5x5. Fiecare celula libera costa 1 pas. Gaseste drumul cel mai scurt de la S (start) la E (exit).

Grila labirint (# = perete, . = drum, S = start, E = iesire):

  1 2 3 4 5
1 S . # . .
2 # . # . #
3 . . . . .
4 . # # . #
5 . . # . E

Cerinte:

  1. Deseneaza pe hartie toate drumurile posibile de la S la E
  2. Numara pasii pentru fiecare drum
  3. Care este numarul MINIM de pasi? (miscare: sus, jos, stanga, dreapta)
  4. Cate drumuri diferite exista cu lungimea minima?

Ce ai invatat astazi

  • Design:Ai proiectat un labirint cu codificare de culori (negru, alb, verde, rosu)
  • Miscare:Ai programat controlul jucatorului cu 4 taste sageata
  • Coliziuni:Ai implementat detectia peretilor cu "touching color" (Lectia 1)
  • Castig:Ai adaugat conditia de victorie cu daca...altfel (Lectia 2)
  • Logica:Ai combinat conditii cu operatori SI, SAU (Lectia 3)
  • Game Loop:Ai folosit "repeta pana cand" pentru bucla jocului (Lectia 5)
  • Variabile:Ai creat sisteme de scor, vieti si cronometru