A existat o vreme cand nu aveam acces la Internet acasa. Ba chiar a existat o vreme cand nu aveam nici macar calculator acasa. Si da — nici macar telefon! (Nici eu, si nici prietenii mei.) Stiu ca pentru multi dintre voi lucrurile astea par greu de imaginat. Probabil va ganditi cat de tare ma plictiseam pe vremea aia.
Plictiseala?! Nu cunosc sensul acestui cuvant :-). Intotdeauna mi-a placut sa gandesc, sa imi imaginez, sa desenez, sa construiesc. Asa ca nu ratam nicio problema de logica sau de matematica. (Apareau prin diverse ziare sau reviste intr-o sectiune dedicata jocurilor logice.) Nu reuseam intotdeauna sa le rezolv, dar ramaneam cu placerea de a ma fi gandit la ele. (Da, dupa o astfel de sedinta de antrenare a creierului ai aceeasi stare de euforie pe care o simti dupa o ora de tras de fiare :-).)
Daca imi semeni la capitolul asta, cu siguranta iti va placea jocul de mai jos. Te invit sa te bucuri de el, iar daca esti suficient de curajos te provoc sa intelegi codul sursa al programului si sa il modifici astfel incat sa nu mai trebuiasca sa ghicesti o combinatie secreta formata din 5 puncte colorate, ci din 4.
//-----------------
// Joc MASTERMIND
//-----------------
// --> Functiile
function AfiseazaEcranJoc()
{
var x;
var y;
// fundal
x = 1;
while (x <= 5)
{
y = 1;
while (y <= 10)
{
Aprinde(x, y, GRI);
Aprinde(x+5, y, ALB);
y = y+1;
}
x = x+1;
}
// incercare
x = 1;
while (x <= 5)
{
Aprinde(5+x, 1, NEGRU);
x = x+1;
}
}
function FunctieMouse(ev)
{
var xm = XMouse(ev);
var ym = YMouse(ev);
// daca click pe incercare
if ((ym == nrInc) && ((xm>=6)&&(xm<=10)))
{
// treci la urmatoarea culoare disponibila
inc[xm-6] = inc[xm-6]+1;
if (inc[xm-6]>4)
{
inc[xm-6] = 0;
}
// aprinde culoarea
if (inc[xm-6]==0)
Aprinde(xm, ym, ROSU);
else if (inc[xm-6]==1)
Aprinde(xm, ym, VERDE);
else if (inc[xm-6]==2)
Aprinde(xm, ym, ALBASTRU);
else if (inc[xm-6]==3)
Aprinde(xm, ym, GALBEN);
else if (inc[xm-6]==4)
Aprinde(xm, ym, TURCOAZ);
else
Aprinde(xm, ym, GRI);
}
// daca click in stanga
else if (xm<=5)
{
// vezi daca incercarea e completa
if ((inc[0]>=0)&&(inc[1]>=0)&&(inc[2]>=0)&&
(inc[3]>=0)&&(inc[4]>=0))
{
// calculeaza cate au fost ghicite
var nrGhic = 0;
// si care au fost ghicite
var ghic = Vector(5);
ghic[0] = 0;
ghic[1] = 0;
ghic[2] = 0;
ghic[3] = 0;
ghic[4] = 0;
var i = 0;
while (i<=4)
{
if (inc[i]==sec[i])
{
nrGhic = nrGhic+1;
ghic[i] = 1;
}
i = i+1;
}
// iar pentru restul calculeaza cate culori bune
var nrCul = 0;
var ghicCul = Vector(5);
ghicCul[0] = ghic[0];
ghicCul[1] = ghic[1];
ghicCul[2] = ghic[2];
ghicCul[3] = ghic[3];
ghicCul[4] = ghic[4];
if (nrGhic < 5)
{
i = 0;
while (i<=4)
{
var j = 0;
while (j<=4)
{
if ((ghic[i]==0)&&(ghicCul[j]==0))
{
if ((inc[i]==sec[j]))
{
nrCul = nrCul+1;
ghic[i] = 1;
ghicCul[j] = 1;
}
}
j = j+1;
}
i = i+1;
}
}
// si afiseaza
i = 1;
while (i<=nrGhic)
{
Aprinde(i, nrInc, VERDE);
i = i+1;
}
i = 1;
while (i<=nrCul)
{
Aprinde(nrGhic+i, nrInc, ALBASTRU);
i = i+1;
}
// iar apoi treci la incercarea urmatoare
if ((nrGhic < 5) && (nrInc < 10))
{
nrInc = nrInc+1;
inc[0] = -1;
inc[1] = -1;
inc[2] = -1;
inc[3] = -1;
inc[4] = -1;
Aprinde(6, nrInc, NEGRU);
Aprinde(7, nrInc, NEGRU);
Aprinde(8, nrInc, NEGRU);
Aprinde(9, nrInc, NEGRU);
Aprinde(10, nrInc, NEGRU);
}
else
{
// incheie jocul
AscultaMouse();
}
}
}
}
// --> Programul
// Declarare si initializare variabile
// numarul incercarii
var nrInc = 1;
// incercarea de a ghici combinatia secreta
var inc = Vector(5);
inc[0]= -1;
inc[1]= -1;
inc[2]= -1;
inc[3]= -1;
inc[4]= -1;
// combinatia secreta
var sec = Vector(5);
sec[0] = NrAleator(4);
sec[1] = NrAleator(4);
sec[2] = NrAleator(4);
sec[3] = NrAleator(4);
sec[4] = NrAleator(4);
// Instructiuni program
AfiseazaEcranJoc();
AscultaMouse(FunctieMouse);
Cum te joci? Apasa “Reseteaza…” si vei vedea in caseta de text din stanga codul sursa al jocului. Acum poti sa apesi “Executa…” si sa incerci sa ghicesti combinatia secreta. Cu click pe punctele negre vei putea pune pe ele diverse culori (in ordinea: rosu, verde, albastru, galben, turcoaz). Dupa ce ai pus cate o culoare pe fiecare dintre cele 5 puncte negre, cu un click in partea stanga a ecranului virtual (adica in punctele colorate cu gri) vei putea vedea daca ai ghicit sau nu. Pentru fiecare punct ghicit (si culoare, si pozitie) vei primi in stanga cate un punct verde. Iar pentru restul vei primi atatea punce albastre cate culori ai ghicit (dar nu le-ai pus la pozitiile corecte). Si apoi vei putea face inca o incercare, tinand cont de indiciile primite. In total ai maxim 10 incercari la dispozitie. Spor la ghicit si la gandit! 🙂
(Nu stii sa programezi? Cartea electronica “Abecedar de programare – De la zero barat la bun de programat” e cea mai rapida si mai placuta metoda de a-ti face debutul in programare pe care o cunosc. Iar cu ajutorul intrebarilor si sugestiilor tale poate deveni si mai buna.)
Ti-a placut? Da share, aboneaza-te la newsletter si da Like la pagina de Facebook pentru a fi la curent cu noutatile. Cu ajutorul tau pot reinventa modul in care oamenii se joaca pe calculator.
🙂
Florin