Invatare Atomica

Conditii in Scratch - Daca... Atunci

Progres lectie:
0%
🎯

Obiectivul lectiei

Personajele tale fac mereu acelasi lucru... Nu reactioneaza la nimic... Joculete sunt plictisitoare pentru ca nu au decizie... Nu stii cum sa faci un joc interactiv...

Dupa aceasta lectie vei putea:

  • Sa folosesti blocul 'daca...atunci' pentru a lua decizii in program
  • Sa folosesti blocul 'daca...atunci...altfel' pentru doua variante de actiune
  • Sa combini conditii cu operatori logici (si, sau, nu)
  • Sa verifici coliziuni intre sprite-uri cu blocul 'atinge [sprite]?'
  • Sa creezi un joc simplu cu reguli bazate pe conditii

Incearca singur!

🎮 Incearca tu!

Provocare: Creeaza un Sprite care evita marginile!

Inainte sa invatam teoria, sa experimentam! Vom crea un sprite care se misca si schimba culoarea cand atinge marginea scenei.

  1. Deschide Scratch si creeaza un proiect nou
  2. Pastreaza sprite-ul pisica (sau alege alt sprite)
  3. Adauga blocul "when green flag clicked" (Evenimente - galben)
  4. Sub el, adauga "forever" (Control - portocaliu)
  5. In interiorul blocului "forever", adauga "move 10 steps"
  6. Acum cauta blocul "if...then" (Control - portocaliu) si pune-l in bucla forever
  7. In spatiul in forma de romb din "if", pune "touching edge?" (Senzori - albastru deschis)
  8. In interiorul "if...then", adauga "turn 180 degrees" si "change color effect by 25"
  9. Apasa green flag si urmareste! Pisica se misca si se intoarce cand atinge marginea, schimband culoarea!
CODUL TAU SCRATCH:
when [green flag] clicked
forever
    move (10) steps
    if <touching [edge]?> then
        turn ↻ (180) degrees
        change [color] effect by (25)
    end
end
Experimenteaza! Incearca sa schimbi 180 grade cu alte valori (90, 120, 45). Ce se intampla? Incearca si alte efecte in loc de culoare!
💡 Indiciu #1: Nu gasesti blocul "if...then"?
Cauta in categoria "Control" (portocaliu). Este al treilea bloc, arata ca un bloc cu spatiu gol in forma de romb la mijloc si continut sub el.
💡 Indiciu #2: Pisica nu se intoarce?
Verifica ca ai pus blocul "touching edge?" EXACT in spatiul in forma de romb din "if". Trebuie sa se potriveasca perfect, ca o piesa de puzzle!
💡 Indiciu #3: Cum schimb sensul de rotire?
In blocul "turn", poti schimba directia folosind sagetile. Sageta in sens orar (↻) sau in sens invers (↺). Incearca ambele!

🌟 Provocare Bonus (optional)

Adauga un al doilea "if...then" care verifica "touching mouse-pointer?". Cand pisica atinge cursorul mouse-ului, fa-o sa spuna "Hei, m-ai prins!" si sa schimbe costumul!

1

1. Continut

🤔
Ce sunt Conditiile?
Definitie: O conditie este o DECIZIE pe care programul o ia in functie de o situatie. Este ca o intrebare cu raspuns DA sau NU. Daca raspunsul este DA, se intampla ceva. Daca este NU, nu se intampla nimic (sau se intampla altceva).
Analogie din viata ta: Conditiile sunt ca regulile pe care le urmezi in fiecare zi! "DACA plouă, ATUNCI iau umbrela." "DACA e verde la semafor, ATUNCI pot traversa strada." "DACA am facut temele, ATUNCI pot sa ma joc." Programul nostru gandeste exact la fel!

De ce sunt importante conditiile?

  • 🎮 Interactivitate: Fara conditii, jocurile nu pot reactiona la jucator
  • 🧠 Inteligenta: Personajele "gandesc" si iau decizii singure
  • 🎯 Control: Controlezi exact ce se intampla in diferite situatii
  • 🚀 Complexitate: Poti construi logica complexa imbricand conditii
Conditiile transforma un program simplu intr-un program inteligent! Fara ele, sprite-urile tale ar face doar actiuni repetitive fara sens.
2

2. Continut

