Sari la conținut
EduCamp
Alice 3MediuAlice 3 de la zero · partea 7

Mișcarea aleatoare

Numerele alese la întâmplare fac animația să nu se repete identic: un pinguin se plimbă singur prin scenă, iar distanțele, rotirile și pauzele se schimbă la fiecare rulare.

50 minuteNivel: MediuEduCamp

Nume și prenume: ................................................    Clasa: .................    Data: .......................

Ai nevoie de:

  • Un proiect cu un pinguin (Penguin) și câțiva copaci

1. Numerele aleatoare

Un număr aleator este ales la întâmplare de program, la fiecare execuție altul. În Alice, numerele aleatoare se aleg cu clic pe o valoare, apoi Random. Funcțiile de acolo sunt:

  • nextRandomDecimalNumberInRange: un număr cu zecimale între două valori;
  • nextRandomWholeNumberFromAUpToAndIncludingB: un număr întreg între două valori, inclusiv ele;
  • nextRandomBoolean: la întâmplare, adevărat sau fals.

Pinguinul înaintează de fiecare dată altă distanță, între jumătate de metru și doi metri.

this.penguin move FORWARD, nextRandomDecimalNumberInRange 0.5, 2.0

2. Plimbarea la întâmplare

Pinguinul se rotește cu un unghi ales la întâmplare, înaintează o distanță aleatoare și face o pauză, la nesfârșit. Direcția rotirii, stânga sau dreapta, se alege tot la întâmplare:

while true is true
if nextRandomBoolean is true then
this.penguin turn LEFT, nextRandomDecimalNumberInRange 0.05, 0.25
else
this.penguin turn RIGHT, nextRandomDecimalNumberInRange 0.05, 0.25
this.penguin move FORWARD, nextRandomDecimalNumberInRange 0.3, 1.0
this.penguin delay nextRandomDecimalNumberInRange 0.2, 1.0

3. Păstrarea în scenă

Un obiect care se mișcă la întâmplare poate ieși din imagine. O soluție este întoarcerea lui spre un obiect din mijlocul scenei, când se depărtează prea mult:

Blocul se pune în while, înainte de move.

if (this.penguin getDistanceTo this.pineTree) > 5.0 is true then
this.penguin turnToFace this.pineTree

4. Valori aleatoare și în alte mișcări

Numerele aleatoare se folosesc în orice valoare:

  • înălțimea unei sărituri;
  • durata unei mișcări, cu add detail → duration;
  • numărul de repetări al unui count;
  • replica spusă, aleasă cu un if după nextRandomWholeNumberFromAUpToAndIncludingB 1, 3.

Exerciții

🔑 Rezolvare

Nu. Unghiurile, distanțele și pauzele se aleg la fiecare execuție, deci drumul este altul la fiecare rulare.

🔑 Rezolvare
count up to nextRandomWholeNumberFromAUpToAndIncludingB 2, 5
DecimalNumber inaltime ← nextRandomDecimalNumberInRange 0.2, 0.6
this.penguin move UP, inaltime, duration: 0.3
this.penguin move DOWN, inaltime, duration: 0.3

Înălțimea se păstrează într-o variabilă: urcarea și coborârea trebuie să fie egale. Cu două numere aleatoare separate, pinguinul ar ajunge mai sus sau mai jos decât a pornit.

🔑 Rezolvare
WholeNumber n ← nextRandomWholeNumberFromAUpToAndIncludingB 1, 3
if n == 1 is true then
this.penguin say "Ce zi frumoasă!"
else
if n == 2 is true then
this.penguin say "Mi-e frig."
else
this.penguin say "Unde e marea?"

Ce ai învățat

La finalul fișei, poți:

  • să alegi numere aleatoare, cu zecimale sau întregi, și valori logice aleatoare;
  • să construiești o plimbare la întâmplare cu while;
  • să păstrezi în scenă un obiect care se mișcă aleator;
  • să folosești numere aleatoare în durate, repetări și alegerea replicilor.
Autor: EduCampActualizat: 4 octombrie 2026