Skip to content

Premier jeu avec le module Turtle de Python

Pierre Maujonnet

Cadre

				
					from turtle import * 
setup(400,400)#Fixer une fenêtre de 400x400
def cadrejeu():#Tracé du cadre de jeu
    up()
    goto(-150,-150)
    setheading(0)
    down()
    for i in range(4):
        up()
        goto( ,-150+100*i)# à compléter
        down()
        forward(300)
    right(90)
    for i in range(4):
        up()
        goto( , )# à compléter
        down()
        forward(300)
cadrejeu()
exitonclick()
				
			

Cercle

				
					from turtle import * 
setup(400,400)#Fixer une fenêtre de 400x400
def cercle(rayon):#tracé d'un cercle de centre et de rayon donnés
   up()
   forward( )# à compléter
   left( )# à compléter
   down()
   circle(rayon)
   right(90)
cercle(100)
exitonclick()
				
			

Croix

				
					from turtle import *
from math import *
setup(400,400)#Fixer une fenêtre de 400x400
def croix(l):#tracé d'une croix de centre donné et de largeur 2l
    up()
    goto(position()[0]-l,position()[1]+l)
    setheading(315)
    down()
    forward(2*l*sqrt(2))
    left( )# à compléter
    up()
    forward( )# à compléter
    left( )# à compléter
    down()
    forward(2*l*sqrt(2))
    left(45)
croix(100)
exitonclick()
				
			

Deux tortues

				
					from turtle import * 
setup(400,400)#Fixer une fenêtre de 400x400
title("Deux nouvelles tortues")
bgcolor("black")
def deuxtortues():#création de deux nouvelles tortues
    premiere=Turtle()
    seconde=Turtle()
    premiere.color("red")
    seconde.color("blue")
    premiere.up()
    premiere.goto(-100,-100)
    premiere.down()
    premiere.forward(250)
    premiere.left(90)
    seconde.circle(80)
    premiere.forward(200)
    seconde.right(90)
    seconde.forward(100)
deuxtortues()
exitonclick()
				
			

Trois tortues

				
					from turtle import * 
from math import *
setup(400,400)#Fixer une fenêtre de 400x400
title("Trois nouvelles tortues")
bgcolor("blue")
def troistortues():#création de trois nouvelles tortues
    premiere=Turtle()
    seconde=Turtle()
    troisieme=Turtle()
    premiere.color("red")
    seconde.color("orange")
    troisieme.color("yellow")
    premiere.up()
    premiere.goto(-100,-100)
    premiere.down()
    for i in range(4):
        premiere.forward(200)
        premiere.left(90)
    seconde.up()
    seconde.goto(0,-100)
    seconde.left(45)
    seconde.down()
    for i in range(4):
        seconde.forward(100*sqrt(2))
        seconde.left(90)
    troisieme.up()
    troisieme.goto( , )# à compléter
    troisieme.down()
    for i in range(4):
        troisieme.forward( )# à compléter
        troisieme.left( )# à compléter
troistortues()
exitonclick()
				
			

Cliquer dans un cercle

				
					from turtle import * 
setup(400,400)
hideturtle()#cache la tortue
speed(10)#augmente la vitesse à 10
seconde=Turtle()#création d'une nouvelle tortue
seconde.hideturtle()#cache la seconde tortue
seconde.speed(10)#augmente la vitesse de la seconde tortue à 10
def cercle(rayon):#tracé d'un cercle de centre et de rayon donnés
   up()
   forward(rayon)
   left(90)
   down()
   circle(rayon)
   right(90)
   
def clicdanscercle(x,y):#analyse si le points de coordonnées (x,y) est dans le disque
    seconde.clear()
    seconde.up()
    seconde.goto(-50,150)
    seconde.color("red")
    if (x)**2+(y)**2<=100**2:
        seconde.write("Dedans", font = ("Arial", 32, "bold"))
    else:
        seconde.write("Dehors", font = ("Arial", 32, "bold"))
cercle(100)#tracé du cercle
onscreenclick(clicdanscercle)#en cas d'appui sur un bouton de la souris
#renvoie les coordonnées du clic de la souris dans la fonction clicdanscercle
mainloop()#indique la boucle d'écoute des événements (clavier ou souris)

				
			

