1. Interfata Scratch
- Paleta de blocuri (stanga) - categoriile de instructiuni disponibile
- Zona de cod (centru) - locul unde construiesti scripturile prin drag & drop
- Scena (dreapta) - ecranul unde rulezi si vizualizezi programul
Interfata Scratch e ca un atelier de teatru. Paleta de blocuri e "recuzita" (accesorii disponibile), zona de cod e "scenariul" pe care il scrii, iar scena e "scena teatrului" unde actorii (sprite-urile) joaca. Le ai pe toate in acelasi loc!
Steagul verde (deasupra scenei) = porneste programul
Butonul rosu Stop (deasupra scenei) = opreste programul
Tab-ul Costume (sus-centru) = pentru a vedea si edita costumele sprite-ului selectat
Tab-ul Sunete (sus-centru) = pentru a adauga/edita sunete
Zona sprite-uri (jos-dreapta) = lista tuturor personajelor din proiect
Butonul fundal (jos-dreapta, langa sprite-uri) = pentru a adauga fundaluri
Scena vs Zona de cod: Scena e unde RULEZI programul. Zona de cod e unde IL CONSTRUIESTI. Blocurile din zona de cod nu sunt vizibile pe scena!
Sprite vs Backdrop: Sprite-urile sunt personajele mobile (au cod propriu). Backdrop-ul este fundalul fix din spatele lor.
2. Categorii de Blocuri
- Motion (Miscare) - albastru: mergi, roteste, gliseaza, seteaza pozitia
- Looks (Aspect) - mov/violet: spune, costum, arata/ascunde, fundal
- Events (Evenimente) - galben: cand se da click, cand se apasa tasta
- Control - portocaliu: asteapta, daca-atunci, daca-atunci-altfel, repeta
- Sensing (Detectare) - albastru-deschis: atingi?, tasta apasata?, intreaba
- Operators (Operatori) - verde: +, -, *, /, mod, si, sau, nu
- Variables (Variabile) - portocaliu-inchis: seteaza variabila, schimba cu
E ca la farmacie, unde medicamentele sunt grupate pe categorii si culori. In Scratch, culoarea blocului iti spune instant ce face: albastrul = miscare, portocaliul = logica/control, galbenul = evenimente. Dupa putin antrenament, gasesti orice bloc in sub 3 secunde!
Observa culorile: galben (event), violet (looks), albastru (motion), portocaliu (control). Fiecare culoare = o categorie diferita!
Cand nu gasesti un bloc, gandeste-te la culoarea lui: vrei sa misti ceva? → albastru. Vrei sa astepti sau sa faci o conditie? → portocaliu. Vrei sa arati ceva? → violet.
3. Algoritmi Secventiali
Conform programei cls. V (OMEN 3393/2017), aceasta este prima structura de control invatata: competenta V-2.3 si V-3.2.
E ca o reteta de bucatarie: "1. Pune apa la fiert. 2. Adauga paste. 3. Asteapta 10 minute. 4. Scurge apa. 5. Pune sos." Faci pasii in ACEASTA ORDINE si nu sari peste niciunul. Daca faci pasii in alta ordine, rezultatul e gresit!
Fiecare instructiune se executa exact o data, in ordine. Nimic nu se repeta automat, nimic nu se sare. Asta e structura secventiala!
1. Ordinea blocurilor CONTEAZA - rezultate diferite pentru ordini diferite
2. Fiecare bloc se executa complet inainte de urmatorul
3. "say X for N seconds" tine programul pe loc N secunde, apoi continua
4. "say X" (fara "for N seconds") afiseaza imediat si continua, fara pauza
4. Animatii
- urmatorul costum - schimba la urmatorul costum (ciclic)
- mergi (N) pasi - deplaseaza sprite-ul
- gliseaza in (N) secunde la x: y: - miscare lina spre o pozitie
- asteapta (N) secunde - controleaza viteza animatiei
Un film la cinema ruleaza 24 de imagini (cadre) pe secunda. Fiecare imagine e usor diferita de cea precedenta. Cand le vezi atat de rapid, creierul tau le "lipeste" intr-o miscare fluida. In Scratch faci exact acelasi lucru cu costumele sprite-ului: schimbi costumul la fiecare 0.1-0.2 secunde si personajul "se misca"!
Combinatia costum + miscare + pauza, repetata de 3 ori, creeaza animatia de mers. "glide" poate inlocui "mergi pasi" pentru miscare mai lina.
wait 0.1 sec = rapid, energic (personaj care alearga)
wait 0.2 sec = natural (mers normal)
wait 0.5 sec = incet, dramatic (mers greoi)
5. Structura Alternativa
- daca-atunci: executa blocurile DOAR daca conditia e adevarata; daca e falsa, sare peste ele
- daca-atunci-altfel: executa blocurile din "atunci" daca conditia e adevarata, SAU blocurile din "altfel" daca e falsa. Mereu se executa ceva!
Un semafor cu "daca-atunci-altfel": DACA lumina e verde ATUNCI mergi ALTFEL opreste-te. Nu exista o a treia optiune - ori mergi, ori te opresti. In Scratch, orice decizie din joc (a lovit peretele? a obtinut punctaj maxim? a apasat tasta?) e implementata cu aceasta structura.
Programul intreaba ora, compara cu 20 (ora 20:00). Daca ora introdusa e mai mica de 20, e ziua. Altfel, e seara. MEREU se executa una dintre cele doua ramuri!
1. Conditia din "daca" e intotdeauna adevarata sau falsa - nu exista "poate"
2. Blocurile de sensing (detectare) furnizeaza conditii: "atingi X?", "tasta apasata?", "raspuns = Y?"
3. Operatorii de comparatie (<, >, =) si logici (si, sau, nu) construiesc conditii mai complexe
4. "daca-atunci" fara "altfel" = nimic nu se intampla cand conditia e falsa (util uneori!)
6. Variabile
- seteaza (variabila) la (valoare) - da o valoare exacta (ex: seteaza scor la 0 la inceput)
- schimba (variabila) cu (numar) - adauga la valoarea existenta (ex: +1 cand iei un punct)
O variabila e ca un whiteboard in clasa cu un nume scris pe el. "seteaza scor la 0" = stergi tot ce era si scrii 0. "schimba scor cu 1" = adaugi 1 la ce era deja scris. Daca era 5 si adaugi 1, devine 6. Whiteboard-ul tine minte valoarea curenta!
Cod pentru sprite-ul OBIECT (steluta):
Scorul porneste de la 0. De fiecare data cand jucatorul atinge steluta, scorul creste cu 1. "schimba cu" adauga la valoarea curenta!
"seteaza la" vs "schimba cu" - sunt DIFERITE!
"seteaza (scor) la (5)" → scorul devine EXACT 5, indiferent ce era inainte.
"schimba (scor) cu (5)" → se ADAUGA 5 la ce era deja. Daca era 10, devine 15.
Greseala clasica: folosesti "seteaza la 1" in loc de "schimba cu 1" → scorul se reseteaza la 1 la fiecare punct, nu creste!
7. Detectare (Sensing)
- atingi (NumeSprite)? - detecteaza coliziunea cu alt sprite
- tasta (spatiu) apasata? - detecteaza apasarea unei taste
- atingi culoarea [culoare]? - detecteaza contact cu o culoare
- intreaba [intrebare] si asteapta - citeste input de la utilizator; raspunsul e in variabila "raspuns"
Senzorii unui robot: are senzor de proximitate (ating ceva?), senzor de lumina (e lumina?), senzor tactil (m-a atins cineva?). Fara senzori, robotul nu poate reactiona la mediu. In Scratch, blocurile de sensing sunt "senzorii" programului - fara ele, jocul nu poate sti daca ai lovit un inamic sau ai apasat o tasta!
Programul asteapta pana jucatorul atinge obiectul (coliziune detectata), apoi reactioneaza. Blocul "atingi?" e cel care face detectarea!
1. Blocurile hexagonale (sensing) nu fac nimic singure - se pun INTR-UN bloc "daca" sau "asteapta pana cand"
2. "intreaba si asteapta" opreste programul pana utilizatorul scrie ceva si apasa Enter
3. Raspunsul la "intreaba" se stocheaza automat in variabila speciala numita "raspuns"
4. Detectarea tastelor: "cand se apasa tasta X" (din Events) vs "tasta X apasata?" (din Sensing, pentru verificare continua)
8. Bucle (Loops)
- la infinit - repeta la nesfarsit (pana la Stop); folosit pentru animatii continue si gameplay
- repeta (N) - repeta exact N ori, apoi continua cu blocul urmator
- repeta pana cand <conditie> - repeta pana cand o conditie devine adevarata (ex: pana scorul ajunge la 10)
Buclele sunt ca "repeat" pe un player muzical. "la infinit" = redare continua (piesa reluata mereu). "repeta 10" = piesa se reda de 10 ori si se opreste. "repeta pana cand" = piesa se reia pana dai Skip. Fara bucle, jocurile ar trebui sa scrie explicit fiecare cadru al animatiei - imposibil pentru zeci de mii de cadre!
Cod pentru Jucator:
"la infinit" verifica tastele in continuu. Fara bucla, jucatorul ar putea apasa tasta o singura data si personajul s-ar misca o singura data, apoi s-ar opri definitiv.
Animatie continua: forever { urmatorul costum, wait 0.2 sec }
Control jucator: forever { daca tasta X apasata? atunci misca }
Colectibil: forever { daca atingi Jucatorul? atunci schimba scor cu 1, muta random }
Temporizator: repeta N { asteapta 1 secunda, schimba timp cu -1 }