Documente Academic
Documente Profesional
Documente Cultură
}
Evident, asa cum am zis mai sus, simpla definitie a acestei functii nu
este suficienta pentru ca programul sa raspunda la apasarea tastelor.
Este necesar ca dupa ce definesc aceasta functie sa-i spun
calculatorului ca pe ea doresc sa o apeleze atunci cand detecteaza
vreo tasta apasata. Cum fac asta? Am spus mai sus: prin
apelul AscultaTaste(FunctieTaste).
Bun. Aproape am terminat.
if (tasta == 'a')
{
// instructiuni ce trebuie executate daca s-a
// apasat tasta A
}
Cam asta e. Acum e timpul sa punem cap la cap tot ce am zis pana
aici si sa facem un mic program demonstrativ.
Hai sa facem un program in care sa plimbam pe ecranul virtual un
punct cu ajutorul tastelor A (stanga), S (jos), D (dreapta) si W (sus).
Si ca lucrurile sa fie mai interesante, as propune ca punctul sa fie rosu
daca ne gasim in centrul ecranului (considerand centru in acest caz
patratul cu coltul stanga-jos la coordonatele (3, 3) si coltul dreapta-sus
la coordonatele (8, 8)), si sa fie negru in caz contrar (deci pe primele
doua linii din marginile ecranului virtual).
Fara alte comentarii preliminare, iata programul:
// Program deplasare punct din taste
// 1) Initializari:
var x = 1
var y = 1
Aprinde(x, y)
// 2) Functia de tratare a apasarii tastelor:
function FunctieTaste(ev)
{
var tasta = TastaApasata(ev)
Stinge(x, y)
if ( (tasta == 'a') && (x > 1) )
{
x = x-1
}
if ( (tasta == 'd') && (x < 10) )
{
x = x+1
}
if ( (tasta == 's') && (y > 1) )
{
y = y-1
}
if ( (tasta == 'w') && (y < 10) )
{
y = y+1
}
if ( (x>=3)&&(y>=3)&&(x<=8)&&(y<=8) )
{
Aprinde(x, y, ROSU)
}
else
{
Aprinde(x, y)
}
}
AscultaTaste(FunctieTaste)
Il poti testa mai jos.
N-a fost chiar greu, nu? Dupa cum ai vazut, programul contine in
esenta doua parti: 1) o parte de initializari (in care nu fac altceva decat
sa definesc doua variabile (x si y) in care voi memora coordonatele
curente ale punctului pe ecran, coordonate pe care le initializez cu (1,
1) (deci punctul stanga-jos al ecranului), si sa aprind (cu negru)
punctul de la coordonatele (x, y)) si 2) o parte in care spun
calculatorului ce sa faca atunci cand se apasa vreo tasta.
Si daca intram in detaliile functiei FunctieTaste vei vedea ca si acolo
lucrurile sunt destul de clare. Mai intai aflu ce tasta a fost apasata,
apoi sting punctul de la coordonatele (x, y), dupa care verific daca a
fost apasata vreuna dintre tastele A,S, D sau W si modific in mod
corespunzator coordonata x sau y (verificand, de asemenea, ca
punctul sa nu iasa in afara ecranului). Iar la final aprind punctul de la
coordonatele (x, y) (care probabil au fost modificate) fie cu rosu, fie cu
negru (in functie de pozitia in care se gaseste punctul pe ecran).
Ca exercitiu te-as ruga sa modifici programul astfel incat elementul
care se plimba pe ecran sa nu mai fie doar un punct, ci un mic patratel
format din 4 puncte. Ce zici? Accepti provocarea?
Stiu ca nu e usor, dar daca chiar iti doresti sa programezi un joc
trebuie sa-ti pui creierul in miscare. (Doare doar putin. Apoi devine
chiar placut
.)