start     Articole     Despre mine    

Jocul Snake v2.0

Ti-am vorbit in articolul trecut despre cum poti sa programezi celebrul joc Snake folosind doar informatiile prezentate in tutorialele de programare pentru incepatori pe care le-am publicat pana acum pe site. (Mai precis, am programat jocul Snake folosind doar informatiile din posterul de aici.) Daca ai parcus articolul, iti amintesti desigur ca jocului nostru ii lipsea ceva. Azi ii vom da viata (asa cum am aratat in lectia despre animatii).

Asa cum vei vedea, programul este aproape identic cu cel din articolul trecut. Exista doar trei diferente:

1) Am introdus o noua functie, FunctieDesenare, iar in program am apelat StartAnimatie(FunctieDesenare).

2) Instructiunile ce se executau in cazul apasarii tastei P le-am mutat in functia de desenare (care se va apela in mod automat de 4 ori pe secunda).

3) Am introdus niste instructiuni suplimentare in functia FunctieDesenare pentru a verifica daca jocul s-a incheiat, caz in care animatia trebuie intrerupta.

Codul sursa al programului il poti descarca de aici. Dupa ce ai facut-o, te rog sa il introduci in simulatorul online de la adresa http://igotopia.ro/programez-online (pe care te rog sa il deschizi intr-o fereastra noua).

Gata? Zi “abracadabra” (sau “supercalifragilisticexpialidocius”, daca esti fan “Mary Poppins”) si apasa butonul “Executa…”. Vei vedea cum pe ecranul virtual apare bordura gri, marul verde si sarpele ce se deplaseaza catre dreapta. Controleaza-l folosind tastele W-A-S-D pe post de sageti (sus-stanga-jos-dreapta).

ATENTIE: Jocul acesta poate crea dependenta! 🙂

 

Nu mai ai rabdare? Apasa butonul “Reseteaza…”, dupa care apasa “Executa…”. Si nu uita sa ai mana stanga pe tastele “sageti” W-A-S-D!

(Browserul tau nu suporta Canvas!…)


Super, nu-i asa? Te provoc sa modifici programul astfel incat capul sarpelui sa nu mai fie gri, ci albastru. Nu e greu, nu?…

 

Ti-a placut? Da share. Si lasa-mi intr-un comentariu ce jocuri ti-ai mai dori sa vezi “disecate” pas cu pas aici, in Igotopia — taramul unde gandurile tale capata forma.

Florin





10 comments
EduardMarin
EduardMarin

Si cum poti face ca acest joc sa aiba o grafica mult mai buna?


Florin Birleanu
Florin Birleanu moderator

@EduardMarin Nu mi-am pus problema asta, caci in tutorialele de pe site mi-am propus sa discut in principal modalitati de a gandi programul din spate -- neglijand aproape total detaliile din fata. :-) Am obligat "cursantii" sa se limiteze la un ecran de 10x10 puncte x 8 culori pentru a le provoca creativitatea (caci culmea e ca omul e mai creativ atunci cand are mai putine lucruri la dispozitie).

EduardMarin
EduardMarin

@Florin Birleanu  Ca tot e vorba de limite... :)))Am ajuns la lectia 4 din "Cum sa inveti programare in 8 zile"sau ceva de genu.. :)) Si nu imi iese exercitiul tau.Ceva nu imi iese.Daca te-ai uita la comentariul meu de la acea lectie si mi-ai da un raspuns si eventual niste explicatii mai detaliate pentru cineva care e mai incet as aprecia mul. :) Stiu ca poate cer prea mult dar chiar vreau sa invat si singura mea sursa esti tu. :))

RaduAngelescu
RaduAngelescu

tot mor... nu stiu ce sa fac sa devin mai bun la acest joc!

Florin Birleanu
Florin Birleanu moderator

@RaduAngelescu chiar! nu am tratat cazul in care ai ajunge sa ocupi cu sarpele intregul ecran... ia sa vad... dupa ce ai manca ultimul mar (aparut in ultimul punct alb de pe ecran) variabilele marX si marY ar ramane nemodificate de catre functia AfiseazaMarNou(), s-ar aprinde mar in aceeasi pozitie (deci peste noul cap al sarpelui, care acum e lung cat intregul ecran)... si la urmatoarea miscare inevitabil ai muri... mda, trist -- stiu... dar deh -- lacomia nu face bine... :-)

Florin Birleanu
Florin Birleanu moderator

sau exista oare posibilitatea (macar in teorie) ca atunci cand sarpele ajunge sa aiba lungimea de 63 de puncte coada lui sa fie adiacenta ultimului punct liber (caz in care dupa ce vei manca marul daca iti vei urmari in permanenta coada vei trai la infinit)?... 


in caz ca n-am fost prea clar, voi reformula intrebarea :-) : oare exista vreun sistem dinamic discret (definit pe spatiul tuturor starilor posibile ale jocului) care sa prezinte un atractor ciclic (pentru cazul in care lungimea sarpelui e maxima)? si daca da: atractorul asta e unic? si e afectat in vreun fel de distributia de probabilitate a pozitiilor marului?

SalageanAlin
SalageanAlin

@Florin Birleanu Ai putea faca ca atunci cand vei lua ultimul mar sarpele sa devina din ce in ce mai mic? Pana atunci cand vei ajunge ca sarpele sa aiba doar 2 patrate(capul si corpul).


Trackbacks

  1. […] implementezi in simulatorul nostru online. Ai vazut deja implementate acolo jocuri precum Labirint, Snake si Flappy Bird, asa ca un Tetris s-ar potrivi de minune, nu-i […]