
Juego de LA VIEJA en Pascal
Publicado por Programador (3 intervenciones) el 24/08/2015 19:09:51
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:
El código es el siguiente:
Yo coloque esto:
1
2
If (Ganador(M))then
Writeln('El ganador es la',S);
El código es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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.
Valora esta pregunta


0