26/06/14 9:20
pbe
Sto creando un gioco a tempo nel quale hai l'obiettivo di prendere 10 palline nere entro lo scadere del tempo, evitando una pallina verde che si muove in giro per lo schermo.
Il problema qual è? E' che quando si perde per aver avuto contatto con la pallina verde si torna al menu, e se si fa un altra partita il tempo è quello della partita precedentemente non conclusa e non riesco a farlo resettare.
Questo problema è accentuato anche perchè mentre si sta nel menu il tempo inizia già e non aspetta che parta il gioco.
Ecco una versione demo: benzocode.altervista.org/pages/sketch_140624d/…
Ed ecco il codice:
Spero che mi possiate aiutare prima possibile.
Grazie in anticipo.
Il problema qual è? E' che quando si perde per aver avuto contatto con la pallina verde si torna al menu, e se si fa un altra partita il tempo è quello della partita precedentemente non conclusa e non riesco a farlo resettare.
Questo problema è accentuato anche perchè mentre si sta nel menu il tempo inizia già e non aspetta che parta il gioco.
Ecco una versione demo: benzocode.altervista.org/pages/sketch_140624d/…
Ed ecco il codice:
boolean keyup = false; boolean keyright = false; boolean keyleft = false; boolean keydown = false; float x,y,x2,y2,circaX,circaY,enemyX,enemyY,enemyX2,enemyY2,enemyX3,enemyY3,movX,movY,circaXx,circaYy; int i,p,c=0,t, interval = 60; PFont font; String s= "Gioco fatto da P.Be", v="Hai Vinto!", time = "60"; void setup() { size(640,360); font = createFont("Arial", 30); } void draw() { if (c == 0) { time="60"; i=0; p=10; x = width/2; y = height/2; x2=random(16,624); y2=random(16,344); enemyY=50; enemyX=20; enemyY2=100; enemyX2=400; enemyY3=300; enemyX3=150; movX=1; movY=1; background (255); stroke (0); fill (0); textSize (14); text ("INIZIA A GIOCARE! ", 210,30); rect (210, 120, 100, 50); stroke (255); fill (255); text ("INIZIA", 237, 150); stroke (51); fill (51); line (20,200,560,200); textSize (14); text (s,250,260,300,400); if ((((mouseX >= 210) && (mouseX <= 310)) && ((mouseY >= 120) && (mouseY <= 170))) && (mousePressed && (mouseButton == LEFT))) { // se il mouse viene premuto (all'interno del rettangolo) il gioco termine e la finestra viene chiusa c = 5; } } if (c == 5) { time="60"; background(195); fill(0); ellipse(x2,y2,16,16); fill(123,213,123); ellipse(enemyX,enemyY,16,16); fill(255); ellipse(x,y,16,16); fill(0); if(i<10){ interval = 60; t = interval-int(millis()/1000); time = nf(t , 3); if(t == 0){ text("GAME OVER",210,30); rect (210, 70, 100, 50); fill (255); text ("MENU", 235, 100); i=10; v=""; p=0; if ((((mouseX >= 210) && (mouseX <= 310)) && ((mouseY >= 70) && (mouseY <= 120))) && (mousePressed && (mouseButton == LEFT))) { // se il mouse viene premuto (all'interno del rettangolo) il gioco termine e la finestra viene chiusa c=0; } } else { moveEnemy(); text("Secondi rimanenti: "+time, 10, 20); } } text("Pallini rimasti: "+p, 400, 20); if(i<10) { if (keyup) y--; if (keydown) y++; if (keyleft) x--; if (keyright) x++; } circaX=x-x2; circaY=y-y2; if(i<10) { if(((circaX<=16)&&(circaX>=-16))&&((circaY<16)&&(circaY>=-16))) { p=p-1; i++; x2=random(16,624); y2=random(16,344); } } else { time=""; text(v, 10, 30); } circaXx=x-enemyX; circaYy=y-enemyY; if((((circaXx<=16)&&(circaXx>=-16))&&((circaYy<16)&&(circaYy>=-16)))||t==0) { text("GAME OVER",210,30); rect (210, 70, 100, 50); fill (255); text ("MENU", 235, 100); if ((((mouseX >= 210) && (mouseX <= 310)) && ((mouseY >= 70) && (mouseY <= 120))) && (mousePressed && (mouseButton == LEFT))) { // se il mouse viene premuto (all'interno del rettangolo) il gioco termine e la finestra viene chiusa c=0; } i=10; v=""; p=0; } else { moveEnemy(); } } } void keyPressed() { if (key == CODED) { if (keyCode == UP) keyup = true; if (keyCode == DOWN) keydown = true; if (keyCode == LEFT) keyleft = true; if (keyCode == RIGHT) keyright = true; } } void keyReleased() { if (key == CODED) { if (keyCode == UP) keyup = false; if (keyCode == DOWN) keydown = false; if (keyCode == LEFT) keyleft = false; if (keyCode == RIGHT) keyright = false; } } void moveEnemy() { enemyX+=movX; enemyY+=movY; if(enemyX==16) { movX=1; } if(enemyX==624) { movX=-1; } if(enemyY==16) { movY=1; } if(enemyY==344) { movY=-1; } }
Spero che mi possiate aiutare prima possibile.
Grazie in anticipo.
aaa