Jeu du Morpion ou Tic Tac Toe, avec gestion de l’appui sur les touches et une IA légèrement variée. Se joue en utilisant les touches 1 à 9. La version précédente est disponible ici et la version suivante (plus aboutie) est disponible ici.
from ion import * from kandinsky import * from time import sleep from random import randint score=[0,0] j=0 #L'IA commence t=0.5 def joueur_joue(): global Jeu j=1 k=9 while k==9: #Le tour n'est pas encore joué if keydown(KEY_ONE) and Jeu[6]==" ": k=6 elif keydown(KEY_TWO) and Jeu[7]==" ": k=7 elif keydown(KEY_THREE) and Jeu[8]==" ": k=8 elif keydown(KEY_FOUR) and Jeu[3]==" ": k=3 elif keydown(KEY_FIVE) and Jeu[4]==" ": k=4 elif keydown(KEY_SIX) and Jeu[5]==" ": k=5 elif keydown(KEY_SEVEN) and Jeu[0]==" ": k=0 elif keydown(KEY_EIGHT) and Jeu[1]==" ": k=1 elif keydown(KEY_NINE) and Jeu[2]==" ": k=2 Jeu[k]=j draw_string(str(j),72+30*(k%3),80+30*(k//3),'red') j=0 return None def IA_joue(i): global Jeu j=0 Jeu[i]=j sleep(t) draw_string(str(j),72+30*(i%3),80+30*(i//3),'red') def tr1(k): #Symétrie d'axe vertical if k in [0,2]: return 2-k elif k in [3,5]: return 8-k elif k in [6,8]: return 14-k else: return k def tr2(k): #Symétrie d'axe horizontal if k in [0,6]: return 6-k elif k in [1,7]: return 8-k elif k in [2,8]: return 10-k else: return k def tr3(k): #Symétrie d'axe la 1ère diagonale if k in [1,3]: return 4-k elif k in [5,7]: return 12-k elif k in [2,6]: return 8-k else: return k def tr4(k): #Symétrie d'axe la 2ème diagonale if k in [1,5]: return 6-k elif k in [3,7]: return 10-k elif k in [0,8]: return 8-k else: return k def trans(k): if k1==1: k=tr1(k) if k2==1: k=tr2(k) if k3==1: k=tr3(k) if k4==1: k=tr4(k) return k while True: Jeu=[" "]*9 fin=0 k1=randint(0,1) k2=randint(0,1) k3=randint(0,1) k4=randint(0,1) draw_string("Appuyez sur EXE",84,42,(160,0,255)) while not (keydown(KEY_EXE) or keydown(KEY_OK)):True fill_rect(62,25,255,190,'white') for a in range(65,160,30): fill_rect(65-3,a+8,91,1,'orange') fill_rect(a-3,73,1,90,'orange') draw_string("Joueur0 : "+str(score[0]),170,100,'blue') draw_string("Joueur1 : "+str(score[1]),170,120,'green') j=0 if j==0: # IA qui joue IA_joue(trans(0)) joueur_joue() if Jeu[trans(1)]==1-j: IA_joue(trans(4)) joueur_joue() if Jeu[trans(8)]==" ": IA_joue(trans(8)) else: IA_joue(trans(6)) joueur_joue() if Jeu[trans(3)]==" ": IA_joue(trans(3)) else: IA_joue(trans(2)) elif Jeu[trans(2)]==1-j: IA_joue(trans(6)) joueur_joue() if Jeu[trans(3)]==" ": IA_joue(trans(3)) else: IA_joue(trans(8)) joueur_joue() if Jeu[trans(4)]==" ": IA_joue(trans(4)) else: IA_joue(trans(7)) elif Jeu[trans(3)]==1-j: IA_joue(trans(4)) joueur_joue() if Jeu[trans(8)]==" ": IA_joue(trans(8)) else: IA_joue(trans(2)) joueur_joue() if Jeu[trans(1)]==" ": IA_joue(trans(1)) else: IA_joue(trans(6)) elif Jeu[trans(4)]==1-j: IA_joue(trans(2)) joueur_joue() if Jeu[trans(1)]==" ": IA_joue(trans(1)) else: IA_joue(trans(7)) joueur_joue() if Jeu[trans(3)]==1-j: IA_joue(trans(5)) joueur_joue() if Jeu[trans(8)]==" ": IA_joue(trans(8)) else: IA_joue(trans(6)) elif Jeu[trans(5)]==1-j: IA_joue(trans(3)) joueur_joue() if Jeu[trans(6)]==" ": IA_joue(trans(6)) else: IA_joue(trans(8)) elif Jeu[trans(6)]==1-j: IA_joue(trans(8)) joueur_joue() if Jeu[trans(5)]==" ": IA_joue(trans(5)) else: IA_joue(trans(3)) elif Jeu[trans(8)]==1-j: IA_joue(trans(6)) joueur_joue() if Jeu[trans(3)]==" ": IA_joue(trans(3)) else: IA_joue(trans(5)) elif Jeu[trans(5)]==1-j: IA_joue(trans(4)) joueur_joue() if Jeu[trans(8)]==" ": IA_joue(trans(8)) else: IA_joue(trans(2)) joueur_joue() if Jeu[trans(1)]==" ": IA_joue(trans(1)) else: IA_joue(trans(6)) elif Jeu[trans(6)]==1-j: IA_joue(trans(2)) joueur_joue() if Jeu[trans(1)]==" ": IA_joue(trans(1)) else: IA_joue(trans(8)) joueur_joue() if Jeu[trans(4)]==" ": IA_joue(trans(4)) else: IA_joue(trans(5)) elif Jeu[trans(7)]==1-j: IA_joue(trans(4)) joueur_joue() if Jeu[trans(8)]==" ": IA_joue(trans(8)) else: IA_joue(trans(6)) joueur_joue() if Jeu[trans(3)]==" ": IA_joue(trans(3)) else: IA_joue(trans(2)) elif Jeu[trans(8)]==1-j: IA_joue(trans(2)) joueur_joue() if Jeu[trans(1)]==" ": IA_joue(trans(1)) else: IA_joue(trans(6)) joueur_joue() if Jeu[trans(4)]==" ": IA_joue(trans(4)) else: IA_joue(trans(3)) gagnant=2 #Pas de gagnant for k in range(3): if Jeu[0+3*k] in [0,1] and Jeu[0+3*k]==Jeu[1+3*k]==Jeu[2+3*k]: gagnant=Jeu[0+3*k] if Jeu[0+k] in [0,1] and Jeu[0+k]==Jeu[3+k]==Jeu[6+k]: gagnant=Jeu[0+k] if Jeu[0] in [0,1] and Jeu[0]==Jeu[4]==Jeu[8]: gagnant=Jeu[0] elif Jeu[2] in [0,1] and Jeu[2]==Jeu[4]==Jeu[6]: gagnant=Jeu[2] if gagnant<2: draw_string("Joueur"+str(gagnant)+" a gagné",84,25,'red') score[gagnant]+=1 draw_string("Joueur"+str(gagnant)+" : "+str(score[gagnant]),170,100+20*gagnant,'red') fin=1 elif Jeu.count(0)+Jeu.count(1)==9 and fin==0: draw_string("Personne n'a gagné",68,25) fin=1