• Viernes 29 de Marzo de 2024, 11:30

Autor Tema:  Batalla Naval Con Freepascal  (Leído 4277 veces)

irvinnne

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Batalla Naval Con Freepascal
« en: Domingo 30 de Diciembre de 2007, 14:42 »
0
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

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Batalla Naval Con Freepascal
« Respuesta #1 en: Miércoles 2 de Enero de 2008, 13:37 »
0
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.
No tiene que decidir letras, solo numeros. ;)
Código: Text
  1.  
  2. type
  3.    TTablero = array[1..10, 1..10] of Boolean;
  4. ....
  5. var
  6.    Tablero: TTablero;
  7.  
  8.  
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
  1.  
  2. var
  3.   i,j: Integer;
  4. begin
  5.    Randomize;
  6.    i := Random(10)+1;
  7.    j := Random(10)+1;
  8.    Tablero[i,j] := True;
  9. end;
  10.  
  11.  
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
  1.  
  2.   if Tablero[i,j] = True then PosicionOcuada.
  3.  
  4.  
para mostrar las posiciones de los barcos>
Código: Text
  1.  
  2. for i:= 1 to 10
  3. begin
  4.    WriteLn;
  5.     for j:=1 to 10
  6.        if Tablero[i,j] then Write('*');
  7.     end
  8. end;
  9.  
  10.  

irvinnne

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Batalla Naval Con Freepascal
« Respuesta #2 en: Miércoles 2 de Enero de 2008, 19:30 »
0
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

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Batalla Naval Con Freepascal
« Respuesta #3 en: Jueves 3 de Enero de 2008, 14:51 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Batalla Naval Con Freepascal
« Respuesta #4 en: Viernes 4 de Enero de 2008, 18:40 »
0
: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

irvinnne

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Batalla Naval Con Freepascal
« Respuesta #5 en: Viernes 4 de Enero de 2008, 18:58 »
0
Weno Enko, ya he empezado con el programita, lo q he hecho ha sido dos matrices, una para q la vea el usuario y otra para guardar los barcos, hoy e conseguido por fin, traducir los datos del fichero al array porq venían de una forma rara por ejemplo B5H4
sisgnifica  fila B columna 5 para la primera posición del barco H4 significa que a partir de esa casilla hay q contar 4 en horizontal.
Ahora voy a ver si consigo hacer la dinámica del juego, que el usuario dispare, q de agua o tocado etc., me parece q lo de la posición aleatoria lo dejo para el final. :D

Pluck

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Batalla Naval Con Freepascal
« Respuesta #6 en: Miércoles 19 de Noviembre de 2008, 18:40 »
0
Hola irvinnne yo tengo unproblema igual soy de primer semestre en sistemas y no tengo ni una idea de como hacer esto crees que me podrias ayyudar por favor.

Gracias de antemano