Cliquer dans un cercle (2)

				
					from turtle import * 
from math import *
setup(500,500)
hideturtle()
speed(10)
seconde=Turtle()
seconde.hideturtle()
seconde.speed(10)
def cercle(rayon):#tracé d'un cercle de centre et de rayon donnés
   up()
   forward(rayon)
   left(90)
   down()
   circle(rayon)
   right(90)
   
def tracecible():#tracé de la cible
    for i in range(1,5):
        up()
        goto(0,0)
        down()
        cercle(30*i)
        
def clicdanscible(x,y):#attribue un nombre selon les coordonnées du clic de l'utilisateur
    seconde.clear()
    seconde.up()
    seconde.goto(-50,150)
    seconde.color("red")
    d=sqrt(x**2+y**2)
    if  :# à compléter
        seconde.write("10 points", font = ("Arial", 32, "bold"))
    elif  :# à compléter
        seconde.write("5 points", font = ("Arial", 32, "bold"))
    elif  :# à compléter
        seconde.write("2 points", font = ("Arial", 32, "bold"))
    elif  :# à compléter
        seconde.write("1 points", font = ("Arial", 32, "bold"))
    else:
        seconde.write("0 point", font = ("Arial", 32, "bold"))
tracecible()
onscreenclick(clicdanscible)
mainloop()

				
			

Cliquer dans un cercle (3)

				
					from turtle import * 
from math import *
setup(500,500)
hideturtle()
speed(10)
seconde=Turtle()
seconde.hideturtle()
seconde.speed(10)
def cercle(rayon):
   up()
   forward(rayon)
   left(90)
   down()
   circle(rayon)
   right(90)
   
def tracecible():
    for i in range(1,5):
        up()
        goto(0,0)
        down()
        cercle(30*i)
totalpoints=0
def clicdanscible2(x,y):#fonction modifiée pour lire le total des points
    global totalpoints
    seconde.clear()
    seconde.up()
    seconde.goto(-50,150)
    seconde.color("red")
    d=sqrt(x**2+y**2)
    if d<=30:
        seconde.write("10 points", font = ("Arial", 32, "bold"))
        totalpoints+=10
    elif d<=60:
        seconde.write("5 points", font = ("Arial", 32, "bold"))
        totalpoints+=5
    elif d<=90:
        seconde.write("2 points", font = ("Arial", 32, "bold"))
        totalpoints+=2
    elif d<=120:
        seconde.write("1 points", font = ("Arial", 32, "bold"))
        totalpoints+=1
    else:
        seconde.write("0 point", font = ("Arial", 32, "bold"))
    seconde.up()
    seconde.goto(-180,-180)
    seconde.write("Total des points : "+str(totalpoints), font = ("Arial", 32, "bold"))
tracecible()
onscreenclick(clicdanscible2)
mainloop()

				
			

Tracer au clic

				
					from turtle import * 
from math import *
setup(450,450)#Fixer une fenêtre de 400x400
def cadrejeu():#Tracé du cadre de jeu
    up()
    goto(-150,-150)
    setheading(0)
    down()
    for i in range(4):
        up()
        goto(-150,-150+100*i)
        down()
        forward(300)
    right(90)
    for i in range(4):
        up()
        goto(150-100*i,150)
        down()
        forward(300)
def cercle(rayon):#tracé d'un cercle de centre et de rayon donnés
   up()
   forward(rayon)
   left(90)
   down()
   circle(rayon)
   right(90)
def croix(l):#tracé d'une croix de centre donné et de largeur 2l
    up()
    goto(position()[0]-l,position()[1]+l)
    setheading(315)
    down()
    forward(2*l*sqrt(2))
    left(135)
    up()
    forward(2*l)
    left(135)
    down()
    forward(2*l*sqrt(2))
    left(45)
