Bonjour,
je fais appelle à la communauté de comment ça marche car je n'arrive pas à comprendre pourquoi mon carré ne veut pas se déplacer, c'est le début de mon snake et il ne fonctionne pas du tout. :/ J'avais déjà présenter un snake sous une autre forme et j'ai donc refait le snake avec des listes mais ça ne semble pas fonctionner.
Merci pour votre aide
from tkinter import*from random import*from PIL import Image, ImageTk
# ******************# * *# * Fonctions *# * *# ******************# on creer une partie:defnewGame():global flag, pX, pY, p, flag2, flag4, score,carre1
can1.delete(text1)
can1.delete(img1)
flag2=1
flag4=1
score=0
pX =randrange(10, fen1.winfo_screenwidth()-150)
pY =randrange(10, fen1.winfo_screenheight()-150)
p=can1.create_oval(pX, pY, pX+10, pY+10,fill="green")#création d'une pomme à un endroit aléatoireif flag ==0:#Si jeu n'est pas activé
flag =1#Alors activation du programme
bou2.config(state= DISABLED)#Désactiver (griser) le bouton démarrerSerpent_avance()#Activation de la fonction "serpent avance"defSerpent_avance():"déplacement du snake"#Fonction qui permet le deplacement du snakeglobal x, y, dx, dy, flag, flag2, p, pX, pY,score #Global: repertorie les variables utilisées dans la fonction du dessusifabs(snake[0]-pX)<17andabs(snake[1]-pY)<17:#Quand serpent passe sur la pomme,
can1.create_oval(x, y, x+20, y+20, fill="black")
can1.delete(p)# disparition
pX =randrange(10, fen1.winfo_screenwidth()-150)#réapparition de la pomme
pY =randrange(10, fen1.winfo_screenheight()-150)
p=can1.create_oval(pX, pY, pX+10, pY+10,fill="green")
score=score+10if snake[0]> fen1.winfo_screenwidth()-100:#Quand serpent arrive sur le mur coté droit,
snake[0]=10
snake[2]=30#Réapparait de l'autre coté if snake[1]> fen1.winfo_screenheight()-5:#IDEM mur du bas
snake[1]=10
snake[3]=30#Réapparait au mur du hautif snake[0]<5:#Quand serpent arrive sur le mur coté gauche
snake[0]=fen1.winfo_screenwidth()-100
snake[2]=fen1.winfo_screenwidth()-120#Réapparait mur coté droitif snake[1]<5:#Quand serpent arrive sur le mur haut
snake[1]=fen1.winfo_screenheight()-10#Réapparait sur le mur bas
snake[3]=fen1.winfo_screenheight()-30
snake[0]=snake[0]+dx # faire avancer le serpent automatiquement
snake[1]=snake[1]+dx
snake[2]=snake[0]+20
snake[3]=snake[1]+20
can1.coords(Serpent, snake[0], snake[11], snake[2], snake[3])# coordonées du snakeif flag >0:#Quand jeu activé
fen1.after(50,Serpent_avance)#boucler, après 50 millisecondes (vitesse de repetition)defdepl_gauche(event):global flag, dx, dy
if flag==1:
dx, dy =-20,0defdepl_droite(event):global flag, dx, dy
if flag==1:
dx, dy =20,0defdepl_haut(event):global flag, dx, dy
if flag==1:
dx, dy =0,-20defdepl_bas(event):global flag, dx, dy
if flag==1:
dx, dy =0,20defpause():#Pauseglobal flag, pause, flag2, flag4, score, score1
if flag4 ==1:if flag ==1and flag2 ==1:
pause=can1.create_text(fen1.winfo_screenwidth()/2-100,fen1.winfo_screenheight()/2-5,font=('Fixedsys',18),text="PAUSE")
score1=can1.create_text(150,150,font=('Fixedsys',18),text="Score : "+str(score))
can1.create_text(fen1.winfo_screenwidth(),fen1.winfo_screenheight(),font=('Fixedsys',18),text=print(score))
flag=0elif flag==0and flag2 ==1:
flag=1
can1.delete(pause)
can1.delete(score1)Serpent_avance()deffullscreen():
fen1.overrideredirect(1)
fen1.geometry("%dx%d+0+0"%(w, h))# *********************# * Programme *# * Princal *# *********************#création de la fenêtre
fen1 =Tk()
fen1.title("Snake")
x, y =(fen1.winfo_screenheight()+250)/2,(fen1.winfo_screenwidth()-250)/2
dx, dy =20,0
flag =0
flag4=0#pour ne pas appuyer sur pause qi le jeu ne démarre pas
image_tk2= ImageTk.PhotoImage(Image.open("serpent.jpg"))
image_tk = ImageTk.PhotoImage(Image.open("image.jpg"))#on la transforme pour tk#on la met dans le canvas
can1 =Canvas(fen1,width=fen1.winfo_screenwidth()-100, height=fen1.winfo_screenheight())
can1.pack()
img = can1.create_image(0,0, anchor = NW, image=image_tk)
can1.pack(side=LEFT, padx =10, pady =10)
snake=[x, y, x+20, y+20]
Serpent=[can1.create_rectangle(snake[0], snake[1], snake[2], snake[3], fill="yellow")]
img1 = can1.create_image(0,0, anchor = NW, image=image_tk2)
text1=can1.create_text(fen1.winfo_screenwidth()/2,fen1.winfo_screenheight()-400,font=('Fixedsys',18),text="appuyer sur Démarrer")
bou2 =Button(fen1, text='Démarrer', width =8, command = newGame)
bou2.pack()
bou3=Button(fen1, text='Pause',width=8,command= pause)
bou3.pack()
bou4 =Button(fen1, text='Quitter', width=8, command=fen1.destroy)
bou4.pack(side=BOTTOM)
bou5 =Button(fen1, text='Plein écran', width=8, command=fullscreen)
bou5.pack()# Quelques exemples de touches
fen1.bind("<Up>", depl_haut)#haut
fen1.bind("<Down>", depl_bas)#bas
fen1.bind("<Left>", depl_gauche)#gauche
fen1.bind("<Right>", depl_droite)#Droite#lancement du gestionnaire d'évènement
fen1.mainloop()