¿Os acordáis de Pascal?. Pascal fue el primer lenguaje de programación denominado como estructurado, hoy en día diría que únicamente se utiliza para fines académicos. En mi caso, como en el muchos otros, tuve que estudiarlo.
Un proyecto que me tocó hacer fue el famosísimo "Hundir la Flota". He revisado en Google "
Hundir la Flota en Pascal" y observado que hay más de 14000 registros.
Os dejo un fragmento del código que usé el cual corresponde a la función más grande en cuanto a número de líneas. Si necesitáis más, decírmelo y os echo un cable.
{ Mediante este procedimiento insertaré los barcos de ambos players en los tableros }
procedure InsertBoxBoat (var tb:sBoardBoat);
var
row,column:integer;
way:string;
begin
write('&& BARCO (Longitud 4) && - Selecciona la direccion para ubicarlo: [U]arriba/[D]abajo/[L]izquierda/[R]derecha?: ');
readln(way);
writeln();
repeat
write('Por favor, del 1 al 8, indica la coordenada de la fila: ');
readln(row);
writeln();
write('Por favor, del 1 al 8, indica la coordenada de la columna: ');
readln(column);
sound(220); { Beep }
delay(200); { Durante 200 ms }
nosound; { Y... silencio! }
writeln();
if (row>8) and (column>8) then
begin
textcolor(red);
writeln('&& ERROR: Esta fuera de rango!');
textcolor(white);
writeln();
readln();
end;
until row<=8;
if (way = 'L') or (way = 'l') or (way = 'izquierda') then
for column := column downto 4 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=4;
end
else
if (way = 'R') or (way = 'r') or (way='derecha') then
for column := column to 4 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=4;
end
else
if (way = 'U') or (way ='u') or (way = 'arriba') then
for row := row downto 4 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=4;
end
else
if (way = 'D') or (way = 'd') or (way = 'abajo') then
for row := row to 4 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=4;
end;
write('&& BARCO (Longitud 3) && - Selecciona la direccion para ubicarlo: [U]arriba/[D]abajo/[L]izquierda/[R]derecha?: ');
readln(way);
writeln();
repeat
write('Por favor, del 1 al 8, indica la coordenada de la fila: ');
readln(row);
writeln();
write('Por favor, del 1 al 8, indica la coordenada de la columna: ');
readln(column);
Sound(220); { Beep }
Delay(200); { Durante 200 ms }
NoSound; { Y... silencio! }
writeln();
if (row>8) and (column>8) then
begin
textcolor(red);
writeln('&& ERROR: Esta fuera de rango!');
textcolor(white);
writeln();
readln();
end;
until row<=8;
if (way = 'L') or (way = 'l') or (way = 'izquierda') then
for column := column downto 3 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=3;
end
else
if (way = 'R') or (way = 'r') or (way='derecha') then
for column := column to 3 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=3;
end
else
if (way = 'U') or (way ='u') or (way = 'arriba') then
for row := row downto 3 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=3;
end
else
if (way = 'D') or (way = 'd') or (way = 'abajo') then
for row := row to 3 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=3;
end;
write('&& BARCO (Longitud 2) && - Selecciona la direccion para ubicarlo: [U]arriba/[D]abajo/[L]izquierda/[R]derecha?: ');
readln(way);
writeln();
repeat
write('Por favor, del 1 al 8, indica la coordenada de la fila: ');
readln(row);
writeln();
write('Por favor, del 1 al 8, indica la coordenada de la columna: ');
readln(column);
Sound(220); { Beep }
Delay(200); { Durante 200 ms }
NoSound; { Y... silencio! }
writeln();
if (row>8) and (column>8) then
begin
textcolor(red);
writeln('&& ERROR: Esta fuera de rango!');
textcolor(white);
writeln();
readln();
end;
until row<=8;
if (way = 'L') or (way = 'l') or (way = 'izquierda') then
for column := column downto 2 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=2;
end
else
if (way = 'R') or (way = 'r') or (way='derecha') then
for column := column to 2 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=2;
end
else
if (way = 'U') or (way ='u') or (way = 'arriba') then
for row := row downto 2 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=2;
end
else
if (way = 'D') or (way = 'd') or (way = 'abajo') then
for row := row to 2 do
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=2;
end;
repeat
textcolor(yellow);
writeln('&& ULTIMO Barco para ubicar, selecciona ubicacion: ');
textcolor(white);
writeln();
write('Por favor, del 1 al 8, indica la coordenada de la fila: ');
readln(row);
writeln();
write('Por favor, del 1 al 8, indica la coordenada de la columna: ');
readln(column);
Sound(220); { Beep }
Delay(200); { Durante 200 ms }
NoSound; { Y... silencio! }
writeln();
if (row>8) and (column>8) then
begin
textcolor(red);
writeln('&& ERROR: Esta fuera de rango!');
textcolor(white);
writeln();
readln();
end;
until row<=8;
begin
tb[row,column].bstate := BARCO;
tb[row,column].bsize:=1;
end
end;