Parte del codigo de la Batalla Naval, Pascal
Estoy hace unos dias haciendo la batalla naval, el tema es que ya pude cargar las matrices con los barcos y todo, lo unico q no me anda es el tema de "tocado" y "hundido" quiero que me digas por q no me esta andando esta condicion:
if (j2[f,c] = 's') and (not (s)) then
begin
coord:='Impacto';
t1[f,c]:='x';
j2[f,c]:='x';
imp_fs:=f;
imp_cs:=c;
s:=true;
end;
if (j2[f,c] = 's') and (s) then
begin
coord:='Hundido';
t1[f,c]:='h';
t1[imp_fs,imp_cs]:='h';
j2[f,c]:='h';
j2[imp_fs,imp_cs]:='h';
tg1:=tg1-1;
end;
Siendo:
j2[f,c] = la matriz del jugador 2 con los barcos ya cargados.
t1[f,c] = la matriz q ve el jugador 1 con los aciertos de las coordenadas de ataque que introduce.
tg1 = es un contador que llevo del total, que no viene al caso.
El tema es que me impacta y me marca la primer "x" y me cambia la condicion a "true" pero no entra al 2do If. Nose que hacer, encima tengo que llevarlo mañana je.
te paso todo el codigo si queres probarlo y fijarte:
program naval;
uses dos,crt ;
type t_matrix1 = array [1..11, 1..11] of string; //para el tablero
var
j1:t_matrix1; //tablero jugador1
j2:t_matrix1; //tablero jugador 2
t1:t_matrix1; // tablero de aciertos del j1
t2:t_matrix1; // tablero de aciertos del j2
cord,user1, user2: string;
procedure ingresar_usuarios (var user1,user2:string); //PARA INGRESAR LOS USUARIOS
begin
writeln ('Jugador 1 ingrese su nombre: '); readln (user1);
writeln ('Jugador 2 ingrese su nombre: '); readln (user2);
end;
// CARGO LAS MATRICES DE CADA TABLERO AL PRINCIPIO DEL JUEGO.
procedure cargar_j1 (var v:t_matrix1; var v2:t_matrix1; var v3:t_matrix1; var v4:t_matrix1);
var
i,j:byte;
//Cargo Matriz jugador 1
begin
for i:= 2 to 11 do
begin
for j := 2 to 11 do
v[i,j]:= ('.');
end;
v[2,1]:=(' 1');
v[3,1]:=(' 2');
v[4,1]:=(' 3');
v[5,1]:=(' 4');
v[6,1]:=(' 5');
v[7,1]:=(' 6');
v[8,1]:=(' 7');
v[9,1]:=(' 8');
v[10,1]:=(' 9');
v[11,1]:=('10');
v[1,2]:=(' A');
v[1,3]:=('B');
v[1,4]:=('C');
v[1,5]:=('D');
v[1,6]:=('E');
v[1,7]:=('F');
v[1,8]:=('G');
v[1,9]:=('H');
v[1,10]:=('I');
v[1,11]:=('J');
// Cargo matriz jugador 2
for i:= 2 to 11 do
begin
for j := 2 to 11 do
v2[i,j]:= ('.');
end;
v2[2,1]:=(' 1');
v2[3,1]:=(' 2');
v2[4,1]:=(' 3');
v2[5,1]:=(' 4');
v2[6,1]:=(' 5');
v2[7,1]:=(' 6');
v2[8,1]:=(' 7');
v2[9,1]:=(' 8');
v2[10,1]:=(' 9');
v2[11,1]:=('10');
v2[1,2]:=(' A');
v2[1,3]:=('B');
v2[1,4]:=('C');
v2[1,5]:=('D');
v2[1,6]:=('E');
v2[1,7]:=('F');
v2[1,8]:=('G');
v2[1,9]:=('H');
v2[1,10]:=('I');
v2[1,11]:=('J');
//Cargo matriz de aciertos J1
for i:= 2 to 11 do
begin
for j := 2 to 11 do
v3[i,j]:= ('.');
end;
v3[2,1]:=(' 1');
v3[3,1]:=(' 2');
v3[4,1]:=(' 3');
v3[5,1]:=(' 4');
v3[6,1]:=(' 5');
v3[7,1]:=(' 6');
v3[8,1]:=(' 7');
v3[9,1]:=(' 8');
v3[10,1]:=(' 9');
v3[11,1]:=('10');
v3[1,2]:=(' A');
v3[1,3]:=('B');
v3[1,4]:=('C');
v3[1,5]:=('D');
v3[1,6]:=('E');
v3[1,7]:=('F');
v3[1,8]:=('G');
v3[1,9]:=('H');
v3[1,10]:=('I');
v3[1,11]:=('J');
// Cargo matriz de aciertos J2
for i:= 2 to 11 do
begin
for j := 2 to 11 do
v4[i,j]:= ('.');
end;
v4[2,1]:=(' 1');
v4[3,1]:=(' 2');
v4[4,1]:=(' 3');
v4[5,1]:=(' 4');
v4[6,1]:=(' 5');
v4[7,1]:=(' 6');
v4[8,1]:=(' 7');
v4[9,1]:=(' 8');
v4[10,1]:=(' 9');
v4[11,1]:=('10');
v4[1,2]:=(' A');
v4[1,3]:=('B');
v4[1,4]:=('C');
v4[1,5]:=('D');
v4[1,6]:=('E');
v4[1,7]:=('F');
v4[1,8]:=('G');
v4[1,9]:=('H');
v4[1,10]:=('I');
v4[1,11]:=('J');
end;
procedure cargar_j2 (var v:t_matrix1);
var
i,j:byte;
begin
for i:= 2 to 11 do
begin
for j := 2 to 11 do
v[i,j]:= ('.');
end;
v[2,1]:=(' 1');
v[3,1]:=(' 2');
v[4,1]:=(' 3');
v[5,1]:=(' 4');
v[6,1]:=(' 5');
v[7,1]:=(' 6');
v[8,1]:=(' 7');
v[9,1]:=(' 8');
v[10,1]:=(' 9');
v[11,1]:=('10');
v[1,2]:=(' A');
v[1,3]:=('B');
v[1,4]:=('C');
v[1,5]:=('D');
v[1,6]:=('E');
v[1,7]:=('F');
v[1,8]:=('G');
v[1,9]:=('H');
v[1,10]:=('I');
v[1,11]:=('J');
end;
// MUESTRO LAS MATRICES DE CADA JUGADOR
procedure mostrar_j1 (var v:t_matrix1);
var
i,j:byte;
begin
writeln (' Jugador Nro 1 ' );
writeln;
for i:= 1 to 11 do
begin
for j := 1 to 11 do
begin
write (v[i,j] ,' ');
end;
writeln;
end;
writeln;
writeln;
end;
procedure mostrar_j2 (var v:t_matrix1);
var
i,j:byte;
begin
writeln (' Jugador Nro 2 ' );
writeln;
for i:= 1 to 11 do
begin
for j := 1 to 11 do
begin
write (v[i,j] ,' ');
end;
writeln;
end;
writeln;
writeln;
end;
procedure mostrar_t1 (var v:t_matrix1);
var
i,j:byte;
begin
writeln (' Jugador Nro 1 ' );
writeln;
for i:= 1 to 11 do
begin
for j := 1 to 11 do
begin
write (v[i,j] ,' ');
end;
writeln;
end;
writeln;
writeln;
end;
procedure mostrar_t2 (var v:t_matrix1);
var
i,j:byte;
begin
writeln (' Jugador Nro 2 ' );
writeln;
for i:= 1 to 11 do
begin
for j := 1 to 11 do
begin
write (v[i,j] ,' ');
end;
writeln;
end;
writeln;
writeln;
end;
// HAGO QUE UBIQUEN LOS BARCOS CADA JUGADOR EN EL TABLERO.
procedure ubicar_j1 (var v:t_matrix1; user:string);
var
i,j,k,p:byte;
f,c,lado_s,lado_a,lado_p:string;
begin
//PARA CARGAR PATRULLEROS
i:=0;
writeln (user, ' Ingrese los Patrulleros:...
if (j2[f,c] = 's') and (not (s)) then
begin
coord:='Impacto';
t1[f,c]:='x';
j2[f,c]:='x';
imp_fs:=f;
imp_cs:=c;
s:=true;
end;
if (j2[f,c] = 's') and (s) then
begin
coord:='Hundido';
t1[f,c]:='h';
t1[imp_fs,imp_cs]:='h';
j2[f,c]:='h';
j2[imp_fs,imp_cs]:='h';
tg1:=tg1-1;
end;
Siendo:
j2[f,c] = la matriz del jugador 2 con los barcos ya cargados.
t1[f,c] = la matriz q ve el jugador 1 con los aciertos de las coordenadas de ataque que introduce.
tg1 = es un contador que llevo del total, que no viene al caso.
El tema es que me impacta y me marca la primer "x" y me cambia la condicion a "true" pero no entra al 2do If. Nose que hacer, encima tengo que llevarlo mañana je.
te paso todo el codigo si queres probarlo y fijarte:
program naval;
uses dos,crt ;
type t_matrix1 = array [1..11, 1..11] of string; //para el tablero
var
j1:t_matrix1; //tablero jugador1
j2:t_matrix1; //tablero jugador 2
t1:t_matrix1; // tablero de aciertos del j1
t2:t_matrix1; // tablero de aciertos del j2
cord,user1, user2: string;
procedure ingresar_usuarios (var user1,user2:string); //PARA INGRESAR LOS USUARIOS
begin
writeln ('Jugador 1 ingrese su nombre: '); readln (user1);
writeln ('Jugador 2 ingrese su nombre: '); readln (user2);
end;
// CARGO LAS MATRICES DE CADA TABLERO AL PRINCIPIO DEL JUEGO.
procedure cargar_j1 (var v:t_matrix1; var v2:t_matrix1; var v3:t_matrix1; var v4:t_matrix1);
var
i,j:byte;
//Cargo Matriz jugador 1
begin
for i:= 2 to 11 do
begin
for j := 2 to 11 do
v[i,j]:= ('.');
end;
v[2,1]:=(' 1');
v[3,1]:=(' 2');
v[4,1]:=(' 3');
v[5,1]:=(' 4');
v[6,1]:=(' 5');
v[7,1]:=(' 6');
v[8,1]:=(' 7');
v[9,1]:=(' 8');
v[10,1]:=(' 9');
v[11,1]:=('10');
v[1,2]:=(' A');
v[1,3]:=('B');
v[1,4]:=('C');
v[1,5]:=('D');
v[1,6]:=('E');
v[1,7]:=('F');
v[1,8]:=('G');
v[1,9]:=('H');
v[1,10]:=('I');
v[1,11]:=('J');
// Cargo matriz jugador 2
for i:= 2 to 11 do
begin
for j := 2 to 11 do
v2[i,j]:= ('.');
end;
v2[2,1]:=(' 1');
v2[3,1]:=(' 2');
v2[4,1]:=(' 3');
v2[5,1]:=(' 4');
v2[6,1]:=(' 5');
v2[7,1]:=(' 6');
v2[8,1]:=(' 7');
v2[9,1]:=(' 8');
v2[10,1]:=(' 9');
v2[11,1]:=('10');
v2[1,2]:=(' A');
v2[1,3]:=('B');
v2[1,4]:=('C');
v2[1,5]:=('D');
v2[1,6]:=('E');
v2[1,7]:=('F');
v2[1,8]:=('G');
v2[1,9]:=('H');
v2[1,10]:=('I');
v2[1,11]:=('J');
//Cargo matriz de aciertos J1
for i:= 2 to 11 do
begin
for j := 2 to 11 do
v3[i,j]:= ('.');
end;
v3[2,1]:=(' 1');
v3[3,1]:=(' 2');
v3[4,1]:=(' 3');
v3[5,1]:=(' 4');
v3[6,1]:=(' 5');
v3[7,1]:=(' 6');
v3[8,1]:=(' 7');
v3[9,1]:=(' 8');
v3[10,1]:=(' 9');
v3[11,1]:=('10');
v3[1,2]:=(' A');
v3[1,3]:=('B');
v3[1,4]:=('C');
v3[1,5]:=('D');
v3[1,6]:=('E');
v3[1,7]:=('F');
v3[1,8]:=('G');
v3[1,9]:=('H');
v3[1,10]:=('I');
v3[1,11]:=('J');
// Cargo matriz de aciertos J2
for i:= 2 to 11 do
begin
for j := 2 to 11 do
v4[i,j]:= ('.');
end;
v4[2,1]:=(' 1');
v4[3,1]:=(' 2');
v4[4,1]:=(' 3');
v4[5,1]:=(' 4');
v4[6,1]:=(' 5');
v4[7,1]:=(' 6');
v4[8,1]:=(' 7');
v4[9,1]:=(' 8');
v4[10,1]:=(' 9');
v4[11,1]:=('10');
v4[1,2]:=(' A');
v4[1,3]:=('B');
v4[1,4]:=('C');
v4[1,5]:=('D');
v4[1,6]:=('E');
v4[1,7]:=('F');
v4[1,8]:=('G');
v4[1,9]:=('H');
v4[1,10]:=('I');
v4[1,11]:=('J');
end;
procedure cargar_j2 (var v:t_matrix1);
var
i,j:byte;
begin
for i:= 2 to 11 do
begin
for j := 2 to 11 do
v[i,j]:= ('.');
end;
v[2,1]:=(' 1');
v[3,1]:=(' 2');
v[4,1]:=(' 3');
v[5,1]:=(' 4');
v[6,1]:=(' 5');
v[7,1]:=(' 6');
v[8,1]:=(' 7');
v[9,1]:=(' 8');
v[10,1]:=(' 9');
v[11,1]:=('10');
v[1,2]:=(' A');
v[1,3]:=('B');
v[1,4]:=('C');
v[1,5]:=('D');
v[1,6]:=('E');
v[1,7]:=('F');
v[1,8]:=('G');
v[1,9]:=('H');
v[1,10]:=('I');
v[1,11]:=('J');
end;
// MUESTRO LAS MATRICES DE CADA JUGADOR
procedure mostrar_j1 (var v:t_matrix1);
var
i,j:byte;
begin
writeln (' Jugador Nro 1 ' );
writeln;
for i:= 1 to 11 do
begin
for j := 1 to 11 do
begin
write (v[i,j] ,' ');
end;
writeln;
end;
writeln;
writeln;
end;
procedure mostrar_j2 (var v:t_matrix1);
var
i,j:byte;
begin
writeln (' Jugador Nro 2 ' );
writeln;
for i:= 1 to 11 do
begin
for j := 1 to 11 do
begin
write (v[i,j] ,' ');
end;
writeln;
end;
writeln;
writeln;
end;
procedure mostrar_t1 (var v:t_matrix1);
var
i,j:byte;
begin
writeln (' Jugador Nro 1 ' );
writeln;
for i:= 1 to 11 do
begin
for j := 1 to 11 do
begin
write (v[i,j] ,' ');
end;
writeln;
end;
writeln;
writeln;
end;
procedure mostrar_t2 (var v:t_matrix1);
var
i,j:byte;
begin
writeln (' Jugador Nro 2 ' );
writeln;
for i:= 1 to 11 do
begin
for j := 1 to 11 do
begin
write (v[i,j] ,' ');
end;
writeln;
end;
writeln;
writeln;
end;
// HAGO QUE UBIQUEN LOS BARCOS CADA JUGADOR EN EL TABLERO.
procedure ubicar_j1 (var v:t_matrix1; user:string);
var
i,j,k,p:byte;
f,c,lado_s,lado_a,lado_p:string;
begin
//PARA CARGAR PATRULLEROS
i:=0;
writeln (user, ' Ingrese los Patrulleros:...
1 Respuesta
Respuesta de elrata
2
¿Hola muy buen post estoy trabajando con un ejercicio similar que tengo que entregar dentro de poco y me estoy basando en lo que realizaron por las dudas me podrían mandar la consigna de lo que realiza su ejercicio y una pregunta solamente deja cargar los barcos al jugador 2 y el jugador 1 no puede realizar la carga? ¿Solo ataca? ¿Es así? Desde ya muy agradecido - Luciano Lugo
me podrian ayudar este es mi ejercicio El juego cuenta principalmente de dos tableros (uno para cada jugador) de 10 x 10 donde cada jugador va a poner sus barcos sin saber dónde coloco el otro su flota. Los barcos pueden ir de forma horizontal o vertical, los barcos por jugador son: 2 barco remolques (de dos posiciones) 2 barcos acorazados (de tres posiciones) 1 barco portaaviones (de 4 posiciones) Cada jugador deberá ingresar en que latitud y longitud va a realizar su disparo, y el sistema deberá indicar si ese disparo fue efectivo o no, luego será el turno del otro jugador que deberá realizar lo mismo hasta que alguno de los jugadores destroce a su oponente y se apropie de la victoria - Luciano Lugo