Está en la página 1de 2

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%
%
%
Tres en Linea
%
%
%
% Integrantes :
%
%
Julca Vivanco, Jose Luis
%
%
Fernandez Mendoza, Pool
%
%
%
% Curso : Inteligentica
%
%
Artificial
%
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
gana(Tabla, Jugador) :- ganafila(Tabla, Jugador);
ganacolumna(Tabla, Jugador);
ganadiagonal(Tabla, Jugador).
ganafila(Tabla, Jugador) :- Tabla = [Jugador,Jugador,Jugador,_,_,_,_,_,_];
Tabla = [_,_,_,Jugador,Jugador,Jugador,_,_,_];
Tabla = [_,_,_,_,_,_,Jugador,Jugador,Jugador].
ganacolumna(Tabla, Jugador) :- Tabla = [Jugador,_,_,Jugador,_,_,Jugador,_,_];
Tabla = [_,Jugador,_,_,Jugador,_,_,Jugador,_];
Tabla = [_,_,Jugador,_,_,Jugador,_,_,Jugador].
ganadiagonal(Tabla, Jugador) :- Tabla = [Jugador,_,_,_,Jugador,_,_,_,Jugador];
Tabla = [_,_,Jugador,_,Jugador,_,Jugador,_,_].
omovimiento([a,B,C,D,E,F,G,H,I],
omovimiento([A,a,C,D,E,F,G,H,I],
omovimiento([A,B,a,D,E,F,G,H,I],
omovimiento([A,B,C,a,E,F,G,H,I],
omovimiento([A,B,C,D,a,F,G,H,I],
omovimiento([A,B,C,D,E,a,G,H,I],
omovimiento([A,B,C,D,E,F,a,H,I],
omovimiento([A,B,C,D,E,F,G,a,I],
omovimiento([A,B,C,D,E,F,G,H,a],

Jugador,
Jugador,
Jugador,
Jugador,
Jugador,
Jugador,
Jugador,
Jugador,
Jugador,

[Jugador,B,C,D,E,F,G,H,I]).
[A,Jugador,C,D,E,F,G,H,I]).
[A,B,Jugador,D,E,F,G,H,I]).
[A,B,C,Jugador,E,F,G,H,I]).
[A,B,C,D,Jugador,F,G,H,I]).
[A,B,C,D,E,Jugador,G,H,I]).
[A,B,C,D,E,F,Jugador,H,I]).
[A,B,C,D,E,F,G,Jugador,I]).
[A,B,C,D,E,F,G,H,Jugador]).

xmovimiento([a,B,C,D,E,F,G,H,I], 1, [x,B,C,D,E,F,G,H,I]).
xmovimiento([A,a,C,D,E,F,G,H,I], 2, [A,x,C,D,E,F,G,H,I]).
xmovimiento([A,B,a,D,E,F,G,H,I], 3, [A,B,x,D,E,F,G,H,I]).
xmovimiento([A,B,C,a,E,F,G,H,I], 4, [A,B,C,x,E,F,G,H,I]).
xmovimiento([A,B,C,D,a,F,G,H,I], 5, [A,B,C,D,x,F,G,H,I]).
xmovimiento([A,B,C,D,E,a,G,H,I], 6, [A,B,C,D,E,x,G,H,I]).
xmovimiento([A,B,C,D,E,F,a,H,I], 7, [A,B,C,D,E,F,x,H,I]).
xmovimiento([A,B,C,D,E,F,G,a,I], 8, [A,B,C,D,E,F,G,x,I]).
xmovimiento([A,B,C,D,E,F,G,H,a], 9, [A,B,C,D,E,F,G,H,x]).
xmovimiento(Tabla, _, Tabla) :- write('Movimiento Ilegal.'), nl.
mostrar([A,B,C,D,E,F,G,H,I]) :write('|'),
write([A,B,C]),write('|'),nl,
write('|'),
write([D,E,F]),write('|'),nl,write('|'),
write([G,H,I]),write('|'),nl,nl.
jugar :- como_jugar, jugardela([a,a,a,a,a,a,a,a,a]).

como_jugar:write('Tu eres el jugador x, ingrese la posicion de la casilla a jugar.'),


nl,
mostrar([1,2,3,4,5,6,7,8,9]).
jugardela(Tabla) :- gana(Tabla, x), write('Tu ganaste!').
jugardela(Tabla) :- gana(Tabla, o), write('Gano IA!').
jugardela(Tabla) :- read(N),
xmovimiento(Tabla, N, NuevaTabla),
mostrar(NuevaTabla),
oresponde(NuevaTabla, NuevanuevaTabla),
mostrar(NuevanuevaTabla),
jugardela(NuevanuevaTabla).
puede_x_ganar(Tabla) :- omovimiento(Tabla, x, NuevaTabla), gana(NuevaTabla, x).
oresponde(Tabla,NuevaTabla) :omovimiento(Tabla, o, NuevaTabla),
gana(NuevaTabla, o),!.
% Si no gana -> para
oresponde(Tabla,NuevaTabla) :omovimiento(Tabla, o, NuevaTabla),
not(puede_x_ganar(NuevaTabla)).
oresponde(Tabla,NuevaTabla) :omovimiento(Tabla, o, NuevaTabla).
oresponde(Tabla,NuevaTabla) :not(member(a,Tabla)),!,
write('El juego termino sin ganador!'), nl,
NuevaTabla = Tabla.

También podría gustarte