Buenas ¿como están? estoy haciendo el juego de ''La vieja'' como hago algo personal simplemente para aprender un poco mas de Pascal.. Y quería saber porque al llamar a la función Ganador en PLAY no me imprime el mensaje, se supone que si encuentra XXX debería decir ''Ganaron las X'' y si encuentra OOO deberia decir ''Ganaron las O'' pero el programa nunca lo dice, podrían ayudarme?
Yo coloque esto:
If (Ganador(M))then
Writeln('El ganador es la',S);
El código es el siguiente:
Program LaVieja;
Uses crt;
Const
Fila=3; Equis='X';
Columna=3; Cero='O';
Vacio='_';
Type
Matriz= Array[1..fila,1..columna] of Char;
Var
M: Matriz; S,Nombre: String; F:Text; Cedula:Integer;
Procedure llenarmatriz (Var M: Matriz);
Var I,J: Integer;
Begin
For I:= 1 to fila do
Begin
For J:= 1 to columna do
Begin
M[I,J]:=vacio;
end;
Writeln;
End;
End;
Procedure mostrarmatriz (Var M: Matriz);
Var I,J: Integer;
Begin
For I:= 1 to fila do
Begin
For J:= 1 to columna do
Begin
Write(M[I,J],' ');
end;
Writeln;
End;
End;
Function Ganador (Var M:Matriz):Boolean;
Var S:String; I,J:Integer; Ganar:Boolean;
Begin
Ganar:=False;
For I:= 1 to fila do
Begin
For J:= 1 to columna do
Begin
{Horizontal}
If ((M[I,J]='X') and (M[I,J+1]='X') and (M[I,J+2]='X')) then
Begin
Ganar:=True;
S:='X';
Break;
End
else
If ((M[I,J]='O') and (M[I,J+1]='O') and (M[I,J+2]='O')) then
Begin
Ganar:=True;
S:='O';
Break;
End
else
{Vertical}
If ((M[I,J]='X') and (M[I+1,J]='X') and (M[I+2,J]='X')) then
Begin
Ganar:=True;
S:='X';
Break;
End
else
If ((M[I,J]='O') and (M[I+1,J]='O') and (M[I+2,J]='O')) then
Begin
Ganar:=True;
S:='O';
Break;
End
else
{Diagonal}
If ((M[I,J]='X') and (M[I+1,J+2]='X') and (M[I+3,J+3]='X')) then
Begin
Ganar:=True;
S:='X';
Break;
End
else
If ((M[I,J]='O') and (M[I+1,J+2]='O') and (M[I+3,J+3]='O')) then
Begin
Ganar:=True;
S:='O';
Break;
End;
End;
End;
Ganador:=Ganar;
End;
Procedure Play (Var M: Matriz);
Var F,C,K:Integer; Turno: Boolean; S:String;
Begin
Turno:=True; K:=0;
While (K<9) do
Begin
If (Turno) then
Begin
Writeln('Jugador 1');
readln(F,C);
M[F,C]:=Equis;
end
else
Begin
Writeln('Jugador 2');
readln (F,C);
M[F,C]:=Cero;
End;
K:=K+1;
mostrarmatriz(M);
Turno:= Not(Turno);
end;
If (Ganador(M))then
Writeln('El ganador es la',S);
End;
Begin
Clrscr;
Writeln ('Bienvenido al juego de la vieja');
{Write ('Nombre del jugador 1: '); Readln(Nombre);
Write ('Cedula del jugador 1: '); Readln(Cedula);
Assign(F,'C:\Users\Usuario\Desktop\Lavieja.txt');
Rewrite(F);
Write('Nombre 1: ',Nombre,' Cedula 1: ',Cedula);
Close(F);}
LlenarMatriz(M);
MostrarMatriz (M);
Play (M);
readln;
End.