from tkinter import * import random from random import randrange #PARTIE MENU DU JEU (CHRISTINE) window = Tk() window.geometry("600x400+700+300") window.maxsize(600,400) window.minsize(600,400) window.title("SNAKE GAME !") window.configure(background='dark sea green1') frame1=Frame(window,bg="white",borderwidth=0) frame2=Frame(window,bg="white",borderwidth=2,height=25,width=600) frame1.pack(side=BOTTOM) frame2.pack(side=BOTTOM) Label1=Label(window,text="Welcome to Snake's World !", font='Helvetica -40 bold italic', bg='dark sea green1') Label1.place(x=35, y=70) def BoutonPickMe(): class SnakeGame: def __init__(self): self.pas=15 self.scorejeu=-10 self.niveau=0 r=random.randrange(191,191+15*10,self.pas) self.serpentX=[r,r+self.pas,r+self.pas*2] self.serpentY=[r,r,r] self.serpentDirection = 'left' self.serpentDeplacement = [-1,0] win = Tk() win.geometry("600x400+700+300") win.maxsize(600,400) win.minsize(600,400) win.title("SNAKE GAME !") self.frame1=Frame(win,bg="white",relief=GROOVE,borderwidth=5) self.frame2=Frame(win,bg="white",relief=RAISED,borderwidth=2,height=40,width=600) self.canvas=Canvas(self.frame1,bg='dark sea green1',width=600,height=360) self.score_label=Label(self.frame2,text="Score: 0") self.frame1.pack() self.frame2.pack(fill=BOTH) self.score_label.pack(side=LEFT) self.canvas.pack(fill=BOTH) self.dessine_mur() self.dessine_score() self.dessine_pomme() self.dessine_serpent() self.jouer() win.mainloop() #PARTIE VISUELLE def dessine_mur(self): self.canvas.create_line(8,8,582,8,fill='azure',width=5) self.canvas.create_line(8,355,582,355,fill='azure',width=5) self.canvas.create_line(8,6,8,358,fill='azure',width=5) self.canvas.create_line(582,6,582,358,fill='azure',width=5) def dessine_score(self): self.score() self.score_label.config(self.score_label,text="Score: "+str(self.scorejeu) +\ " Level : " +str(self.niveau), bg="white") def score(self): self.scorejeu+=10 if self.scorejeu % 100 == 0: self.niveau=self.scorejeu / 100+1 def dessine_pomme(self): self.canvas.delete("pomme") self.pommex,self.pommey=self.random_pomme() self.canvas.create_rectangle(self.pommex,self.pommey,\ self.pommex+self.pas,self.pommey+self.pas,fill='firebrick3',tags='pomme') def dessine_serpent(self): self.canvas.delete("serpent") x,y=self.serpent() for i in range(len(x)): self.canvas.create_rectangle(x[i],y[i],x[i]+self.pas,y[i]+self.pas,\ fill='dark green',tags='serpent') def finjeu(self): self.canvas.unbind('') self.canvas.bind("",self.recommencer) self.canvas.create_text(270,180,text=" Game Over!\n \ Press any key to continue ^.^",font='Helvetica -40 bold italic', tags="texte") #PARTIE "MANIPULATION" def random_pomme(self): return(random.randrange(11,570,self.pas),random.randrange(11,340,self.pas)) def serpent(self): for i in range(len(self.serpentX)-1,0,-1): self.serpentX[i] = self.serpentX[i-1] self.serpentY[i] = self.serpentY[i-1] self.serpentX[0] += self.serpentDeplacement[0]*self.pas self.serpentY[0] += self.serpentDeplacement[1]*self.pas return(self.serpentX,self.serpentY) def semange(self): if self.serpentX[0]==self.pommex and self.serpentY[0]==self.pommey: return True else: return False def sortjeu(self): if self.serpentX[0]<8 or self.serpentX[0] >580 or\ self.serpentY[0]<8 or self.serpentY[0]>350 : return True for i in range(1,len(self.serpentX)): if self.serpentX[0]==self.serpentX[i] and self.serpentY[0]==self.serpentY[i] : return True else: return False def deplacement(self,event): if event.char == 'l' and self.serpentDirection != 'left': self.serpentDeplacement = [1,0] self.serpentDirection = "right" elif event.char == 'i' and self.serpentDirection != 'down': self.serpentDeplacement = [0,-1] self.serpentDirection = "up" elif event.char == 'j' and self.serpentDirection != 'right': self.serpentDeplacement = [-1,0] self.serpentDirection = "left" elif event.char == 'k' and self.serpentDirection != 'up': self.serpentDeplacement = [0,1] self.serpentDirection = "down" else: print(event.keycode) def jouer(self): self.canvas.bind('',self.deplacement) self.canvas.focus_set() while True: if self.sortjeu(): self.finjeu() break elif self.semange(): self.serpentX[0] += self.serpentDeplacement[0]*self.pas self.serpentY[0] += self.serpentDeplacement[1]*self.pas self.serpentX.insert(1,self.pommex) self.serpentY.insert(1,self.pommey) self.dessine_score() self.dessine_pomme() self.dessine_serpent() else: self.dessine_serpent() self.canvas.after(150) self.canvas.update() def recommencer(self,event): self.canvas.delete("food","serpent","texte") self.canvas.unbind('') r=random.randrange(191,191+15*10,self.pas) self.serpentX=[r,r+self.pas,r+self.pas*2] self.serpentY=[r,r,r] self.serpentDirection = 'left' self.serpentDeplacement = [-1,0] self.scorejeu=-10 self.dessine_score() self.dessine_pomme() self.dessine_serpent() self.jouer() SnakeGame() def BoutonNoMe(): def deplacement(): global flag global x global y,pX,pY global serpent can.delete('all') i=len(serpent)-1 j=0 while i > 0: serpent[i][0]=serpent[i-1][0] serpent[i][1]=serpent[i-1][1] can.create_oval(serpent[i][0], serpent[i][1], serpent[i][0] +10, serpent[i][1]+10,outline='green', fill='green') i=i-1 can.create_rectangle(pX, pY, pX+5, pY+5, outline='red', fill='red') if direction=='gauche': serpent[0][0]=serpent[0][0] - dx if serpent[0][0] < 0: serpent[0][0]=493 elif direction=='droite': serpent[0][0]=serpent[0][0] + dx if serpent[0][0] > 493: serpent[0][0]=0 elif direction=='haut': serpent[0][1]=serpent[0][1] - dy if serpent[0][1] < 0: serpent[0][1]=493 elif direction=='bas': serpent[0][1]=serpent[0][1] + dy if serpent[0][1] > 493: serpent[0][1]=0 test() test() if flag!=0: fen.after(60, deplacement) def score(fen): fen.score+=10 def nouvellePartie(): global pX,pY global flag if flag == 0: flag=1 deplacement() def left(event): global direction direction='gauche' def right(event): global direction direction='droite' def up(event): global direction direction='haut' def down(event): global direction direction='bas' def test(): global pomme global x,y,pX,pY global serpent if serpent[1][0]>pX-7 and serpent[1][0]pY-7 and serpent[1][1]",left) fen.bind_all("",right) fen.bind_all("",up) fen.bind_all("",down) fen.mainloop() Bouton1 = Button(window, text="Pick Me!", command=BoutonPickMe, height=3, width=7, font='Helvetica -30 bold italic',bg="blue2") Bouton1.place(x=90,y=190) Bouton2 = Button(window, text="No Me!", command=BoutonNoMe, height=3, width=7,font='Helvetica -30 bold italic',bg="firebrick3") Bouton2.place(x=372,y=190) window.mainloop()