Hi! So there’s this assignment i need to do. I made a game where you basically have to find a wolf inside a pack of sheep. Once you find it, you have to click on it, and it will move on to the next level. You need to find as many wolves as you can before the time runs out. However, my teacher told me to make more than one wolf appear by using arrays, and I can’t seem to make it work!
The array itself works, since it shows the number of wolves you decide, but the mouse clicked function doesn’t. I don’t understand arrays 100%, so there’s probably something I’m missing, or perhaps there’s another way of doing it that i don’t know about. I just can’t find what it is I’m doing wrong.
Here’s the code. Sorry if it’s messy or something, I’m doing my best
PImage lobo;
PImage oveja;
PImage fondo;
PImage caja;
PImage gameover;
int GameOver=1; //cuándo termina la partida
int Restart=1;
int Puntos=0;
//variables lobo
int nlobo=5;
int loboX[]=new int[nlobo];
int loboY[]=new int[nlobo];
//variables ovejas
//aumenta el valor de n para subir la dificultad
int n=3;
int ovejasX[]=new int[n];
int ovejasY[]=new int[n];
int ms=10; //milisegundos
//cambiar tiempo aquí
int s=90; //segundos
void setup(){
size(800,800);
//gráficos
lobo = loadImage("lobo.png");
oveja = loadImage("oveja.png");
fondo = loadImage("fondo.png");
caja = loadImage("fondo2.png");
gameover = loadImage("gameover.png");
for(int contador=0;contador<n;contador++){
ovejasX[contador]=int(random(0,677));
ovejasY[contador]=int(random(100,654)); //el random es así para que no se salgan de la pantalla
}
for(int contadorL=0;contadorL<nlobo;contadorL++){
loboX[contadorL]=int(random(0,677));
loboY[contadorL]=int(random(100,677));
}
}
void draw(){
//tiempo //lo pongo aquí porque se solapaban los números
image(caja, 0, 0);
textAlign(CENTER);
textSize(30);
text(s,630,50);
if(ms<=100 && ms>0){
ms=ms-1;
}
if(ms==0){
s=s-1;
ms=100;
if(s<=0){
noLoop();
fill(255,0,0);
GameOver=0;
//desaparecen las ovejas y se revela la posición del lobo
background(255,255,255);
textAlign(CENTER);
textSize(100);
image(gameover, 0, 0);
textSize(30);
text("¡Se acabó el tiempo!",400,500);
text("Lobos cazados: " + (Puntos),400,550);
}
}
//juego
if((GameOver==1) && (Restart==1)){
DibujarFormas();
}
}
void DibujarFormas(){
image(fondo, 0, 0);
//caja de texto
fill(0,0,0);
rect(0,0,800,70);
//objeto principal (lobo). Lo pongo delante para que los las ovejas lo pisen. Porque se está escondiendo
for(int contadorL=0;contadorL<nlobo;contadorL++){
image(lobo, loboX[contadorL], loboY[contadorL]);
//ovejas
fill(255,255,255);
for(int contador=0;contador<n;contador++){
image(oveja, ovejasX[contador], ovejasY[contador]);
}
//tiempo
fill(255,255,255);
textAlign(CENTER);
textSize(30);
text("Tiempo: ",560,50);
//puntos
fill(255,255,255);
textAlign(CENTER);
textSize(30);
text("Puntos: " + (Puntos),230,50);
//nueva pantalla
Restart=0;
}
}
//para que salga la mano sobre el lobo
void mouseMoved(){
for(int contadorL=0;contadorL<nlobo;contadorL++){
loboX[contadorL]=int(random(0,677));
loboY[contadorL]=int(random(100,677));
if((mouseX > loboX[contadorL]) && (mouseX < loboX[contadorL]+123) && (mouseY > loboY[contadorL]) && (mouseY < loboY[contadorL]+160))
{
cursor(HAND);
}
else{
cursor(ARROW);
}
}
}
void mouseClicked(){
if(GameOver==1) //si la partida está iniciada
{
if(Restart==0) //y no está reiniciado
{
Restart=1; //se reinicia cuando le das click
}
for(int contadorL=0;contadorL<nlobo;contadorL++){
loboX[contadorL]=int(random(0,677));
loboY[contadorL]=int(random(100,677));
if((mouseX > loboX[contadorL]) && (mouseX < loboX[contadorL]+123) && (mouseY > loboY[contadorL]) && (mouseY < loboY[contadorL]+160)) //si haces click en el lobo ganas puntos
{
Puntos++;
}
else{ //si haces click en cualquier otro sitio, y la partida está iniciada, game over
noLoop();
fill(255,0,0);
GameOver=0;
//desaparecen las ovejas y se revela la posición del lobo
background(255,255,255);
for(int contadorLI=0;contadorLI<nlobo;contadorLI++){
image(lobo, loboX[contadorLI], loboY[contadorLI]);
}
textAlign(CENTER);
textSize(30);
image(gameover, 0, 0);
text("¡El lobo se ha escapado!",400,500);
text("Lobos cazados: " + (Puntos),400,550);
}
}
}
}