1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| from tkinter import *
from random import randint
def mouvement(dir):
global snakeList, snakeCan, appleList, appleCan
dx,dy=dir[0],dir[1] #On récupère la direction selon les axes x et y
hX,hY=snakeList[0][0],snakeList[0][1] #Coordonées du pixel superieur gauche de la tête
snakeCan=[can.create_rectangle(hX+10*dx, hY+10*dy, hX+dx*10+10, hY+10*dy-10, fill='white')]+snakeCan #Ajout d'une nouvelle tête
snakeList=[[hX+10*dx, hY+10*dy]]+snakeList #Actualisation des coordonées de la tête
if not snakeList[0]==appleList: #Si la tête n'est pas sur la pomme alors on n'aggrandit pas le serpent
#Suppression de la queue dans la liste et sur le plateau de jeu
del snakeList[-1]
can.delete(fen,snakeCan[-1])
del snakeCan[-1]
else: #Sinon supprime la pomme et on en recrée une
can.delete(fen,appleCan)
pX=randint(1,29)*10
pY=randint(1,20)*10
appleCan=can.create_oval(pX,pY,pX+10,pY-10,fill="lightgreen")
appleList=[pX,pY]
print(snakeList)
return None
def verif(): #A-t-on perdu ?
global snakeList
if snakeList[0][0]>290 or snakeList[0][0]<0 or snakeList[0][1]<0 or snakeList[0][1]>290: #On regarde si le serpent est sortit
return False
for c in range(0,len(snakeList)-1): #Ou bien si il se mange lui-même
if snakeList[c]==snakeList[0]:
return False
return True
def Up(event):
return mouvement([0,-1])
def Down(event):
return mouvement([0,1])
def Right(event):
return mouvement([1,0])
def Left(event):
return mouvement([-1,0])
#Affichage
fen=Tk() #Création de la fenêtre
fen.title("Snake") #Titre a la fenêtre
can=Canvas(fen, width=300, height=300, bg="black") #Création du canevas
can.pack(side=TOP) #Placement du canevas
#Création des coordonées pour la position initiale du serpent et de la pomme
posY=150
posX=150
pX=randint(0,29)*10 #On est sur une grille de 30*30 cases de dimension 10*10 pix
pY=randint(0,29)*10
#Création du serpent sur le cannevas et dans une liste
global snakeList, snakeCan, appleList, appleCan
snakeList, snakeCan=[],[]
for dl in range(0,30,10): #Taille initiale: 3 cases
snakeCan.append(can.create_rectangle(posX+dl, posY, posX+dl+10, posY-10, fill='white'))
snakeList.append([posX+dl, posY])
#Création de la pomme dans le cannevas et dans une liste
appleCan=can.create_oval(pX,pY,pX+10,pY-10,fill="lightgreen")
appleList=[pX,pY]
bouton_quitter=Button(text="Quitter",command=fen.destroy)
bouton_quitter.pack(side=BOTTOM)
fen.bind("<Up>", Up) # Flèche haut
fen.bind("<Down>", Down) # Bas
fen.bind("<Left>", Left) # Gauche
fen.bind("<Right>", Right) # Droite
fen.mainloop() |
Partager