hideturtle()#cache la tortue
speed(10)#augmente la vitesse à 10
seconde=Turtle()#création d'une nouvelle tortue
seconde.hideturtle()#cache la seconde tortue
seconde.speed(10)#augmente la vitesse de la seconde tortue à 10
ncoup=0#compte le nombre de coups joués
def morpion1(x,y):#trace en alternance un cercle et une croix centrés sur les clics successifs
    up()
    goto(x,y)
    global ncoup
    if  :# à compléter
        cercle(40)
    else:#sinon tracer une croix
        croix(40)
    ncoup= # à compléter
onscreenclick(morpion1)
mainloop()

				
			

Tracer au clic (2)

				
					from turtle import * 
from math import *
setup(400,400)#Fixer une fenêtre de 400x400
def cadrejeu():#Tracé du cadre de jeu
    up()
    goto(-150,-150)
    setheading(0)
    down()
    for i in range(4):
        up()
        goto(-150,-150+100*i)
        down()
        forward(300)
    right(90)
    for i in range(4):
        up()
        goto(150-100*i,150)
        down()
        forward(300)
def cercle(rayon):#tracé d'un cercle de centre et de rayon donnés
   up()
   forward(rayon)
   left(90)
   down()
   circle(rayon)
   right(90)
def croix(l):#tracé d'une croix de centre donné et de largeur 2l
    up()
    goto(position()[0]-l,position()[1]+l)
    setheading(315)
    down()
    forward(2*l*sqrt(2))
    left(135)
    up()
    forward(2*l)
    left(135)
    down()
    forward(2*l*sqrt(2))
    left(45)
hideturtle()#cache la tortue
speed(10)#augmente la vitesse à 10
seconde=Turtle()#création d'une nouvelle tortue
seconde.hideturtle()#cache la seconde tortue
seconde.speed(10)#augmente la vitesse de la seconde tortue à 10
ncoup=0#compte le nombre de coups joués
def calcul(x):#calcul du recentrage
    return  # à compléter
def morpion2(x,y):#reprend la première fonction en recentrant les cercles et les croix
    global ncoup
    if  :# à compléter
        up()
        x=calcul(x)#recentrage en abscisses
        y=calcul(y)#recentrage en ordonnées
        goto(x,y)
        if ncoup%2==0:#si le numéro du coup est pair tracer un cercle
            cercle(40)
        else:#sinon tracer une croix
            croix(40)
        ncoup+=1
cadrejeu()
onscreenclick(morpion2)
mainloop()

				
			

Tracer au clic (3)

				
					from turtle import * 
from math import *
from numpy import *
setup(400,400)#Fixer une fenêtre de 400x400
def cadrejeu():#Tracé du cadre de jeu
    up()
    goto(-150,-150)
    setheading(0)
    down()
    for i in range(4):
        up()
        goto(-150,-150+100*i)
        down()
        forward(300)
    right(90)
    for i in range(4):
        up()
        goto(150-100*i,150)
        down()
        forward(300)
def cercle(rayon):#tracé d'un cercle de centre et de rayon donnés
   up()
   forward(rayon)
   left(90)
   down()
   circle(rayon)
   right(90)
def croix(l):#tracé d'une croix de centre donné et de largeur 2l
    up()
    goto(position()[0]-l,position()[1]+l)
    setheading(315)
    down()
    forward(2*l*sqrt(2))
    left(135)
    up()
    forward(2*l)
    left(135)
    down()
    forward(2*l*sqrt(2))
    left(45)
