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:
def newGame():
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éatoire
if flag == 0: #Si jeu n'est pas activé
flag = 1 #Alors activation du programme
bou2.config(state= DISABLED) #Désactiver (griser) le bouton démarrer
Serpent_avance() #Activation de la fonction "serpent avance"
def Serpent_avance():
"déplacement du snake" #Fonction qui permet le deplacement du snake
global x, y, dx, dy, flag, flag2, p, pX, pY,score #Global: repertorie les variables utilisées dans la fonction du dessus
if abs(snake[0]-pX) < 17 and abs(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+10
if 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 haut
if 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é droit
if 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 snake
if flag >0: #Quand jeu activé
fen1.after(50,Serpent_avance) #boucler, après 50 millisecondes (vitesse de repetition)
def depl_gauche(event):
global flag, dx, dy
if flag==1:
dx, dy = -20, 0
def depl_droite(event):
global flag, dx, dy
if flag==1:
dx, dy = 20, 0
def depl_haut(event):
global flag, dx, dy
if flag==1:
dx, dy = 0, -20
def depl_bas(event):
global flag, dx, dy
if flag==1:
dx, dy = 0, 20
def pause(): #Pause
global flag, pause, flag2, flag4, score, score1
if flag4 ==1:
if flag == 1 and 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=0
elif flag==0 and flag2 == 1:
flag=1
can1.delete(pause)
can1.delete(score1)
Serpent_avance()
def fullscreen():
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()