[ Foro de Pascal ]

Aleatorio en matriz

09-May-2008 20:39
Roberto Elizo
1 Respuestas

Hola a todos, el problema que tengo no es exactamente de pascal es mas bien de como implementar, me expliko:

Necesito colocar una serie de barcos de tamaño distinto sobre un tablero (una matriz de 10x 10) el problema es que los barcos se deben colocar aleatoriamente para cada partida y no pueden tokarse entre ellos ni siquiera en diagonal.
Se me han ocurrido algunas ideas pero son muy largas de programar o serian demasiado lentas haber si alguno de vosotors puede darme alguna pistilla de como puedo implementar esto.

Gracias!!


14-May-2008 18:15
Nacho Cabanes (+84)

Cada vez que coloques un barco (o un fragmento de barco en una casilla) marcas esa casilla como ocupada.

Cuando generes una nueva posición al azar, si esa casilla está ocupada, no te sirve y debes volver a generar otra.

Si con "tocarse" te refieres a que no puede estar ni siquiera en la casilla de al lado, no deberás comprobar sólo si la casilla [i,j] está ocupada, sino si lo están todas las colindantes:

En horizontal [i-1,j] y [i+1,j]
En vertical [i,j-1] y [i,j+1]
Las cuatro esquinas en diagonal [i-1,j-1] ; [i+1,j-1] ; [i-1,j+1] ; [i+1,j+1]

Además, se complica ligeramente porque no siempre podrás mirar todas esas casillas. Por ejemplo, si estás en la casilla [1,10] no puedes mirar la i-1 (no existe columna 0) ni la j+1 (no existe fila 11).

Es un poco trabajoso pero es sencillo.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)