Programación General > Pascal

 Batalla Naval Con Freepascal

(1/2) > >>

irvinnne:
Hola a todos, vereis, es mi primer año como estudiante de informática de sistemas, nunca antes había programado, y me estoy volvendo loco con un ejercio que debo entregar, ya se que no me lo podeis hacer, solo os pido que me orienteis un poco, porque no tengo ni idea.

Bien me piden que codifique el juego de la batalla naval sobre una matriz 10*10, el ordenador jugara en papel pasivo, hay dos partes, controladas por un menú inicial, en la primera, la posición inicial de los barcos se lee de un fichero externo (esto creo que lo se hacer, :huh: , lo que no tengo ni idea es en la segunda parte, el programa decide la posición inicial de la flota aleatoriamente, ¿cómo hago para que decida letras y números aleatorios, de forma que coloque los barcos sin tocarse entre sí, debe colocar un barco de 5 casillas, otro de 4, 2 de 3, 2 de 2 y 3 de 1. Los disparos son cadenas de dos carácteres, en las que el primero es una letra entre la A y la J que indica la fila y el segundo, un dígito entre 0 y 9que indica la columna. Cuando el usuario se rinde, la entrada debe ser R.
Como respuesta a cada disparo, el programa muestra (.) un punto si no se conoce el estado de esa posición, una o minúscula (o) si se dispara al agua, x minúscula (x) para barco tocado y asteriscos (*) para barco hundido.
Esta parte tampoco lo se hacer, por favor hecharme una mano, gracias.

Enko:

--- Citar ---¿cómo hago para que decida letras y números aleatorios, de forma que coloque los barcos sin tocarse entre sí, debe colocar un barco de 5 casillas, otro de 4, 2 de 3, 2 de 2 y 3 de 1.

--- Fin de la cita ---
No tiene que decidir letras, solo numeros. ;)

--- Código: Text --- type   TTablero = array[1..10, 1..10] of Boolean;....var   Tablero: TTablero;  para sacar al azar las posiciones no es tan complicado, es cuestion de sacar una al azar y chequar  si la estan ocupadas.

--- Código: Text --- var  i,j: Integer;begin   Randomize;   i := Random(10)+1;   j := Random(10)+1;   Tablero[i,j] := True;end;  El codigo anterior solo saca 1 barco, para sacr mas, es solo hacer algo similar pero antes chequeando si la posicion no esta ocupada.

--- Código: Text ---   if Tablero[i,j] = True then PosicionOcuada.  para mostrar las posiciones de los barcos>

--- Código: Text --- for i:= 1 to 10begin   WriteLn;    for j:=1 to 10       if Tablero[i,j] then Write('*');    endend;  

irvinnne:
Hola Enko, muxas gracias x tu ayuda, pero cuando haga eso que me dices, generara posiciones aleatorias en el tablero sin preocuparse de formar barcos, y sin evitar q haya barcos contiguos, o estoy equivocado?

saludos

Enko:
Claro, por eso te avise que vos tendrías que hacer las validaciones. Es solo cuestion de unos cuantos IF's.
No te voy a dar el trabajo servido. Intentalo y luego me contás. ;)

mmrzgz:
:hola:  yo tengo que hacer algo parecido mi problema está al crear los barcos, debo de hacer un bucle para cada uno ya que uno es de 5 otro de 4 y así, contando que tengo que indicar también si quiero el barco arriba, abajo, izq o dcha. y no tengo muy claro como hacerlo.

Graciasss

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa