.dsy:it. 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)


Posted by IsaMetallo on 27-05-2009 18:32:

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); }


SNAKE
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; } } }


SNAKEBODYPART
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!!!)


Posted by IsaMetallo on 28-05-2009 11:49:

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!!!)


Posted by Stetolo on 02-06-2009 06:29:

L'avevo fatto anch'io :) !

__________________
Stetolo


Posted by IsaMetallo on 02-06-2009 16:23:

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!!!)


Posted by Stetolo on 02-06-2009 16:44:

Sicuramente si..
Ti allego l'eseguibile per giocarci:

__________________
Stetolo


Posted by IsaMetallo on 02-06-2009 21:00:

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!!!)


Posted by Stetolo on 02-06-2009 22:14:

L'ho riprovato ancora..
Su Windows..
You too?

__________________
Stetolo


Posted by IsaMetallo on 03-06-2009 08:50:

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!!!)


Posted by Stetolo on 03-06-2009 12:45:

Non so darti una spiegazione onestamente.. A me ed a varie altre persone a cui l'ho fatto provare funziona correttamente..

__________________
Stetolo


Posted by IsaMetallo on 03-06-2009 13:06:

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!!!)


Posted by Stetolo on 03-06-2009 13:43:

Si, fai invio all'inizio per avviare, poi scegli la difficoltà, poi controlli lo snake con le frecce..

__________________
Stetolo


Posted by IsaMetallo on 05-06-2009 17:19:

Talking

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!!!)


Posted by Supernick on 12-06-2009 17:25:

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 :D


Posted by IsaMetallo on 13-06-2009 09:20:

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!!!)


Posted by Supernick on 13-06-2009 11:06:

Si in effetti ora non è proprio il momento :D

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.