➡️
Blocul "if...then" (Daca...Atunci)
Definitie: Blocul "if...then" (daca...atunci) verifica o conditie. Daca conditia este ADEVARATA (DA), executa codul din interior. Daca conditia este FALSA (NU), sare peste codul din interior si continua mai departe.
Analogie din viata ta: "DACA am 10 lei, ATUNCI cumpar inghetata." Daca ai 10 lei (conditie adevarata), cumperi inghetata. Daca nu ai, nu cumperi nimic si continui sa mergi pe strada.

Structura blocului if...then:

if <conditie> then
    // Codul care se executa DOAR daca conditia e adevarata
    // Poate fi orice: miscari, sunete, schimbari de aspect
end

📋 Exemplu: Sprite care evita marginea

when [green flag] clicked
forever
move (10) steps
if <touching [edge]?> then
turn ↻ (180) degrees

Explicatie: Sprite-ul se misca cu 10 pasi. La fiecare miscare, verifica: "Ating marginea?". DACA da, se intoarce cu 180 de grade. DACA nu, continua sa mearga inainte.

Spatiul in forma de romb din "if" accepta doar blocuri cu forma de romb (conditii). Acestea sunt blocuri din categoriile Senzori (albastru deschis) si Operatori (verde).
3

3. Continut

Blocul "if...then...else" (Daca...Atunci...Altfel)
Definitie: Blocul "if...then...else" (daca...atunci...altfel) verifica o conditie si INTOTDEAUNA executa ceva. Daca conditia este ADEVARATA, executa prima sectiune (then). Daca este FALSA, executa a doua sectiune (else).
Analogie din viata ta: "DACA plouă, ATUNCI iau umbrela, ALTFEL pun ochelari de soare." Indiferent de vreme, faci ceva! Conditia decide CE faci, nu DACA faci ceva.

Diferenta intre if-then si if-then-else:

Blocul Cand conditia e DA Cand conditia e NU
if...then Executa codul din "then" NU executa nimic
if...then...else Executa codul din "then" Executa codul din "else"

📋 Exemplu: Sprite care schimba culoarea in functie de pozitie

when [green flag] clicked
forever
if <(x position) > [0]> then
set [color] effect to (50)
else
set [color] effect to (0)

Explicatie: Verifica pozitia x a sprite-ului. DACA x > 0 (partea dreapta scenei), culoarea devine 50. ALTFEL (partea stanga), culoarea devine 0 (normal).

Foloseste "if...then...else" cand vrei sa faci ceva INTOTDEAUNA, dar diferit in functie de conditie. Foloseste "if...then" simplu cand vrei sa faci ceva DOAR daca conditia e adevarata.
4

4. Continut

👁️
Senzori - Ochii si Urechile Sprite-ului
Definitie: Senzorii sunt blocuri speciale (culoare albastru deschis) care detecteaza ce se intampla in jurul sprite-ului. Ei verifica atingeri, culori, taste apasate, pozitii si multe altele. Senzorii returneaza intotdeauna DA (true) sau NU (false).
Analogie din viata ta: Senzorii sunt ca simturile tale! Ochii vad (touching edge, touching color), urechile aud (loudness), pielea simte atingerea (touching sprite). Sprite-ul foloseste senzori pentru a "simti" lumea din jur!

Principalii senzori folositi in conditii:

touching [edge]? - Verifica daca sprite-ul atinge marginea scenei
touching [Sprite2]? - Verifica daca atinge alt sprite
touching color [rosu]? - Verifica daca atinge o anumita culoare
color [albastru] is touching [galben]? - Verifica daca culoarea sprite-ului atinge alta culoare
key [space] pressed? - Verifica daca o tasta e apasata
mouse down? - Verifica daca mouse-ul e apasat

📋 Exemplu: Detectarea atingerii cu mouse-ul

when [green flag] clicked
forever
if <touching [mouse-pointer]?> then
say [M-ai prins!] for (2) seconds
go to [random position]

Explicatie: La infinit, verifica daca sprite-ul atinge cursorul mouse-ului. Daca da, spune "M-ai prins!" si sare intr-o pozitie aleatorie. Perfect pentru un joc de prinde-ma!

Senzorul "touching color" este SENSIBIL! Trebuie sa alegi culoarea EXACT din scena folosind pipeta. Chiar si o mica diferenta de nuanta va face ca senzorul sa returneze NU.
5

5. Continut

⚖️
Operatori de Comparatie (>, <, =)
Definitie: Operatorii de comparatie (blocuri verzi, categoria Operatori) compara doua valori si returneaza DA sau NU. Sunt folositi pentru a verifica daca un numar este mai mare, mai mic sau egal cu altul.
Analogie din viata ta: "Sunt mai inalt decat fratele meu?" (comparam inaltimi). "Am mai multe puncte decat adversarul?" (comparam scoruri). "E mai cald astazi decat ieri?" (comparam temperaturi). Programul compara exact la fel!

