name the game
Acum cateva zile nopti m-am trezit ca am ramas fara internet. Teoretic, exista numere de telefon non-stop pentru sesizari. Practic, experienta m-a invatat ca, daca sun dupa miezul noptii, oricum nu se rezolva inainte de ora 8-9. Asa ca m-am apucat sa lucrez local la o chestie.
Prima incercare a fost un esec total. A doua n-a mers prea departe. Dar cred ca pana in stadiul in care am dus-o acum am gandit-o mai bine decat prima data. Este vorba de un joc JavaScript inspirat de fruitix. Diferenta e data de faptul ca nu ma duce creierul sa fac ceva exact la fel pentru ca inca nu mi-e clar cum calculez calea minima (daca exista!) intre doua celule de pe grila. Si de faptul ca m-a scarpinat sa-l fac cu o grila de dimensiuni variabile si cu o multime extinsa de simboluri, din care sa aleg o submultime pentru fiecare joc.
Nici nu stiu cum sa-l numesc. De fapt, nici nu stiu daca ma va duce creierul sa-l fac sa functioneze. Sau daca nu-l voi lasa balta asa cum las balta totul.
Jocul "curge" cam in felul urmator: la fiecare pas (nu stiu cum sa-i spun altfel) apar pe grila floor(grid_size/3)
simboluri aleatoare (se poate sa se nimereasca sa fie mai multe identice) dintr-o submultime (determinata aleator sau de catre utilizator) de round(2*grid_size/3)
+ 1 a multimii de simboluri. Utilizatorul trebuie sa mute un simbol inainte de pasul urmator. In momentul in care completeaza o secventa de ceiling(grid_size/2)
simboluri (pe orizontala, verticala, sau diagonala), celulele care au format secventa sunt eliberate si utilizatorul mai muta inca un simbol inainte de urmatorul pas.
Mutarea se efectueaza prin click pe celula cu simbolul care se vrea mutat (asta selecteaza celula) si apoi click pe celula in care trebuie mutat. Un simbol nu poate fi mutat intr-o celula deja ocupata. Si o celula goala nu poate fi selectata.
Ceea ce inseamna ca la fiecare click pe grila am patru situatii:
- celula este goala si nu am selectata nici o celula ocupata din care sa mut simbolul; in cazul asta... nu se intampla nimic!
return
, utilizatorul trebuie sa dea click pe o celula continand un simbol; - celula este ocupata si am deja selectata o celula ocupata din care sa mut simbolul; in cazul acesta, celula pe care am dat click devine noua celula selectata;
- celula este ocupata si nu am nici o celula ocupata selectata; celula pe care am dat click devine celula mea selectata;
- celula este libera si am o celula ocupata selectata; pur si simplu fac mutarea.
Dupa fiecare mutare si fiecare simbol nou aparut pe grila la fiecare pas, verific sa vad daca s-a completat o secventa suficient de lunga. Verific in ordine pe orizontala, pe verticala si pe diagonala pornind de la simbolul mutat/ nou aparut pe grila. Functia este aceeasi, difera doar pasul (1
pentru orizontala, grid_size
pentru verticala si grid_size + 1
pentru diagonala).
Verific intai inapoi (tot scazand valoarea pasului) pana cand se intampla una din urmatoarele: ajung la marginea grilei sau ajung la o celula goala sau ajung la o celula ocupata de alt simbol. Verific apoi inainte. Daca secventa obtinuta este cel putin egala cu secventa minima, atunci eliberez celulele si cresc punctajul.
Desigur, la fiecare pas, inainte sa pun un nou simbol la intamplare pe grila, trebuie sa verific daca mai exista spatii libere. Pentru ca am acolo un while
unde testez daca celula aleasa aleator este ocupata sau nu. Iar daca toate celulele sunt ocupate... si nu exista conditia ca se put pune simboluri pe grila doar atata timp cat mai exista locuri libere... atunci ajung la o bucla infinita.
Bineinteles, jocul se termina atunci cand nu mai sunt locuri libere pe grila. Si cam asta ar fi...
7 pareri
- cine
- Cristi
- cand
- miercuri, 12 septembrie 2012 la 00:12:00 EEST
Pentru testul de celule libere, poti sa pui toate celulele libere intr-o lista si sa alegi aleator intre 0 si lungimea listei.
Nu vreau sa te descurajez, dar problema cu acest joc este ca jucatorul pierde intotdeauna si satisfactia sa tinde catre zero.
- cine
- brontozaurel
- cand
- miercuri, 12 septembrie 2012 la 00:26:00 EEST
Pana in stadiul in care l-am dus acum - live demo - mutarile pot fi efectuate indiferent daca exista o cale libera sau nu.
Nu stiu ce sa spun la partea cu satisfactia. Mie fruitix imi place tocmai pentru ca mi se pare dificil. Si e tocmai chestia asta, ca stiu ca n-o sa castig, dar incerc de fiecare data sa obtin un punctaj cat mai mare. Tom & Jerry Refriger-raiders mi se pare mult mai simplu si din cauza asta nu chiar asa interesant, in ciuda faptului ca imi plac personajele.
- cine
- brontozaurel
- cand
- miercuri, 12 septembrie 2012 la 00:29:00 EEST
- cine
- Cristi
- cand
- miercuri, 12 septembrie 2012 la 21:15:00 EEST
- cine
- brontozaurel
- cand
- joi, 13 septembrie 2012 la 23:41:00 EEST
- cine
- MikeSw
- cand
- duminică, 16 septembrie 2012 la 09:08:00 EEST
- cine
- brontozaurel
- cand
- duminică, 16 septembrie 2012 la 09:11:00 EEST
Da-ti si tu cu parerea!
Mai jos se pot scrie tampenii. Nu mai mari ca alea de mai sus...
Insa inainte de orice altceva, vezi cum se comenteaza: indrumar tehnic si reguli!
HTML acceptat: <b>, <i>, <a href=""> (fara alte atribute)