from tkinter import *
from random import randrange
# Déclarations des fonctions
# Cette fonction va permettre de mettre le serpent en mouvement de manière automatique
def move():
global dx
global dy
global x
global y
global eat
global flag
global pomme
global serpent
global coord_serpent
global direction
global score
# Le repas du petit serpent
if coord_serpent[0]==x and coord_serpent[1]==y:
can1.delete(pomme)
eat=1
coord=len(coord_serpent)
score=score+10
print (score)
if direction==1:
x1=coord_serpent[coord-4]
y1=coord_serpent[coord-3]
x2=coord_serpent[coord-2]
y2=coord_serpent[coord-1]
x1=x1+10
x2=x2+10
y2=y2+10
coord_serpent.append(x1)
coord_serpent.append(y1)
coord_serpent.append(x2)
coord_serpent.append(y2)
serpent.append(can1.create_rectangle(x1,y1,x2,y2,fill="red"))
if direction==2:
x1=coord_serpent[coord-4]
y1=coord_serpent[coord-3]
x2=coord_serpent[coord-2]
y2=coord_serpent[coord-1]
x1=x1-10
x2=x2-10
y2=y2+10
coord_serpent.append(x1)
coord_serpent.append(y1)
coord_serpent.append(x2)
coord_serpent.append(y2)
serpent.append(can1.create_rectangle(x1,y1,x2,y2,fill="red"))
if direction==3:
x1=coord_serpent[coord-4]
y1=coord_serpent[coord-3]
x2=coord_serpent[coord-2]
y2=coord_serpent[coord-1]
y1=y1+10
y2=y2+10
coord_serpent.append(x1)
coord_serpent.append(y1)
coord_serpent.append(x2)
coord_serpent.append(y2)
serpent.append(can1.create_rectangle(x1,y1,x2,y2,fill="red"))
if direction==4:
x1=coord_serpent[coord-4]
y1=coord_serpent[coord-3]
x2=coord_serpent[coord-2]
y2=coord_serpent[coord-1]
x2=x2+10
y2=y2-10
coord_serpent.append(x1)
coord_serpent.append(y1)
coord_serpent.append(x2)
coord_serpent.append(y2)
# On rajoute un nouveau carré dans notre liste de carrés
serpent.append(can1.create_rectangle(x1,y1,x2,y2,fill="red"))
food()
# Les coordonnées de chaque carré prendront les coordonnées du carré qui le succède
# cela permettra à chacun des carré de se suivre et d'obtenir l'effet du serpent
i=4
j=1
while j<len(serpent):
coord_serpent[len(coord_serpent)-(i)]=coord_serpent[len(coord_serpent)-(i+4)]
coord_serpent[len(coord_serpent)-(i-1)]=coord_serpent[len(coord_serpent)-(i+3)]
coord_serpent[len(coord_serpent)-(i-2)]=coord_serpent[len(coord_serpent)-(i+2)]
coord_serpent[len(coord_serpent)-(i-3)]=coord_serpent[len(coord_serpent)-(i+1)]
i+=4
j+=1
# On fait le serpent avancer
coord_serpent[0]=coord_serpent[0]+dx
coord_serpent[1]=coord_serpent[1]+dy
coord_serpent[2]=coord_serpent[0]+10
coord_serpent[3]=coord_serpent[1]+10
# Si le serpent touche le mur la partie s'arrête
#
i=0
j=0
if flag!=0:
while j<len(serpent):
# On redéfinie les coordonnées de chacun des carré
# composant le corps du serpent
can1.coords(serpent[j],coord_serpent[i],coord_serpent[i+1],coord_serpent[i+2],coord_serpent[i+3])
i+=4
j+=1
if flag>0:
fen1.after(30,move)
# Cette fonction va permettre de générer au hasard de la nourriture dans le canevas
def food():
global eat
global x
global y
global pomme
global coord_serpent
if eat==1:
x=randrange(10,480,10)
y=randrange(10,280,10)
i=0
i2=0
pomme=can1.create_oval(x,y,x+10,y+10,fill="green")
eat=0
# Direction du petit serpent
def left(event):
global dx
global dy
global direction
global coord_serpent
if direction!=2:
dx=-10
dy=0
direction=1
def right(event):
global dx
global dy
global direction
if direction!=1:
dx=10
dy=0
direction=2
def up(event):
global dx
global dy
global direction
if direction!=4:
dx=0
dy=-10
direction=3
def down(event):
global dx
global dy
global direction
if direction!=3:
dx=0
dy=10
direction=4
# Programme principal
# Définition du canevas (espace de jeu)
fen1=Tk()
fen1.title("Snake les amis")
can1=Canvas(fen1,width=500,height=300,bg="white")
# Définition des touches qui permettront de déplacer le serpent
can1.bind_all("<Left>",left)
can1.bind_all("<Right>",right)
can1.bind_all("<Up>",up)
can1.bind_all("<Down>",down)
can1.grid(row=0,column=0,rowspan=10)
# Liste des coordonnées du serpent
coord_serpent=[20,20,50,50]
# Définition des coordonnées de départ du serpent
serpent=[can1.create_rectangle(coord_serpent[0],coord_serpent[1],coord_serpent[2],coord_serpent[3],fill="red")]
flag=1
eat=0
# Première pomme
x=randrange(10,480,10)
y=randrange(10,280,10)
pomme=can1.create_oval(x,y,x+10,y+10,fill="green")
# Pas avancement serpent
dx=10
dy=0
# il faut donner une valeur a direction
direction=1
# Le compteur de score
score=0
move()
fen1.mainloop()
Le flag est surement une variable de debuggage puisqu'elle n'est utilisée que dans une seule fonction qui teste sa non-nullité et sa positivité
En somme le codeur a surement passé la variable à -1 pour placer son serpent sans mouvement, Et à 0 pour afficher le décor et placer les pommes Puis à 1 pour tester son prog en entier.
OpenClassrooms retire tellement d'aiguilles de nos pieds qu'on pourrait ne plus trouver le foin de notre botte :)
Non mais justement je cherche à comprendre ce programme, pour ensuite en faire un moi c'est pour ça que je cherche des réponse mais je ne comprend pas ce flag :-/
Le flag est surement une variable de debuggage puisqu'elle n'est utilisée que dans une seule fonction qui teste sa non-nullité et sa positivité
En somme le codeur a surement passé la variable à -1 pour placer son serpent sans mouvement, Et à 0 pour afficher le décor et placer les pommes Puis à 1 pour tester son prog en entier.
Salut,
Au risque de me répéter qu'y a t-il que tu n'as pas compris dans mon explication ?
OpenClassrooms retire tellement d'aiguilles de nos pieds qu'on pourrait ne plus trouver le foin de notre botte :)
i=4
j=1
while j<len(serpent):
coord_serpent[len(coord_serpent)-(i)]=coord_serpent[len(coord_serpent)-(i+4)]
coord_serpent[len(coord_serpent)-(i-1)]=coord_serpent[len(coord_serpent)-(i+3)]
coord_serpent[len(coord_serpent)-(i-2)]=coord_serpent[len(coord_serpent)-(i+2)]
coord_serpent[len(coord_serpent)-(i-3)]=coord_serpent[len(coord_serpent)-(i+1)]
i+=4
j+=1
# On fait le serpent avancer
coord_serpent[0]=coord_serpent[0]+dx
coord_serpent[1]=coord_serpent[1]+dy
coord_serpent[2]=coord_serpent[0]+10
coord_serpent[3]=coord_serpent[1]+10
# Si le serpent touche le mur la partie s'arrête
#
i=0
j=0
if flag!=0:
while j<len(serpent):
# On redéfinie les coordonnées de chacun des carré
# composant le corps du serpent
can1.coords(serpent[j],coord_serpent[i],coord_serpent[i+1],coord_serpent[i+2],coord_serpent[i+3])
i+=4
j+=1
if flag>0:
fen1.after(30,move)
J'avais compris ça mais je comprend pas la partie ou il y a ce flag, je vous joint la paertie que je ne comprend pas :
Help please
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Qui peut m'expliquer à quoi sert le flag ?