% jeu de l'ordinateur

cpsj=get(gcf,'userdata');
cpso=get(gca,'userdata');
coups=[cpsj, cpso];

if length(coups)<9
strat=findobj('tag','strategie');
if ~get(strat,'value')
 	% nombre au hasard entre 1 et 9
	no=fix(rand*9)+1;
	while ismember(no,coups)
		no=fix(rand*9)+1;
	end
else
	% jouer avec stratégie
	coupsjoueur=paires(cpsj);
	coupsordina=paires(cpso);
	m=magic(3);
	triplets=[m(1,:);m(2,:);m(3,:);m(:,1)';m(:,2)';m(:,3)';diag(m)';diag(rot90(m))'];
	% 2 valeurs dans un triplet pour l'ordinateur -> jouer le 3eme
	[li,co]=size(triplets);
	no=0;
	for i=1:size(coupsordina,1);
	 for j=1:li
		if sum(ismember(coupsordina(i,:),triplets(j,:)))==2
			no=setdiff(triplets(j,:),coupsordina(i,:));
		end
	 end
 	end
 	if ismember(no,coups)
		no=0;
	end
	
	% 2 valeurs dans un triplet pour le joueur -> ordi joue la valeur manquante
	if no==0
		% empêcher le joueur
		for i=1:size(coupsjoueur,1);
	 		for j=1:li
				if sum(ismember(coupsjoueur(i,:),triplets(j,:)))==2
					no=setdiff(triplets(j,:),coupsjoueur(i,:));
				end
	 		end
		end
	end
	if ismember(no,coups)
		no=0;
	end
	
	% sinon au hasard dans un triplet possible
	if no==0
		switch length(cpso)
		case 0	% l'ordinateur n'a pas encore joué
			if length(cpsj)==0	% 1er coup à l'ordi
				no=5;
			elseif ismember(5,cpsj)	% 1er coup du joueur = 5
				cp=[2 4 6 8];
				nb=fix(rand*4)+1;
				while ismember(cp(nb),coups)
					nb=fix(rand*4)+1;
				end
				no=cp(nb);
			else	% 1er coup du joueur ‚ 5
				no=5;
			end
		case 1	
				if sum(ismember([2 4 6 8],coups))>0
					no=2*(fix(rand*4)+1);
					while ismember(no,coups)
						no=2*(fix(rand*4)+1);
					end
				else
					cp=[1 3 7 9];
					nb=fix(rand*4)+1;
					while ismember(cp(nb),coups)
						nb=fix(rand*4)+1;
					end
					no=cp(nb);
				end
		end
	end
end


obj=findobj('tag',['ch',int2str(no)]);
set(obj,'string','X','foregroundcolor','b');
ordina=get(gca,'userdata');
ordina=[ordina, no];
set(gca,'userdata',ordina);
ok=testquinze(ordina);
if ok
	fin(0)
end
end
