1. Continut
De ce sunt importante buclele?
- ⚡ Eficienta: Scrii COD SCURT in loc de cod lung si repetitiv
- 🎨 Creativitate: Desenezi figuri complexe si creezi animatii fluide
- 🧹 Organizare: Codul tau e mai usor de citit si modificat
- ♾️ Continuitate: Poti crea actiuni care ruleaza la nesfarsit (jocuri, animatii)
2. Continut
Cand folosesti bucla "forever"?
- 🎮 Jocuri: Verificarea continua a coliziunilor si controalelor
- 🎬 Animatii: Miscari repetitive (plimbare, plutire, rotire)
- 🔊 Reactii: Ascultare continua pentru input de la utilizator
- 📊 Actualizari: Update constant al scorului, vietilor, cronometrului
📋 Exemplu: Sprite care se misca si ricoseaza
Explicatie: Sprite-ul se misca cu 10 pasi inainte PENTRU TOTDEAUNA. Cand atinge marginea, ricoseaza. Aceasta bucla ruleaza LA INFINIT pana cand apesi STOP. Perfect pentru un joc de tip "bouncing ball"!
3. Continut
Cand folosesti bucla "repeat N"?
- 📐 Figuri geometrice: Patrat (4), triunghi (3), hexagon (6)
- 🔊 Sunete repetate: Reda sunet de 5 ori
- 🎨 Clonare: Creeaza 10 clone ale unui sprite
- ✨ Efecte vizuale: Flash de 3 ori (show/hide alternativ)
📋 Exemplu: Desenare hexagon (6 laturi)
Explicatie: Hexagonul are 6 laturi egale si 6 colturi de 60 de grade (360/6 = 60). Bucla "repeat 6" executa "move + turn" de 6 ori, desenand cele 6 laturi. Dupa ce termina, programul se opreste.
4. Continut
Diferenta fata de "forever" si "repeat N":
| Bucla | Se opreste? | Cand? |
|---|---|---|
| forever | NU (infinit) | Doar la STOP manual |
| repeat N | DA | Dupa N repetitii |
| repeat until | DA | Cand conditia devine DA |
📋 Exemplu: Sprite care merge pana atinge marginea
Explicatie: Sprite-ul merge cu 5 pasi inainte PANA CAND atinge marginea. Nu stim cate repetitii vor fi (depinde de pozitia initiala), dar stim ca se va opri automat cand atinge marginea. Dupa oprire, spune un mesaj.
5. Continut
Cum functioneaza buclele imbricate?
1. Bucla exterioara incepe prima iteratie
2. Bucla interioara ruleaza COMPLET (toate iteratiile ei)
3. Bucla exterioara trece la a doua iteratie
4. Bucla interioara ruleaza DIN NOU complet
5. Process se repeta pana bucla exterioara termina
📋 Exemplu: Grila de patrate 3×3
Explicatie: Bucla exterioara (repeat 3) controleaza randurile. Pentru FIECARE rand, bucla interioara (repeat 4) deseneaza un patrat COMPLET. Rezultat: 3 randuri × 3 patrate/rand = grila 3×3 cu 9 patrate!
6. Continut
Cazuri frecvente de combinare:
Verifica MEREU o conditie. Folosit in jocuri pentru detectarea coliziunilor, tastatură, mouse.
Exemplu: forever { if <touching enemy> then { game over } }
Repeta de N ori, dar executa ceva DOAR daca conditia e adevarata in acea iteratie.
Exemplu: repeat 10 { if <numar par> then { stamp } } → Stampileaza doar la iteratii pare
Cauta ceva anume, verificand conditii suplimentare pe parcurs.
Exemplu: repeat until <touching edge> { if <touching coin> then { collect } move }
📋 Exemplu: Joc simplu de evitare
Explicatie: Bucla "forever" misca sprite-ul continuu. In FIECARE iteratie, verifica 3 conditii: (1) Atinge marginea? → se intoarce. (2) Atinge moneda? → mareste scorul. (3) Atinge inamicul? → game over. Logica complexa creata prin combinatie!
7. Continut
Tipuri de bucle infinite:
| Tip | Exemplu | Status |
|---|---|---|
| INTENTIONATA (OK) | forever { move, check collision } | ✅ Buna |
| ACCIDENTALA (BUG) | repeat until <1=2> { } | ❌ Rea |
| CONTROLATA | repeat 10 { say "Hi" } | ✅ Buna |