
La meteo zice ca de Valentine’s Day va ploua cu inimi. Ei bine… challenge ACCEPTED! 🙂 (<– cum ar zice Barney din “How I met your mother”). Uita (macar pentru cateva clipe) de trandafiri, inimioare si bomboane si bucura-te de variabile, de if-uri si de while-uri. Macar atat merita si el (calculatorul tau), nu? Un pic de atentie si de intelegere.
Si cum altfel il poti face mai bine sa inteleaga ca iti pasa decat vorbindu-i pe limba lui?
Apasa butonul “Reseteaza…” si apoi apasa butonul “Executa…” si pregateste-te pentru o ploaie speciala.
// ----------------------------------
// Ploaie cu inimi de Valentine's Day
// ----------------------------------
// Intai imi definesc niste functii utile:
function StergeEcran()
{
var y = 1;
while (y<=10)
{
var x = 1;
while (x<=10)
{
Stinge(x, y);
x= x+1;
}
y = y+1;
}
}
function AprindeInEcran(x, y, c)
{
if ((x>=1)&& (x<=10) && (y>=1) && (y<=10))
Aprinde(x, y, c);
}
function DeseneazaInima(xi, yi)
{
// (xi, yi) e coltul din stanga-sus
// al dreptunghiului de arie minima
// in care este inclusa inima
// desenarea o voi face relativ la
// aceste coordonate
AprindeInEcran(xi+3, yi-4, ROSU);
AprindeInEcran(xi+2, yi-3, ROSU);
AprindeInEcran(xi+3, yi-3, ROSU);
AprindeInEcran(xi+4, yi-3, ROSU);
AprindeInEcran(xi+1, yi-2, ROSU);
AprindeInEcran(xi+2, yi-2, ROSU);
AprindeInEcran(xi+3, yi-2, ROSU);
AprindeInEcran(xi+4, yi-2, ROSU);
AprindeInEcran(xi+5, yi-2, ROSU);
AprindeInEcran(xi, yi-1, ROSU);
AprindeInEcran(xi+1, yi-1, ROSU);
AprindeInEcran(xi+2, yi-1, ROSU);
AprindeInEcran(xi+3, yi-1, ROSU);
AprindeInEcran(xi+4, yi-1, ROSU);
AprindeInEcran(xi+5, yi-1, ROSU);
AprindeInEcran(xi+6, yi-1, ROSU);
AprindeInEcran(xi+1, yi, ROSU);
AprindeInEcran(xi+2, yi, ROSU);
AprindeInEcran(xi+4, yi, ROSU);
AprindeInEcran(xi+5, yi, ROSU);
}
// Apoi ma apuc de programul propriu-zis:
// initializez pozitia primei inimi cazatoare
var xi = 1+NrAleator(3); // un numar aleator intre 1 si 4
var yi = 15;
// definesc functia care se va apela repetitiv automat
function FunctieDesenare()
{
if (TimpScurs(1000/8) != 0)
{
// daca s-a scurs numarul respectiv de milisecunde
// coboara inima o pozitie pe verticala
yi = yi-1;
// iar daca a iesit prin josul ecranului
if (yi==0)
{
// construieste o noua picatura de inima sus
xi = 1+NrAleator(3);
yi = 15;
}
// sterge vechea inima si redeseneaz-o pe cea noua
StergeEcran();
DeseneazaInima(xi, yi);
}
Animeaza(FunctieDesenare);
}
StergeEcran();
StartAnimatie(FunctieDesenare);
Daca ti-a placut, inroleaza-te in armata noastra de creiere cu muschi si vei primi testul care iti va spune daca ai sau nu minte de programator:

Cu drag,
Florin