Está en la página 1de 7

fprintf '\n'

fprintf 'TRES EN RAYA \n'


fprintf '\n'
jug=0;
Stop=0;
A=[0 0 0;0 0 0;0 0 0];
contador=0;
jugando=0;
%Se repite 2ste ciclo en cada jugada
while Stop==0
%Seleccn del modo de juego
if jugando==0
modo=1;
end
%Si seleccionas salir, se sale del ciclo de arriba
if modo==3
Stop=1;
jugando=3;
end

%Modo de un jugador
if modo==1

%Mensaje de inicio
if jugando==0
fprintf ('Primer turno del jugador \n', jug);
end
jugando=1;

%Cambio de jugador en cada turno


if jug==1
jug=2;
else;
jug=1;
end

%Introduccion jugador 1
if jug==1
fprintf '\n'
fprintf ('Turno del jugador %1.0f \n', jug);
fila=input ('Introduzca la FILA donde colocar su ficha: ');
columna=input ('Introduzca la COLUMNA donde colocar su ficha: ');
fprintf '\n'
end

%Sistema de IA para seleccionar la casilla por la m?quina


%Hace una serie de pruebas y cuando una tiene ?xito no hace las
siguientes
if jug==2
fprintf '\n'
fprintf ('Turno de la maquina \n', jug);
fprintf '\n'
calcula_posicion=0;
while calcula_posicion==0
prueba=1;
%En la prueba uno comprueba si la casilla central est?
ocupada, si no lo est?, la selecciona
if prueba==1
if A(2,2)==0
fila=2;
columna=2;
prueba=0;
calcula_posicion=1;
else
prueba=2;
end
end

%En la prueba dos primero comprueba si ocupando alguna


casilla puede ganar y despu?s
%Si el jugador uno puede ganar ocupando alguna otra
if prueba==2
fila=0;
columna=0;
if A(2,2)==jug
if A(1,2)==jug
filapr=3;
columnapr=2;
if A(filapr,columnapr)==0
fila=3;
columna=2;
end
end
if A(3,2)==jug
filapr=1;
columnapr=2;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(2,1)==jug
filapr=2;
columnapr=3;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(2,3)==jug
filapr=2;
columnapr=1;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(1,1)==jug
filapr=3;
columnapr=3;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(3,3)==jug
filapr=1;
columnapr=1;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(3,1)==jug
filapr=1;
columnapr=3;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(1,3)==jug
filapr=3;
columnapr=1;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
end
if A(1,1)==jug
if A(1,2)==jug
filapr=1;
columnapr=3;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(1,3)==jug
filapr=1;
columnapr=2;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(2,1)==jug
filapr=3;
columnapr=1;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(3,1)==jug
filapr=2;
columnapr=1;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end

end
if A(3,3)==jug
if A(3,2)==jug
filapr=3;
columnapr=1;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(3,1)==jug
filapr=3;
columnapr=2;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(2,3)==jug
filapr=1;
columnapr=3;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(1,3)==jug
filapr=2;
columnapr=3;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
end
if A(1,3)==jug
if A(1,2)==jug
filapr=1;
columnapr=1;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(2,3)==jug
filapr=3;
columnapr=3;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
end
if A(3,1)==jug
if A(2,1)==jug
filapr=1;
columnapr=1;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
if A(3,2)==jug
filapr=3;
columnapr=3;
if A(filapr,columnapr)==0
fila=filapr;
columna=columnapr;
end
end
end

%Si existe alguna combinaci?n para ganar, se


selecciona esa casilla
if fila~=0
prueba=0;
calcula_posicion=1;
jug=2;
else
if jug==2
jug=1;
prueba=2;
else
jug=2;
prueba=3;
end
end
end

%Si no encuentra nada en la prueba 2, o si se encuentra


algo y la casilla est? ocupada, pasa a la prueba 3
if fila ~=0
if A(fila,columna)~=0
prueba=3;
calcula_posicion=0;
end
end

%En la prueba 3 busca una casilla aleatoria, y si ?sta est?


ocupada vuelve a probar
if prueba==3
if fila==0
fila=2;
columna=2;
end

while A(fila,columna)~=0
fila = (fix(rand(1)*2.99))+1;
columna = (fix(rand(1)*2.99))+1;
end
calcula_posicion=1;
prueba=4;
end

end
end

%Si la casilla seleccionada por la m?quina o la persona est? libre, la


ocupa
if A(fila,columna)==0
A(fila,columna)=jug;
contador=contador+1;

%Dibuja la matriz en la consola


for i=1:3
fprintf ('%4.0f%4.0f%4.0f\n',A(i,1),A(i,2),A(i,3))
fprintf '\n'
end

%Comprueba si el jugador que acaba de ocupar una casilla ha


ganado
if A(2,2)==jug
if A(1,2)==jug
if A(3,2)==jug
Stop=jug;
end
end
if A(2,1)==jug
if A(2,3)==jug
Stop=jug;
end
end
if A(1,1)==jug
if A(3,3)==jug
Stop=jug;
end
end
if A(3,1)==jug
if A(1,3)==jug
Stop=jug;
end
end
end
if A(1,1)==jug
if A(1,2)==jug
if A(1,3)==jug
Stop=jug;
end
end
if A(2,1)==jug
if A(3,1)==jug
Stop=jug;
end
end
end
if A(3,3)==jug
if A(3,2)==jug
if A(3,1)==jug
Stop=jug;
end
end
if A(2,3)==jug
if A(1,3)==jug
Stop=jug;
end
end
end
%Si ?ste ha sido el noveno movimiento, acaba la partida
if contador==9 & Stop==0
Stop=3;
end
%Si la casilla estaba ocupada, te penaliza con una p?rdida de turno
else
fprintf '\n'
fprintf 'Esa casilla estaba ocupada, por listo pierdes el
turno \n'
fprintf '\n'
end

%Si ha ganado alguien o la partida ha acabado muestra un mensaje


if Stop==1
jugando=0;
fprintf 'Gana el jugador 1 \n'
end
if Stop==2
jugando=0;
fprintf 'Gana el jugador 2 \n'
end
if Stop==3
jugando=0;
fprintf 'Todo el mundo pierde \n'
end
%Acaba el c?digo para el modo de un jugador
end
end

También podría gustarte