Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
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.
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
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.
Come ti ho suggerito in precedenza dovresti prima riordinare il codice, si denota uno schema molto casuale e caotico in questo che rende difficile individuare anche un errore cosi basilare.
Mi avevi consigliato di usare delle classi ma non saprei in che modo applicarle (anche avendo iniziato da pochi giorni con Processing). Qualcuno mi potrebbe illuminare? Grazie mille
Eccomi qua di nuovo, ho cercato di sistemare il mio listato e ho aggiunto alcuni oggetti e classi per sistemare il codice.
Il sorgente secondo me è già più semplificato come da richiesta, prima di mostrarvelo ricordo i bug del mini-gioco: ho messo un timer nel gioco ma il problema è che parte già dal menù e quando finisce una partita e inizia un'altra il timer prosegue senza ritornare a 60 secondi ma va in negativo (-001, -002, -003,...etc). Secondo me la causa sta tutta nella funzione "millis()" la quale tiene il tempo dall'inizio del programma e non dall'inizio della partita.
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
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