[ Foro de Pascal ]

Ficheros Pascal

18-Jan-2021 18:19
Invitado (nerea)
0 Respuestas

Hola,
Tengo que programar un juego de hundir la flota, los datos son dados por un fichero, Necesito que mi programa lea un fichero, en el que tengo un barco definido por el modelo, la columna, la fila y la orientacion, hasta que lea en dicho fichero la palabra fin.
He conseguido que lea un barco, pero cuando intento hacer un procedure para que me lea a un jugador (es decir varios barcos hasta que encuentre la palabra fin)me da error.  

const
MinFil = 1;
MaxFil = 10;
MinCol = 'A';
MaxCol = 'J';
NumBarcos = 100;

type
TipoModBarco = (Submarino, Fragata, Dragaminas, Portaaviones);
TipoColumna = MinCol..MaxCol;
TipoFila = MinFil..MaxFil;
TipoPos = record
columna: TipoColumna;
fila: TipoFila;
end;
TipoOrientacion = (Vertical, Horizontal);
TipoBarco = record
modelo: TipoModBarco;
posicion: TipoPos;
orientacion: TipoOrientacion;
end;
TipoBarcos = array[1..NumBarcos] of TipoBarco;
TipoJugador = record
barcos: TipoBarcos;
num: 0..NumBarcos;
end;

procedure leerBarco(var fichero:text; var barco:tipoBarco);
var
  aux:char;
begin
    read(fichero, barco.modelo);
    read(fichero, aux);
    while(aux = ' ') do begin
      read(fichero, aux);
    end;
    barco.posicion.columna:= aux;
    read(fichero, barco.posicion.fila);
    read(fichero, barco.orientacion);
end;
procedure leerjug(var fichero: text; var jugador: TipoJugador);
var
i: integer;
begin
jugador.num := 0;
while not eof(fichero) do begin
jugador.num := jugador.num + 1;
leerbarco(fichero, jugador.barcos[jugador.num]);
end;
end;


begin
assign(fichero, 'barcos.txt');
 reset(fichero);
 leerjug(fichero, jugador);
 close(fichero);
end.

Adjunto una parte del enunciado:
[Un barco está definido por el tipo de barco (Submarino, Fragata, Dragaminas, Portaaviones), por la posición de su proa (una casilla del tablero)  y por su orientación (Horizontal o Vertical).Un barco horizontal tiene la proa a la izquierda. Uno vertical tiene la proa arriba. Los submarinos ocupan 1 casilla, las fragatas 2,  los dragaminas 3, y los portaaviones 4.
En la entrada, tenemos datos para un dos jugadores, y, para cada jugador, tenemos datos de un número indeterminado de barcos. Cada jugador en la entrada tiene barcos (quizá ninguno) seguidos por la palabra FIN. Para cada barco, tenemos en este orden el tipo de barco, la coordenada de la proa y la orientación. Puede haber cualquier cantidad de espacio en blanco en la entrada entre distintas palabras. Además, la entrada puede ser incorrecta y en lugar de tener lo que se espera tener, podríamos tener cualquier otra cosa. Además, los barcos podrían estar mal situados, de tal forma que alguno salga del tablero o de forma que alguno esté sobre otro parcial o totalmente.Los barcos mal situados deben ignorarse.]




(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.)