Contact


Mocanu Florian 333CA inseder_15@yahoo.com


3d-snake-arena-1.jpg 3d-snake-arena-2.jpg


Introducere

Proiectul de fata urmareste implementarea initiala a jocului Snake pe telefonul Nokia 3310.

Reguli de joc

kigyo.jpg Am incercat sa respect regulile jocului de baza, astfel scopul este de a hrani un sarpe si a acumula puncte. Jucatorul trebuie sa ghideze sarpele spre elementele ce constituie hrana (vom considera ca acestea sunt mere). Acestea apar random pe ecran si reprezinta modalitatea de “ingrasare”, mai exact de marire a lungimii sarpelui.
Presupunem ca sarpele este format din segmente(patrate). Cu fiecare mar inghitit se adauga inca un patrat la lungimea sarpelui. Astfel dificultatea jocului creste deoarece sarpele devine greu de manevrat si jucatorul trebuie sa aiba grija sa nu intersecteze capul acestuia cu restul corpului.
Daca se intampla acest lucru, jocul se termina si se afiseaza numarul de puncte castigate. Altfel bucla merge la infinit, putand fi ocupat tot ecranul de catre corpul sarpelui.
Nu exista pereti pe margine deci sarpele poate parcurge ecranul in totalitate iar cand ajunge intr-unul din capete (stanga-dreapta, sus-jos) trece in partea opusa.
Singura modalitate de castig este ocuparea totala a ecranului, lucru foarte greu de obtinut.
De mentionat ca elementele ce apar random au totusi o restrictie de pozitionare: din zona ecranului se scade numarul de patrate ocupate de sarpe in momentul genararii lor.

Schema bloc



Hardware design


Componente

  • Lista pentru placa etapa 1 list
  • Butoane x 4
  • LCD Nokia 3310 ()
  • Divizor de tensiune (o rezistenta de 1.8 si 3.3) x 5
  • Diode x 2


schema si PCB-ul placii de baza

Schema initiala in Preoteus la care ar fi trebuit adaugate regulatoare liniare de tensiune sau divizoare de tensiune (lucru pe care l-am facut in practica dar nu era nevoie aici). De asemenea am luat initial 6 butoane pentru ca intentionam sa folosesc 4 butoane pentru miscarea sarpelui, unul pentru selectare (OK) si unul pentru ON/OFF. Pe placa am folosit doar cele 4 pentru miscare deoarece nu am implementat meniu si jocul porneste automat deci celelalte 2 erau in plus.

Rezultat



Proteus:
schproteus.jpg

Poze cu placuta finala
sdc14723mocanuflorian.jpg

sdc14724mocanuflorian.jpg

Software design



Starea lcd-ului la un moment dat o vom retine intr-un bitboard de 48*84.
Pozitia sarpel-ului este retinuta in memorie prin 2 vectori de x , y care stabilesc pozitiile in bitboard.
Afisajul :
In primul pas se va afisa tot bitboard-ul deorece bombele sunt generate random.
In urmatorii pasi urmarim algoritmul :

  • modificam pozitia capului sarpelui urmarind directia generala de miscare
  • calculam pentru urmatoarele elemente ale sarpelui directia de miscare proprie
  • redesenam sarpele astfel:
  • stergem coada sarpelui (cel mai din urma element al sarpelui)
  • punem pixelul corespunzator noii poziitii a capului
  • in caz de coliziune cu un zid miscarea se face circulara
  • in caz de contact cu propriu-corp programul se termina
  • in caz de contact cu un mar se va integra la pasul urmator marul in corpul nostru

Download

Bibliografie

pm/prj2010/mcarjaliu/snake.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0