![]() |
Pages (2): [1] 2 » Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Laboratorio di multimedia I (http://www.dsy.it/forum/forumdisplay.php?forumid=376)
-- Snake in Processing (http://www.dsy.it/forum/showthread.php?threadid=38428)
Snake in Processing
ciao a tutti... per smanettare un pò oggi mi sono messo ad implementare una versione semplice di snake (famoso gioco per cellulari) nella sua prima versione (quella cioè in cui si perdeva anche se si toccava il muro)...
sono ancora ad uno stadio iniziale, sto ancora lavorando sul movimento... ma la cosa stranissima è che solo le prime due parti del corpo del serpente si muovono correttamente, mentre le altre rimangono ferme, e non riesco a capire il perchè... se qualcuno mi dà una mano mi farebbe piacere...
SNAKEGAME
code:
Snake snake; int rate=1; int bodySize=20; //grandezza del corpo del serpente PVector direction=new PVector(0,bodySize); //direzione iniziale verso il basso (scelta a caso) static boolean running=true; //la variabile booleana fa vedere se il gioco è in corso o menp void setup(){ size(600,600); snake=new Snake(bodySize); frameRate(rate); smooth(); } void draw(){ if (running){ //il gioco in corso disegna il primo sfondo e fa muovere il serpente, il resto sarà gestito a parte background(loadImage("back.jpg")); snake.move(direction); } else //se no viene disegnata la schermata di perdita { background(loadImage("nelson.jpg")); textFont(loadFont("Arial-Black-48.vlw") , 40); fill(255); text("You Lose!",width-275,200); textFont(loadFont("Arial-Black-48.vlw"),20); text("Press n",width-200,height-100); text("for a new game", width-200,height-70); } } void keyPressed(){ //cambia direzione al serpente if (keyCode==UP) direction.set(0,-bodySize,0); if (keyCode==DOWN) direction.set(0,bodySize,0); if (keyCode==LEFT) direction.set(-bodySize,0,0); if (keyCode==RIGHT) direction.set(bodySize,0,0); if (key=='n') newGame(); } static void gameFinished(){ //se invocato ferma il gioco running=false; } void newGame(){ //ripristina lo stato iniziale snake=new Snake(bodySize); running=true; direction=new PVector(0,bodySize); }
code:
class Snake{ ArrayList snakeBody=new ArrayList(); Snake(int bodySize){ //crea un serpente con 5 pezzi int scala=0; for (int i=0; i<5; i++){ snakeBody.add(new SnakeBodyPart(new PVector(300-scala,10),bodySize)); scala+=bodySize; } } void move(PVector direction){ //la direzione influisce solo sul movimento della testa SnakeBodyPart head=(SnakeBodyPart)snakeBody.get(0); head.move(direction); head.display(); //il resto viene fatto in modo che un pezzo successivo prenda il posto del pezzo precedente int count=1; while(count<snakeBody.size()){ SnakeBodyPart part=(SnakeBodyPart)snakeBody.get(count); SnakeBodyPart previous=(SnakeBodyPart)snakeBody.get(count-1); part.setNewPos(previous.getOldPos()); part.display(); count=count+1; } } }
code:
class SnakeBodyPart{ PVector pos,oldPos; int bodySize; float scala; SnakeBodyPart(PVector pos,int bodySize){ this.pos=pos.get(); this.oldPos=pos.get(); this.bodySize=bodySize; this.scala=bodySize/2; } void display(){ //disegna un rettangolo il cui centro viene letto dal vettore posizione rectMode(CENTER); fill(0,255,0); rect(pos.x,pos.y,bodySize,bodySize); } PVector getOldPos(){ return oldPos.get(); } PVector getPos(){ return pos.get(); } void setNewPos(PVector newPos){ pos.set(newPos.get()); } void move(PVector direction){ oldPos=pos.get(); pos.add(direction); //se la posizione esce dalla finestra si perde if (((pos.x-scala<0)||(pos.x+scala>width)) || ((pos.y-scala/2<0)||(pos.y+scala/2>height))) SnakeGame.gameFinished(); } }
__________________
"They Can't Stop Us Let Them Try...
for heavy metal we would die..."
(Manowar - Die For Metal)
http://www.jackassubs.com - Admin (in ricerca di traduttori!!!)
niente ho risolto :-)
__________________
"They Can't Stop Us Let Them Try...
for heavy metal we would die..."
(Manowar - Die For Metal)
http://www.jackassubs.com - Admin (in ricerca di traduttori!!!)
L'avevo fatto anch'io
!
__________________
Stetolo
ehm... non funziona il tuo... nel senso, io passo col quadrato blu su quello giallo ma non si allunga il serpente... sbaglio qualcosa?
__________________
"They Can't Stop Us Let Them Try...
for heavy metal we would die..."
(Manowar - Die For Metal)
http://www.jackassubs.com - Admin (in ricerca di traduttori!!!)
Sicuramente si..
Ti allego l'eseguibile per giocarci:
__________________
Stetolo
niente, io passo sopra con il quadrato blu su quello giallo e nn succede niente...
__________________
"They Can't Stop Us Let Them Try...
for heavy metal we would die..."
(Manowar - Die For Metal)
http://www.jackassubs.com - Admin (in ricerca di traduttori!!!)
L'ho riprovato ancora..
Su Windows..
You too?
__________________
Stetolo
si certo winodws xp... funziona uguale sia via processing che via applicazione...
__________________
"They Can't Stop Us Let Them Try...
for heavy metal we would die..."
(Manowar - Die For Metal)
http://www.jackassubs.com - Admin (in ricerca di traduttori!!!)
Non so darti una spiegazione onestamente.. A me ed a varie altre persone a cui l'ho fatto provare funziona correttamente..
__________________
Stetolo
boh strano... pace... ma il modo in cui gioco è corretto giusto? controllo il quadrato blu e passo sopra quello giallo e basta..
__________________
"They Can't Stop Us Let Them Try...
for heavy metal we would die..."
(Manowar - Die For Metal)
http://www.jackassubs.com - Admin (in ricerca di traduttori!!!)
Si, fai invio all'inizio per avviare, poi scegli la difficoltà, poi controlli lo snake con le frecce..
__________________
Stetolo
a chi interessasse, il mio finito... basta decommentare/commentare un pezzo di codice per farlo comportare come snake 1 o 2... il codice è commentato cmq, si capisce...
__________________
"They Can't Stop Us Let Them Try...
for heavy metal we would die..."
(Manowar - Die For Metal)
http://www.jackassubs.com - Admin (in ricerca di traduttori!!!)
Provato, ben fatto!
Ora si potrebbe mettere una stringa con il punteggio attuale, e magari migliorare la grafica del serpente e della frutta... e magari farlo in 3D, no beh non esageriamo ![]()
al 3d ci sto pensando da un pò... magari quando sono più tranquillo ci smanetto...
__________________
"They Can't Stop Us Let Them Try...
for heavy metal we would die..."
(Manowar - Die For Metal)
http://www.jackassubs.com - Admin (in ricerca di traduttori!!!)
Si in effetti ora non è proprio il momento ![]()
comunque ieri ho provato a fare due cazzatine con mobile processing e sul telefono mi andavano!!
Per chi non va ricordo che bisogna installare J2ME e il Wireless Toolkit
| All times are GMT. The time now is 16:23. | Pages (2): [1] 2 » Show all 17 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.