Tutorial 10 - Creación de un juego (II)

Paso 11 de 22

Comencemos por la primera mejora.

Debido a la aleatoriedad de la posición de las minas, es posible que antes incluso de mover la nave, ya haya alguna mina que choque con ella.

Para solucionar este problema, sustituiremos el código en el que creábamos la posición x e y de cada mine, dentro de la función putMines, por este código:

do
{
    mine.x = Math.random() * 550;
    mine.y = Math.random() * 400;
} while (mine.x < 100 && mine.y > 300);

La sentencia do…while lo que hace es ejecutar en primer lugar lo que se encuentre entre llaves. Mientras se cumpla la condición que está entre los paréntesis del while, entonces lo que está entre las llaves del do volverá a ejecutarse.

En este caso, creamos una posición al azar para la mina. Si la posición se encuentra cerca de la esquina inferior izquierda (si la posición horizontal de la mina es menor que 100, y además su posición vertical es mayor que 300), entonces volverá a generarse una posición aleatoria para la mina.

Este proceso se repetirá hasta que la condición no se cumpla, lo que significará que la posición generada para la mina ya no está cerca de la nave.

De un modo más gráfico, si la posición aleatoria de la mina está en la zona del cuadrado rayado, entonces cambiaremos la posición de la mina de forma aleatoria, hasta dar con una posición válida.

Zona de seguridad para la nave