Tutorial 10 - Creació d'un joc (II)

Pas 11 de 22

Comencem per la primera millora.

A causa de l'aleatorietat de la posició de les mines, és possible que fins i tot abans de moure la nau ja hi hagi alguna mina amb la que hi xoqui.

Per solucionar aquest problema, substituirem el codi en el qual creàvem la posició x i y de cada mine, dins de la funció putMines, per aquest codi:

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

La sentència do…while el que fa és executar en primer lloc el que hi hagi entre claus. Mentre es compleixi la condició que hi ha entre els parèntesis de while, es tornarà a executar el que hi hagi entre les claus del do.

En aquest cas, creem una posició a l'atzar per a la mina. Si la posición és a prop de la cantonada inferior esquerra (si la posició horitzontal de la mina és més petita que 100, i a més la seva posició vertical és més gran que 300), llavors tornarà a generar-se una posició aleatòria per a la mina.

Aquest procés es repetirà fins que la condició no es compleixi, cosa que significarà que la posició generada per a la mina ja no és a prop de la nau.

D’una manera més gràfica, si la posició aleatòria de la mina és en la zona del quadrat ratllat, llavors canviarem la posició de la mina de manera aleatòria, fins a trobar una posició vàlida.

Zona de seguridad para la nave