Soyez le premier à donner votre avis sur cette source.
Vue 28 204 fois - Téléchargée 2 933 fois
# -*- coding: cp1252 -*- # # ############################################### ################# Elnabo ################### ########### Casse Brique v1.5 ############### ############################################### ############# Date de création ############## ######### Du 02/07/10 au 07/07/10 ############ ############################################### # # from Tkinter import * from random import randrange from math import cos,pi,sin class Principale(Tk): def __init__(self,parent,vie=5): Tk.__init__(self,parent) #Initialisation des paramètres self.parent = parent self.flag = 0 #Variable permettant d'empêcher/autoriser, la lancement de la balle self.vie = [] self.score = 0 #On crée une liste contenant autant d'élement que de vie for i in range(0,vie): self.vie.append('') #On crée un canevas can = self.can = Canvas(width=490, height = 500,bg='black') can.focus() #Initialisation des commandes can.bind_all('<Key>', self.move) can.bind_all('<Return>',self.starter) can.bind('<Motion>',self.souris) can.bind('<Button-1>', self.starter) can.bind_all('p',self.pause) can.create_rectangle(0,470,492,502,fill='light grey') #Pour les vies et le score can.create_text(415,480,text='Score: ') self.tscore = can.create_text(460,480,text='0') #On crée les balles représentatives des vies for i in range(0,vie): self.vie[i] = can.create_oval((25*vie)-(25*i),493,(25*vie)-10-(25*i),483,fill='red') #On initialise d'autres paramètres self.pose = 0 #Pause On/Off self.angle = pi/3 #Angle de rebond de la balle self.sens = -1 #Sens Haut/Bas de la balle self.horizon = 1 #Sens Gauche/Droite de la balle a = self.lbrique=[] #Liste comportant les briques (pour les supprimers) self.l = [] #Coordonnées (tuple) des briques coul=['green','yellow','light blue','red','orange'] #Différentes couleurs des briques i = 1 #Permet de définir: Résistance des briques/Couleur des briques x = 12 #Coordonnées en Abscisses y = 40 #Coordonnées en Ordonnées #On crée les 110 briques du jeu while x<470: a.append([can.create_rectangle(x,y,x+40,y+10,fill=coul[i]),(i%4)+1]) self.l.append((x,y)) y+=12 i+=1 i = i%5 # i est la résistance de la brique. Si ((i%4)+1) = 3, il faudra taper 3fois la brique if y==160: x+=43 y = 40 #Creation de la balle self.boule = self.can.create_oval(250,450,260,460,fill='red') self.coord = [250,450] #Creation de la barre(pour les rebonds) self.barre = can.create_rectangle(235,460,275,465,fill='light green') self.bar = 235 can.pack() def starter(self,event): #Fonction qui démarre les balles if self.flag == 0 and len(self.vie)!=0: self.go() self.flag = 1 def pause(self,event): #Fonction qui met en pause le jeu self.pose+=1 self.pose = self.pose%2 if self.pose==0: self.go() self.can.delete(self.text) else: self.text = self.can.create_text(250,250,text='PAUSE',fill='white') def souris(self,event): #Permet de déplacer la barre avec la Souris self.bar = a = event.x if 5 < a < 455 and self.pose==0: self.can.coords(self.barre,a,460,a+40,465) def move(self,event): #Permet de déplacer la barre avec le Clavier a = event.keysym if a == 'Left': self.direction = -7 if a == 'Right': self.direction = 7 if a!='Return' and a!='': a = self.bar = self.bar+self.direction if 5 < a < 455 and self.pose == 0: self.can.coords(self.barre,a,460,a+40,465) else: self.bar-=self.direction def go(self): #Fonction principale, déplace la balle stop = 0 #On modifie les coordonnées de la balle en fonction des précedentes x = self.coord[0] y = self.coord[1] y += sin(self.angle)*self.sens*5 x += (cos(self.angle))*self.horizon self.coord[1]=y self.coord[0]=x self.can.coords(self.boule,x,y,x+10,y+10) # i = 0 while i<len(self.l): #Pour chaque brique #On vérifie si elles sont en contact avec la balle if self.l[i][1]-2 <= y <= self.l[i][1]+12 and self.l[i][0]-2 <= x <= self.l[i][0]+42: #Si oui on change de direction self.sens = (-1)*self.sens self.lbrique[i][1] += -1 if self.lbrique[i][1] == 0: #Si la brique ne peut plus tenir #On la détruit et on augmente le score self.can.delete(self.lbrique[i][0]) self.score+= 20*(len(self.vie)) texte = str(self.score) self.can.delete(self.tscore) self.tscore = self.can.create_text(460,480,text=texte) del self.lbrique[i] del self.l[i] if len(self.l)==0: #Si il n'y a plus de brique on arrête la balle stop = 1 break i+=1 #Si la balle tape la barre if 460 <= y <= 465 and self.bar-10 < x < self.bar+47: #Si c'est sur le coin gauche, un angle plus grand if self.bar-10 <= x <= self.bar+5: self.angle = 2*pi/3 self.horizon = 5 #Si c'est sur le coin droit, un angle plus petit if self.bar+37 <= x <= self.bar+47: self.angle = pi/5 self.horizon = 5 #Sinon l'angle sera dans l'autre sens if self.bar+5 < x < self.bar+40: self.angle = pi/3 self.sens = (-1)*self.sens if x<10 or x>478: #Si on tape sur le bord gauche/droit self.horizon = (-1)*self.horizon if y<10: #Si on tape le plafond self.sens = (-1)*self.sens if y>466 and x>self.bar+47 or y>466 and x<self.bar-10: #Si on tombe à coté de la barre, on perd une vie self.can.delete(self.vie[0]) del self.vie[0] stop = 1 if stop == 1: #Si on a perdu une balle,ou gagné, on remet la balle à sa place self.flag=0 self.sens = (-1)*self.sens self.can.coords(self.boule,250,440,260,430) self.can.coords(self.barre,235,460,275,465) self.bar = 235 self.coord=[250,440] if len(self.vie)==0: #Si on a plus de vie, on écrit 'perdu'# self.can.create_text(250,250,text='PERDU',fill='white') if stop ==0 and self.pose==0: #Si on a pas perdu la balle, on recommence self.can.after(2,self.go) app = Principale(None) ###On lance l'application app.mainloop()
9 mars 2018 à 01:55
22 avril 2015 à 04:30
27 mars 2015 à 10:43
Si non le code tourne parfaitement bien
20 mars 2015 à 19:25
As tu trouvé un meilleur projet?
23 déc. 2010 à 22:33
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.