Cei 3 operatori de comparatie:

Operator Semnificatie Exemplu
[a] > [b] Mai mare decat 10 > 5 (DA), 3 > 7 (NU)
[a] < [b] Mai mic decat 3 < 7 (DA), 10 < 5 (NU)
[a] = [b] Egal cu 5 = 5 (DA), 5 = 3 (NU)

📋 Exemplu: Sistem de scor cu reactie

when [green flag] clicked
set [scor] to (0)
forever
if <(scor) > [100]> then
say [Campion! Ai trecut de 100!]
play sound [applause]

Explicatie: Verifica continuu daca scorul este mai mare decat 100. Cand depaseste 100, sprite-ul felicita jucatorul si reda aplauze!

Poti compara nu doar numere fixe, ci si variabile, blocuri din Motion (x position, y position), sau chiar rezultate ale operatiilor matematice!
6

6. Continut

🔗
Combinarea Conditiilor: AND, OR, NOT
Definitie: Operatorii logici (AND, OR, NOT) combina mai multe conditii simple intr-o conditie complexa. AND = ambele conditii trebuie sa fie DA. OR = macar una trebuie sa fie DA. NOT = inversează conditia (DA devine NU, NU devine DA).
Analogie din viata ta: AND = "Pot iesi afara DACA am terminat temele SI e vreme frumoasa" (ambele trebuie). OR = "Iau pauza DACA sunt obosit SAU daca e pauza" (una e suficient). NOT = "Merg la scoala DACA NU e sambata/duminica" (inversare).

Cei 3 operatori logici:

<conditie1> AND <conditie2>

Returneaza DA DOAR daca AMBELE conditii sunt DA. Daca una e NU, rezultatul e NU.

Exemplu: "touching edge AND key space pressed" (DA doar daca atinge marginea SI spatiu e apasat)

<conditie1> OR <conditie2>

Returneaza DA daca MACAR UNA din conditii e DA. Returneaza NU doar daca AMBELE sunt NU.

Exemplu: "touching edge OR touching sprite2" (DA daca atinge oricare dintre ele)

NOT <conditie>

Inverseaza conditia. DA devine NU, NU devine DA.

Exemplu: "NOT touching edge" (DA daca NU atinge marginea)

📋 Exemplu: Conditie complexa cu AND

when [green flag] clicked
forever
if <<touching [Sprite2]?> AND <(scor) > [50]>> then
say [Ai castigat nivel bonus!]
go to x:(0) y:(0)

Explicatie: Nivelul bonus se deblochează DOAR daca sprite-ul atinge Sprite2 SI scorul e mai mare de 50. Daca nu ai scor suficient, nu se intampla nimic chiar daca atingi Sprite2!

Poti imbrica operatori logici! De exemplu: <<A AND B> OR C> inseamna "(A si B) sau C". Ordinea conteaza!
Nu confunda AND cu OR! AND e mai strict (ambele trebuie DA), OR e mai permisiv (una e suficient). Gandeste-te bine care se potriveste situatiei tale!
7

7. Continut

🪆
Conditii Imbricate (Nested Conditions)
Definitie: Conditiile imbricate sunt conditii puse INAUNTRUL altor conditii. Este ca si cum ai avea o cutie intr-o cutie! Programul verifica prima conditie, iar daca e DA, verifica si a doua conditie din interior.
Analogie din viata ta: "DACA e sambata (prima cutie), atunci verific DACA mi-am facut temele (a doua cutie). Daca DA, ma duc la film." E ca o verificare in 2 pasi! Primul DA te duce la al doilea test.

Cand folosesti conditii imbricate?

  • 🎯 Logica complexa: Cand decizia depinde de mai multe niveluri
  • 🔍 Verificari secventiale: "Daca A e DA, atunci verific si B"
  • Performanta: Eviti verificari inutile (daca prima conditie e NU, a doua nici nu se verifica)

📋 Exemplu: Sistem de dificultate bazat pe scor

when [green flag] clicked
forever
if <(scor) > [50]> then
if <(scor) > [100]> then
set [viteza] to (15)
say [Nivel Expert!]
else
set [viteza] to (10)
say [Nivel Mediu]
else
set [viteza] to (5)
say [Nivel Incepator]

