Hola a todos, primero presentarme ya que soy nuevo en este gran foro. Mi nombre es Jaime y llevo poquito tiempo en game maker, aunque me defiendo en lo basico.
He leido y visto muchisimos tutoriales, pero no se como hacer lo siguiente:
Estoy haciendo un juego estilo 'Busca las 7 diferencias' y lo que quiero es que al completar el nivel vayamos a una room aleatoria y que la ultima que hemos completado no se vuelva a repetir.
Espero haber sido claro y si podeis ayudarme os lo agradezco.
nadie?
Una cosa que no he acabado de entender, ¿La que no se ha de repetir es justo la anterior o todas las ya completadas?
Lo digo por que el título me ha confundido.
Cita de: CarloxTheBoy en Febrero 20, 2014, 03:40:17 PM
Una cosa que no he acabado de entender, ¿La que no se ha de repetir es justo la anterior o todas las ya completadas?
Lo digo por que el título me ha confundido.
Quiero que no se repita ninguna de las completadas.
por ejemplo, inicio el juego y pongo que al darle a jugar me lleve a una room al azar, y cuando complete esta room que me lleve a otra aleatoria pero sin que sea una ya completada. De esta manera que al finalizar todas pase a finalizar el juego.
Primero que nada bienvenido enganjau.
Aclaro lo del tema de tu doble post, nada más han pasado 2 hs y la mayoría no se conecta a esa hora ya que varios somos de Latino América y tenemos una diferencia horaria de varias horas.
Después, con respecto a tu duda, simplemente en el objeto control creá un vector de esta forma:
for (i=1;i<=10;i+=1) {
roomComplete[i] = 0;
}
Lo que se hace con ese for es definir cada índice de la variable roomComplete a 0 (1 indicaría que ya se completó), y el 10 del for lo tendrías que reemplazar por la cantidad de rooms que tengás.
Luego, cuando completás alguna room, colocá este código:
roomComplete[1] = 1;
Donde roomComplete[1] sería tu primera room.
Después, en el código que usas para cambiar de room poné esto:
var idRoom;
for (i=1;i<=10;i+=1) {
if (roomComplete[i] == 0) {
idRoom = scrRandomRoom;
if (roomComplete[idRoom] == 0) {
room_goto(idRoom);
break;
}
}
}
Lo que se hace en ese fragmento de código es hacer el bucle for para listar los valores del vector y comprobar si está en 0, si ese es el caso comprobamos, mediante scrRandomRoom (un script que genera un número al azar) si la room al azar está en 0, si ese es el caso vamos a esa room y salimos del for con el break para evitar que se siga ejecutando.
Ahora bien, creá un nuevo script y poné este código:
//scrRandomRoom();
var numRandom;
numRandom = irandom_range(1,10); // Generamos de forma aleatoria un número entero comprendido entre 1 y 10 inclusive.
return numRandom; //Devolvemos el valor generado para que al llamar la función se imprima.
Bueno, eso es lo que se me ocurre que podrías hacer. No he probado los códigos así que cualquier error comentanos a ver que pasa.