Adresa blogului este brontozaurel.blogspot.com/ncr !!!
Postare mai nouă ► ◄ Postare mai veche

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 la name the game

  • cine: Cristi delete comment icon
    cand:
    De ce trebuie sa calculezi calea minima la fruitix? Trebuie doar sa numeri cate sunt in grupul din care face parte celula selectata.
    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 delete comment icon
    cand:
    Nu trebuie calculata neaparat calea minima (dar asa ar fi ideal). Trebuie calculat daca exista o cale minima (formata din celule libere) pe care as putea muta simbolul din celula in care este pana in cea in care vreau sa-l mut.

    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 delete comment icon
    cand:
    Mai mult, nu stiu ce altceva sa fac. M-am apucat de asta pentru ca toata lumea spune "you get better at [insert whatever] by writing code". Dar alte idei ce as putea sa fac in JavaScript n-am...
  • cine: Cristi delete comment icon
    cand:
    Poate ai dreptate. Am mai jucat acum demo-ul si mi s-a parut mult mai usor decat prima versiune (probabil din cauza grid-ului mai mare), poate chiar prea usor. Cred ca daca adaugi si restrictia de cale libera ar fi ok.
  • cine: brontozaurel delete comment icon
    cand:
    Da, de asta intentionez sa ma apuc maine. Azi mi-am spart creierii cu o dracie de CSS pe care am botezat-o Gridify. In mare, e o galerie de imagini care pot fi mutate in asa fel incat sa formeze un grid unde afiseze fiecare cate o bucata din imaginea mai mare.
  • cine: MikeSw delete comment icon
    cand:
    Apropos, nu stiu ce editor folosesti dar pt ceva light (e facut pt beginners) poti folosi webmatrix 2
  • cine: brontozaurel delete comment icon
    cand:
    Notepad++ sau direct in browser.
Da-ti si tu cu parerea

Da, ma intereseaza si parerea ta!

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)
Abonare comentarii