hideturtle()#cache la tortue
speed(10)#augmente la vitesse à 10
seconde=Turtle()#création d'une nouvelle tortue
seconde.hideturtle()#cache la seconde tortue
seconde.speed(10)#augmente la vitesse de la seconde tortue à 10
ncoup=0#compte le nombre de coups joués
def calcul(x):#fonction de calcul
    return 100*((x+50)//100)
tabl=array([[0,0,0],[0,0,0],[0,0,0]])#crée un tableau de 3 lignes et 3 colonnes ne contenant que des 0
def calcul2(x):#calcul du numéro de ligne ou de colonne correspondant
    return int((x+50)//100+1)
def morpion3(x,y):#reprend la seconde fonction en enregistrant les figures tracées
    global tabl, ncoup
    if x>-150 and y>-150 and x<150 and y<150:
        xnum=calcul2(x)
        ynum=calcul2(y)
        if tabl[xnum,ynum]==0:#si la cellule est exempte de dessin 
            up()
            x=calcul(x)
            y=calcul(y)
            goto(x,y)
            if ncoup%2==0:
                cercle(40)
                tabl[xnum,ynum]=1#la cellule est complétée par le joueur 1
            else:
                croix(40)
                tabl[xnum,ynum]=-1#la cellule est complétée par le joueur 2
            ncoup+=1
cadrejeu()
onscreenclick(morpion3)
mainloop()

				
			

Vérification du résultat

				
					from turtle import * 
from math import *
from numpy import *
setup(400,400)#Fixer une fenêtre de 400x400
def cadrejeu():#Tracé du cadre de jeu
    up()
    goto(-150,-150)
    setheading(0)
    down()
    for i in range(4):
        up()
        goto(-150,-150+100*i)
        down()
        forward(300)
    right(90)
    for i in range(4):
        up()
        goto(150-100*i,150)
        down()
        forward(300)
def cercle(rayon):#tracé d'un cercle de centre et de rayon donnés
   up()
   forward(rayon)
   left(90)
   down()
   circle(rayon)
   right(90)
def croix(l):#tracé d'une croix de centre donné et de largeur 2l
    up()
    goto(position()[0]-l,position()[1]+l)
    setheading(315)
    down()
    forward(2*l*sqrt(2))
    left(135)
    up()
    forward(2*l)
    left(135)
    down()
    forward(2*l*sqrt(2))
    left(45)
hideturtle()#cache la tortue
speed(10)#augmente la vitesse à 10
seconde=Turtle()#création d'une nouvelle tortue
seconde.hideturtle()#cache la seconde tortue
seconde.speed(10)#augmente la vitesse de la seconde tortue à 10
ncoup=0#compte le nombre de coups joués
def calcul(x):#fonction de calcul
    return 100*((x+50)//100)
tabl=array([[0,0,0],[0,0,0],[0,0,0]])#crée un tableau de 3 lignes et 3 colonnes ne contenant que des 0
def calcul2(x):#calcul du numéro de ligne ou de colonne correspondant
    return int((x+50)//100+1)

def verification(tableau,n):#fonction permettant de vérifier si la partie est gagnée ou nulle
    if tableau[2,0]==1 and tableau[1,1]==1 and tableau[0,2]==1:
        vainqueur(1)
    if tableau[2,0]==-1 and tableau[1,1]==-1 and tableau[0,2]==-1:
        vainqueur(-1)
    if tableau[0,0]==1 and tableau[1,1]==1 and tableau[2,2]==1:
        # à compléter
    if tableau[0,0]==-1 and tableau[1,1]==-1 and tableau[2,2]==-1:
        # à compléter
    for k in range(3):
        if tableau[k,0]==1 and tableau[k,1]==1 and tableau[k,2]==1:
            # à compléter
        if tableau[k,0]==-1 and tableau[k,1]==-1 and tableau[k,2]==-1:
            # à compléter
        if tableau[0,k]==1 and tableau[1,k]==1 and tableau[2,k]==1:
            # à compléter
        if tableau[0,k]==-1 and tableau[1,k]==-1 and tableau[2,k]==-1:
            # à compléter
        if tableau[0,0]==1 and tableau[1,1]==1 and tableau[2,2]==1:
            # à compléter
        if tableau[0,0]==-1 and tableau[1,1]==-1 and tableau[2,2]==-1:
            # à compléter
    if n==9:
        vainqueur(0)
        
def vainqueur(v):#fonction permettant d'afficher le résultat
    global tabl,ncoup,test
    up()
    goto(-155,-16)
    color("red")
    if v==1:
        write("Le joueur 1 a gagné !", font = ("Arial", 32, "bold"))
    elif v==-1 :
        write("Le joueur 2 a gagné !", font = ("Arial", 32, "bold"))
    else :
        write("La partie est nulle !", font = ("Arial", 32, "bold"))
    
test=True#variable booléenne permettant de ne pas lancé deux tracés simultanément
title("Jeu de morpion")#définit le titre de la fenêtre
def morpion4(x,y):#reprend la troisième fonction en vérifiant si un joueur a gagné
    global tabl, ncoup, test
    if x>-150 and y>-150 and x<150 and y<150 and test:
        test=False#un autre tracé ne peut pas être lancé
        xnum=calcul2(x)
        ynum=calcul2(y)
        if tabl[xnum,ynum]==0: 
            up()
            x=calcul(x)
            y=calcul(y)
            goto(x,y)
            if ncoup%2==0:
                cercle(40)
                tabl[xnum,ynum]=1
                test=True#un autre tracé peut être lancé
            else:
                croix(40)
                tabl[xnum,ynum]=-1
                test=True#un autre tracé peut être lancé
            ncoup+=1
            verification(tabl,ncoup)

cadrejeu()
onscreenclick(morpion4)
mainloop()

				
			

Finalisation

				
					from turtle import * 
from math import *
from numpy import *
import sys
setup(400,400)#Fixer une fenêtre de 400x400
def cadrejeu():#Tracé du cadre de jeu
    up()
    goto(-150,-150)
    setheading(0)
    down()
    for i in range(4):
        up()
        goto(-150,-150+100*i)
        down()
        forward(300)
    right(90)
    for i in range(4):
        up()
        goto(150-100*i,150)
        down()
        forward(300)
def cercle(rayon):#tracé d'un cercle de centre et de rayon donnés
   up()
   forward(rayon)
   left(90)
   down()
   circle(rayon)
   right(90)
def croix(l):#tracé d'une croix de centre donné et de largeur 2l
    up()
    goto(position()[0]-l,position()[1]+l)
    setheading(315)
    down()
    forward(2*l*sqrt(2))
    left(135)
    up()
    forward(2*l)
    left(135)
    down()
    forward(2*l*sqrt(2))
    left(45)
hideturtle()#cache la tortue
speed(10)#augmente la vitesse à 10
seconde=Turtle()#création d'une nouvelle tortue
seconde.hideturtle()#cache la seconde tortue
seconde.speed(10)#augmente la vitesse de la seconde tortue à 10
ncoup=0#compte le nombre de coups joués
def calcul(x):#fonction de calcul
    return 100*((x+50)//100)
tabl=array([[0,0,0],[0,0,0],[0,0,0]])#crée un tableau de 3 lignes et 3 colonnes ne contenant que des 0
def calcul2(x):#calcul du numéro de ligne ou de colonne correspondant
    return int((x+50)//100+1)

def verification(tableau,n):#fonction permettant de vérifier si la partie est gagnée ou nulle
    if tableau[2,0]==1 and tableau[1,1]==1 and tableau[0,2]==1:
        vainqueur(1)
    if tableau[2,0]==-1 and tableau[1,1]==-1 and tableau[0,2]==-1:
        vainqueur(-1)
    if tableau[0,0]==1 and tableau[1,1]==1 and tableau[2,2]==1:
        vainqueur(1)
    if tableau[0,0]==-1 and tableau[1,1]==-1 and tableau[2,2]==-1:
        vainqueur(-1)
    for k in range(3):
        if tableau[k,0]==1 and tableau[k,1]==1 and tableau[k,2]==1:
            vainqueur(1)
        if tableau[k,0]==-1 and tableau[k,1]==-1 and tableau[k,2]==-1:
            vainqueur(-1)
        if tableau[0,k]==1 and tableau[1,k]==1 and tableau[2,k]==1:
            vainqueur(1)
        if tableau[0,k]==-1 and tableau[1,k]==-1 and tableau[2,k]==-1:
            vainqueur(-1)
        if tableau[0,0]==1 and tableau[1,1]==1 and tableau[2,2]==1:
            vainqueur(1)
        if tableau[0,0]==-1 and tableau[1,1]==-1 and tableau[2,2]==-1:
            vainqueur(-1)
    if n==9:
        vainqueur(0)
        
def vainqueur(v):#fonction permettant d'afficher le résultat
    global tabl,ncoup,test
    up()
    goto(-155,-16)
    color("red")
    if v==1:
        write("Le joueur 1 a gagné !", font = ("Arial", 32, "bold"))
    elif v==-1 :
        write("Le joueur 2 a gagné !", font = ("Arial", 32, "bold"))
    else :
        write("La partie est nulle !", font = ("Arial", 32, "bold"))
    if (textinput("Rejouer ?", "Rejouer ? Veuillez entrer 'oui' si c'est le cas.") == 'oui'):
        color("black")
        clear()
        ncoup=0
        test=True
        tabl=array([[0,0,0],[0,0,0],[0,0,0]])
        main()
    else:
        bye()
        sys.exit(0)
    
test=True#variable booléenne permettant de ne pas lancé deux tracés simultanément
title("Jeu de morpion")#définit le titre de la fenêtre
def morpion4(x,y):#reprend la troisième fonction en vérifiant si un joueur a gagné
    global tabl, ncoup, test
    if x>-150 and y>-150 and x<150 and y<150 and test:
        test=False#un autre tracé ne peut pas être lancé
        xnum=calcul2(x)
        ynum=calcul2(y)
        if tabl[xnum,ynum]==0: 
            up()
            x=calcul(x)
            y=calcul(y)
            goto(x,y)
            if ncoup%2==0:
                cercle(40)
                tabl[xnum,ynum]=1
                test=True#un autre tracé peut être lancé
            else:
                croix(40)
                tabl[xnum,ynum]=-1
                test=True#un autre tracé peut être lancé
            ncoup+=1
            verification(tabl,ncoup)
def main():       
    cadrejeu()
    onscreenclick(morpion4)
    mainloop()
main()

				
			

Pour jouer seul

				
					from turtle import * 
from math import *
from numpy import *
import sys
import random
setup(400,400)#Fixer une fenêtre de 400x400
def cadrejeu():#Tracé du cadre de jeu
    up()
    goto(-150,-150)
    setheading(0)
    down()
    for i in range(4):
        up()
        goto(-150,-150+100*i)
        down()
        forward(300)
    right(90)
    for i in range(4):
        up()
        goto(150-100*i,150)
        down()
        forward(300)
def cercle(rayon):#tracé d'un cercle de centre et de rayon donnés
   up()
   forward(rayon)
   left(90)
   down()
   circle(rayon)
   right(90)
def croix(l):#tracé d'une croix de centre donné et de largeur 2l
    up()
    goto(position()[0]-l,position()[1]+l)
    setheading(315)
    down()
    forward(2*l*sqrt(2))
    left(135)
    up()
    forward(2*l)
    left(135)
    down()
    forward(2*l*sqrt(2))
    left(45)
hideturtle()#cache la tortue
speed(10)#augmente la vitesse à 10
seconde=Turtle()#création d'une nouvelle tortue
seconde.hideturtle()#cache la seconde tortue
seconde.speed(10)#augmente la vitesse de la seconde tortue à 10
ncoup=0#compte le nombre de coups joués
def calcul(x):#fonction de calcul
    return 100*((x+50)//100)
tabl=array([[0,0,0],[0,0,0],[0,0,0]])#crée un tableau de 3 lignes et 3 colonnes ne contenant que des 0
def calcul2(x):#calcul du numéro de ligne ou de colonne correspondant
    return int((x+50)//100+1)

def verification(tableau,n):#fonction permettant de vérifier si la partie est gagnée ou nulle
    if tableau[2,0]==1 and tableau[1,1]==1 and tableau[0,2]==1:
        vainqueur(1)
    if tableau[2,0]==-1 and tableau[1,1]==-1 and tableau[0,2]==-1:
        vainqueur(-1)
    if tableau[0,0]==1 and tableau[1,1]==1 and tableau[2,2]==1:
        vainqueur(1)
    if tableau[0,0]==-1 and tableau[1,1]==-1 and tableau[2,2]==-1:
        vainqueur(-1)
    for k in range(3):
        if tableau[k,0]==1 and tableau[k,1]==1 and tableau[k,2]==1:
            vainqueur(1)
        if tableau[k,0]==-1 and tableau[k,1]==-1 and tableau[k,2]==-1:
            vainqueur(-1)
        if tableau[0,k]==1 and tableau[1,k]==1 and tableau[2,k]==1:
            vainqueur(1)
        if tableau[0,k]==-1 and tableau[1,k]==-1 and tableau[2,k]==-1:
            vainqueur(-1)
        if tableau[0,0]==1 and tableau[1,1]==1 and tableau[2,2]==1:
            vainqueur(1)
        if tableau[0,0]==-1 and tableau[1,1]==-1 and tableau[2,2]==-1:
            vainqueur(-1)
    if n==9:
        vainqueur(0)
        
def vainqueur(v):#fonction permettant d'afficher le résultat
    global tabl,ncoup,test
    up()
    goto(-155,-16)
    color("red")
    if v==1:
        write("Le joueur 1 a gagné !", font = ("Arial", 22, "bold"))
    elif v==-1 :
        write("Le joueur 2 a gagné !", font = ("Arial", 22, "bold"))
    else :
        write("La partie est nulle !", font = ("Arial", 22, "bold"))
    if (textinput("Rejouer ?", "Rejouer ? Veuillez entrer 'oui' si c'est le cas.") == 'oui'):
        color("black")
        clear()
        ncoup=0
        test=True
        tabl=array([[0,0,0],[0,0,0],[0,0,0]])
        main()
    else:
        bye()
        sys.exit(0)
    
test=True#variable booléenne permettant de ne pas lancé deux tracés simultanément
title("Jeu de morpion")#définit le titre de la fenêtre
def ia(tableau):
    t=True
    for k in range(3):
        if tableau[0,k]+tableau[1,k]+tableau[2,k]==-2:
             for l in range(3):
                 if tableau[l,k]==0:
                     t=False
                     return l,k
        if tableau[k,0]+tableau[k,1]+tableau[k,2]==-2:
             for l in range(3):
                 if tableau[k,l]==0:
                     t=False
                     return k,l
    if tableau[0,0]+tableau[1,1]+tableau[2,2]==-2:
        for l in range(3):
            if tableau[l,l]==0:
                t=False
                return l,l
    if tableau[2,0]+tableau[1,1]+tableau[0,2]==-2:
        for l in range(3):
            if tableau[2-l,l]==0:
                t=False
                return 2-l,l
    for k in range(3):
        if tableau[0,k]+tableau[1,k]+tableau[2,k]==2:
             for l in range(3):
                 if tableau[l,k]==0:
                     t=False
                     return l,k            
        if tableau[k,0]+tableau[k,1]+tableau[k,2]==2:
             for l in range(3):
                 if tableau[k,l]==0:
                     t=False
                     return k,l
    if tableau[0,0]+tableau[1,1]+tableau[2,2]==2:
        for l in range(3):
            if tableau[l,l]==0:
                t=False
                return l,l
    if tableau[2,0]+tableau[1,1]+tableau[0,2]==2:
        for l in range(3):
            if tableau[2-l,l]==0:
                t=False
                return 2-l,l
    if tableau[1,1]==0:
        t=False
        return 1,1
    while t :
        xt=random.randint(0,2)
        yt=random.randint(0,2)
        if tableau[xt,yt]==0:
             t=False
             return xt,yt
def morpion5(x,y):#reprend la quatrième fonction avec ia
    global tabl, ncoup, test
    if x>-150 and y>-150 and x<150 and y<150 and test:
        test=False
        xnum=calcul2(x)
        ynum=calcul2(y)
        if tabl[xnum,ynum]==0: 
            up()
            x=calcul(x)
            y=calcul(y)
            goto(x,y)
            cercle(40)
            tabl[xnum,ynum]=1
            ncoup+=1
            verification(tabl,ncoup)
            xnum,ynum=ia(tabl)
            up()
            x=100*(xnum-1)
            y=100*(ynum-1)
            goto(x,y)
            croix(40)
            tabl[xnum,ynum]=-1
            test=True
            ncoup+=1
            verification(tabl,ncoup)
            
def main():       
    cadrejeu()
    onscreenclick(morpion5)
    mainloop()
main()

				
			

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.