Explicatie: Daca scor > 50, intra in prima conditie. Apoi verifica daca scor > 100. Daca DA, e nivel expert (viteza 15). Daca NU (dar scor e totusi >50), e nivel mediu (viteza 10). Daca scorul e sub 50, e nivel incepator (viteza 5). Trei niveluri de dificultate create cu conditii imbricate!

Poti imbrica cate conditii vrei, dar de obicei 2-3 niveluri sunt suficiente. Prea multe imbricate fac codul greu de citit!
Fii atent la indentare (alinierea blocurilor)! Scratch face asta automat, dar trebuie sa te asiguri ca pui blocurile in locurile corecte pentru a obtine logica dorita.

Exercitii practice

Exercitiul 1 (Nivel minim) -

Exercitiu Creativ
Joc "Prinde Stea" cu Conditii

Creeaza un joc simplu in Scratch unde o pisica trebuie sa prinda o stea care se misca aleator:

  1. Sprite pisica: Se misca cu sagetile (up/down/left/right)
  2. Sprite stea: Se teleporteaza aleator pe scena la fiecare 2 secunde
  3. Conditie principala: DACA pisica atinge steaua, ATUNCI:
    • Mareste scorul cu 1
    • Reda un sunet de reusita
    • Steaua se teleporteaza instant in alta pozitie
  4. Conditie bonus: DACA scorul > 10, ATUNCI viteza stelei creste (se teleporteaza la fiecare 1 secunda)

Exercitiul 2 (Nivel standard) -

Exercitiu Logic
Sistem de Traffic Light (Semafor)

Creeaza un semafor functional cu conditii imbricate:

  1. Desenati sau importati 3 costume pentru sprite-ul semafor: rosu, galben, verde
  2. Semafor-ul schimba culoarea automat: Verde 5 sec → Galben 2 sec → Rosu 5 sec → repeat
  3. Adaugati un sprite "Masina" care:
    • DACA semafor e verde → merge inainte
    • DACA semafor e galben → incetineste (merge mai rar)
    • DACA semafor e rosu → se opreste complet
  4. Provocare: Foloseste o variabila "culoare_semafor" (0=rosu, 1=galben, 2=verde) si conditii imbricate pentru masina

Exercitiul 3 (Nivel performanta) -

Exercitiu Avansat
Platformer cu Conditii Complexe

Creeaza un mini joc de platforme cu logica complexa:

  1. Personaj (sprite jucator):
    • Se misca stanga/dreapta cu sagetile
    • Sare cu spatiu (schimba y cu 50, apoi revine)
    • DACA atinge culoarea verde (platforma), poate sa sara
    • DACA atinge culoarea rosie (lava), pierde o viata si se reseteaza
  2. Conditii combinate: DACA (atinge verde) AND (tasta spatiu apasata) → sare
  3. Sistem de vieti: DACA vieti = 0 → "Game Over", altfel → continua
  4. Bonus: Adauga monede (sprite-uri separate) care dispar la atingere SI maresc scorul

Exercitiul 4 (Nivel performanta) -

Exercitiu Analitic
Debugging - Gaseste Eroarea!

Urmatorul cod Scratch are o problema. Analizeaza-l si gaseste ce nu functioneaza corect:

when [green flag] clicked
set [scor] to (0)
forever
    if <touching [Stea]?> then
        change [scor] by (1)
    end
    if <(scor) > [10]> then
        say [Ai castigat!]
    end
end

Problema: Dupa ce jucatorul atinge steaua si scorul devine 11, ce se intampla? De ce e o problema?
Sarcina ta: Identifica problema si propune o solutie folosind conditii.

Ce ai invatat astazi

  • Blocul if...then:Executa cod DOAR daca conditia e adevarata (DA)
  • Blocul if...then...else:Executa INTOTDEAUNA ceva - fie din "then", fie din "else"
  • Senzori:Blocuri care detecteaza atingeri, culori, taste (touching edge, touching color, key pressed)
  • Operatori de comparatie:> (mai mare), < (mai mic), = (egal) pentru a compara valori
  • Operatori logici:AND (ambele DA), OR (una DA e suficient), NOT (inversare)
  • Conditii imbricate:Conditii puse inauntrul altor conditii pentru logica complexa
  • Aplicatii practice:Jocuri interactive, sisteme de scor, detectare de coliziuni

Urmatoarea lectie

Continua cu lectia urmatoare pentru a aprofunda cunostintele.

Continua →