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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
| # -*- coding: utf-8 -*-
# import des libs
from Tkinter import *
from random import *
#déplacement selon la touche appuyée
def keybas(key):
snake.direction="bas"
def keyhaut(key):
snake.direction="haut"
def keydroite(key):
snake.direction="droite"
def keygauche(key):
snake.direction="gauche"
def clic(key):
global debut
#debut du jeu
if debut==0:
debut=1
snake.pomme()
snake.avancer()
def quitter(key):
fen.destroy()
class snake():
'ceci est mon objet snake'
global longueur,i
longueur=4
#construteur de snake
def __init__(self,x=250,y=250,direction="droite",olddir="droite",taille_carre=6,
taille_serpent=10,time=100,coordx=5,coordy=0,serpentx= [250, 240, 230, 220],
serpenty= [250, 250, 250, 250],longueur=3,longueurtable=[0]*longueur,
pommex=randrange(1,20),pommey=randrange(1,20), score=-1):
self.x=x # : position X de la tete du serpent
self.y=y # : position Y de la tete du serpent
self.direction=direction # : direction du serpent : gauche/droite/haut/bas
self.olddir=olddir # : direction précédente du serpent
self.taille_serpent=taille_serpent# : taille du serpent (espace entre deux carrés)
self.taille_carre=taille_carre # : taille des carrés
self.time=time # : temps entre deux mouvements
self.coordy=coordy # : coordonnée Y rajoutée pendant le déplacement
self.coordx=coordx # : coordonnée X rajoutée pendant le déplacement
self.serpenty=serpenty # : position X du serpent (dans la table serpentx[])
self.serpentx=serpentx # : position Y du serpent (dans la table serpenty[])
self.longueur=longueur # : longueur du serpent
self.longueurtable=longueurtable # : longueur du serpent (table)
self.pommex=pommex*24 # : position X de la pomme
self.pommey=pommey*24 # : position Y de la pomme
self.score=score # : score du joueur
#methode pour avancer selon la direction snake.direction
def avancer(self):
#collision avec la pomme
if self.x==self.pommex and self.y==self.pommey:
self.pomme()
#a droite...
if self.direction=="droite" and self.olddir!="gauche":
self.olddir=self.direction
self.coordx=self.taille_serpent
self.coordy=0
#a gauche...
elif self.direction=="gauche" and self.olddir!="droite":
self.olddir=self.direction
self.coordx=self.taille_serpent*(-1)
self.coordy=0
#en haut...
elif self.direction=="haut" and self.olddir!="bas":
self.olddir=self.direction
self.coordx=0
self.coordy=self.taille_serpent*(-1)
#en bas....
elif self.direction=="bas" and self.olddir!="haut":
self.olddir=self.direction
self.coordx=0
self.coordy=self.taille_serpent
#on rajoute aux coordonnée coordx ou coordy à la position X et Y
self.x = self.x+self.coordx
self.y = self.y+self.coordy
i = len(self.longueurtable)-1
while (i >= 0): # On maj les coord de chaque carrés
if i == 0:
self.serpentx[0]=self.x
self.serpenty[0]=self.y
else:
self.serpentx[i]=self.serpentx[i-1]
self.serpenty[i]=self.serpenty[i-1]
i = i - 1
i = 0
while (i <= (len(self.longueurtable)-1)):
# On dessine les carrés :
cadre.create_rectangle(self.serpentx[i], self.serpenty[i], self.serpentx[i]+self.taille_carre,
self.serpenty[i]+self.taille_carre,fill="green")
i = i + 1
i = 0
#et on avance
fen.after(self.time, self.avancer)
def pomme(self):
self.score=self.score+1
pommex=randrange(1,10)
pommey=randrange(1,10)
self.pommex=pommex*50 # : position X de la pomme
self.pommey=pommey*50 # : position Y de la pomme
print "score=",self.score,"\nsnake.pommex=",snake.pommex,"\nsnake.pommey=",snake.pommey
self.longueur=self.longueur+1
self.longueurtable=[0]*self.longueur
self.serpentx.append(self.serpentx[longueur-1])
self.serpenty.append(self.serpenty[longueur-1])
cadre.create_rectangle(self.pommex,self.pommey,
self.pommex+self.taille_carre,
self.pommey+self.taille_carre,fill="yellow")
#creation de lobjet snake
snake=snake()
#init variables
debut=0
longueur=4
snake.score=0
#initialisation de la fenetre
fen = Tk()
cadre = Canvas(fen, width =500, height =500, bg="blue")
pret= Label(fen,text="<<<<<<<<<<<<<<<<<Cliquez pour commencer ! (Q pour quitter !)>>>>>>>>>>>>>>>>>>>")
pret.pack()
cadre.pack()
fen.bind("<Up>",keyhaut)
fen.bind("<Down>",keybas)
fen.bind("<Right>",keydroite)
fen.bind("<Left>",keygauche)
fen.bind("<Button-1>",clic)
fen.bind("<q>",quitter) |
Partager