Documente Academic
Documente Profesional
Documente Cultură
Atestat Un Cuvant, Patru Imagini
Atestat Un Cuvant, Patru Imagini
LUCRARE DE ATESTAT
N INFORMATIC
2013
Cuprins:
Introducere.......................................................... pag. 3
Descrierea aplicaiei web................................... pag. 4
1. JavaScript.................................................... pag. 4
2. Exemple grafice.......................................... pag. 8
3. PHP............................................................ pag. 9
4. Probleme cunoscute................................... pag. 9
Concluzii............................................................. pag. 9
Bibliografie.......................................................... pag. 10
Introducere
A. Motivaii
n zilele noastre tot mai puini oameni au timp s citeasc i implicit s-i dezvolte vocabularul i
capacitatea de a gndi ntr-un mod complex. ns dezvoltatorul de aplicaii Android LOTUM GmbH a
gsit o modalitate atractiv de a stimula gndirea i dezvoltarea vocabularului. Aa a aprut aplicaia
2
destinat sistemelor Android 4 Pics 1 Word (Patru cuvinte, o singur imagine). Aplicaia se bucur de un
real succes avnd ntre 10.000.000 i 50.000.000 de instalri. Fiind atras de ideea jocului, am cutat o
variant de browser a jocului i am fost dezamgit cnd am aflat c nc nu exist una. Aa s-a nscut
aplicaia web Un cuvnt patru imagini, o variant n romn a aplicaiei amintite.
va apare n csua destinat soluiei, amplasat sub cele patru imagini. n cazul n care utilizatorul dorete
ndeprtarea unei litere, el va apsa butonul corespunztor literei, iar aceasta va fi nlocuit cu caracterul
underscore. n cazul existenei mai multor litere identice n cuvnt, prima liter de la dreapta la stnga va fi
ndeprtat, cnd butonul corepunztor ei este apsat. Pentru mbuntirea calitii interaciunii dintre
utilizator i aplicaie a fost implementat butonul Reset. Acesta va terge literele introduse pn la acel
moment, nemaifiind necesar ndeprtarea lor individual. Dup completarea tuturor spaiilor libere,
aplicaia va afia un mesaj corespunztor corectitudinii soluiei sugerat de utilizator: Mai ncearc / Eti
nemaipomenit! Dup rularea unui efect vizual, un nou cuvnt este ncrcat i alte patru imagini sunt afiate.
Utilizatorul poate vedea n orice moment la ce nivel a ajuns, prin mesajul afiat n antetul paginii. (Ex:
Cuvntul 15 )
Funcia game() primete prin intermediul parametrului advance, numrul cu care scriptul php va
incrementa variabila 'nivel' stocat prin intermediul cookie n browserul utilizatorului. Iniial, funcia game()
a fost apelat astfel: game(0). Astfel se previne utilizarea opiunii Refresh pentru a trece la urmtorul nivel.
Atunci cnd scriptul JavaScript confirm corectitudinea soluiei, el va apela game(1);
Funcia game este cea care folosete Ajax.
S nelegem un pic ce nseamn Ajax. Ajax este un acronim (denumirea prescurtat) de la
Asynchronous JavaScript And XML. n mod standard, nainte de Ajax, pentru fiecare interaciune a unei
4
aplicaii web cu serverul, pagina web trebuia complet rencrcat. Cu tehnologia Ajax pot fi ncrcate i
modificate doar anumite pri din pagin, prelucrate i generarte de server, fr a rencrca toat pagin web.
Acest lucru are ca rezultat ncrcarea mai rapid a coninutului n pagin i reducerea traficului. De
asemenea, pot fi trimise date la server, de la pagin web deschis, n timp ce utilizatorul urmrete coninutul
paginii, fr c aceast s fie afectat. Pentru Ajax nu conteaz tipul limbajului de programare folosit pe
partea de server ci conteaz ca rspunsul primit de la server s fie cu un Content-Type de tip text (plain,
XML, HTML). Ajax este suportat de majoritatea navigatoarelor web i permite realizarea comunicrii cu
serverul i afiarea datelor primite fr a fi necesar rencrcarea paginii.
Rspunsul primit de la pagina game.php va fi transmis prin parametrul 'raspuns' funciei actiune(),
cea care va interpreta rspunsul.
Funcia actiune():
function actiune(raspuns) {
if (raspuns == '-1') {
new Messi('Ai terminat
jocul.<br/>Incearca din nou peste trei
zile! <br/> Acum du-te si invata!');
}
var vars = new Array();
vars = raspuns.split('|', 3);
var images = new Array();
images = vars[1].split(',', 4);
level(vars[2]);
lungime = vars[0].length;
fill(vars[0], images[0], images[1],
images[2], images[3], lungime);
}
Capabil s interpreteze rspunsul primit, functia actiune() fie va afia un mesaj care anun
utilizatorul c a terminat jocul, fie va procesa rspunsul primit i va da valori variabilelor ce conin soluia,
identificatorii imaginilor si lungimea soluiei. De asemenea, ea va afia nivelul curent, apelnd funcia
level(). Apoi, va apela funcia fill() oferindu-i parametrii necesari ca aceasta s afieze toate elementele
grafice personalizate rspunsului primit de la server.
Funcia fill():
function fill(word, img1, img2, img3, img4, lungime) {
solutie = word;
var add = addleters(19 - lungime);
word = add + word;
litere = word.split('');
litere.sort(function () { return 0.738 - Math.random() })
/*[...] putting imgs into places using document.getElementById
[...]*/
var i; var space_lenght = 16;
Funcia fill() se ocup de partea grafic dar i de cteva lucruri eseniale, cum ar fi adugarea la
literele soulie a nc 20-n litere i apoi sortarea lor aleatoare.
n acest moment se ncheie ciclul de apelri succesive ale funciilor cu rol iniial. De acum funiile
vor fi apelate numai la aciunea utilizatorului.
Funcia touch() apelat cnd o liter este apsat este:
function
touch(n) {
if (buton[n]
== 1)
get_out_leter(n)
;
else
if (counter
< lungime)
put_leter(n);
}
Funcia put_leter() verific daca s-a ajuns la ultima liter si apeleaz funcia verificare()
Funcia verificare va compara cuvntul propus de utilizator cu soluia i n cazul identitii va
genera un efect vizual din librria JavaScript Jquery (shake). Dup 1250 ms, timp necesar vizualizrii
efectului, va apela funcia next. Dac utilizatorul nu a gsit cuvntul corect, este afiat un mesaj
corespunztor.
Funcia verificare():
function verificare() {
var str = " " + document.getElementById('cuvant').value;
var final = str.replace(/\s/g, '');
var result = (final == solutie);
if (result) {
$(".shake").effect("shake", {
times: 3
}, 100);
document.getElementById('mesaj').innerHTML = "<b>Esti
nemaipomenit!/b>";
setTimeout(next, 1250);
} else {document.getElementById('mesaj').innerHTML = "<b>Mai incearca!
</b>";
}
}
Funcia next() iniializeaz variabilele pentru un nou joc i apeleaz funcia game(1); Prin
parametrul level cu valoarea 1 se indic trecerea la un nou nivel.
2. Exemple grafice:
Exemplu
de
cuvnt
greit i
de
cuvnt
corect:
4. Probleme cunoscute
Datorit faptului c JavaScript este un limbaj ce ruleaz n browser, utilizatorul avansat i poate
accesa variabilele. Astfel, prin metoda injeciei, un utilizator va putea afla n orice moment soluia jocului
curent, prin scrierea n bara de adres a sintaxei:
javascript: alert(solutie);
Rezolvarea acestei vulnerabiliti nu este posibil n JavaScript, care rmne doar un limbaj de
programare recomandat pentru manipularea datelor neimportante.
Concluzii
JavaScript, n ciuda unor vulnerabiliti, continu rmn un limbaj de programare important n
web-design. Orice persoan care navigheaz pe Internet recunoate un site web de calitate atunci cnd l
ntlnete, pentru c acesta posed caracteristici care capteaz atenia i l fac s fie lesne de remarcat printre
celelalte situri web. Creatorii acestor situri i las pe navigatorii de Internet mui de admiraie, nu pentru c ar
folosi animaii sofisticate sau imagini provocatoare, ci utiliznd artificii subtile, cum ar fi meniurile sau
obiectele mobile, adugnd caracteristici utile n situl web, care l ajut pe utilizator s introduc informaiile
adecvate i s ndeplineasc sarcinile de lucru n mod corespunztor Jim Keogh n introducerea JavaScript
fr mistere.
Bibliografie
http://www.marplo.net/ajax/introducere.html
10