检查我的突破(Python)
当我开始的时候,没有问题!太完美了 但我想改进两件事:我想在画布上找到一个窗口,背景是一张图片,而不是一种悲伤的颜色。其次,我应该如何缩短代码?最好是在陪审团面前简短陈述检查我的突破(Python),python,tkinter,tkinter-canvas,Python,Tkinter,Tkinter Canvas,当我开始的时候,没有问题!太完美了 但我想改进两件事:我想在画布上找到一个窗口,背景是一张图片,而不是一种悲伤的颜色。其次,我应该如何缩短代码?最好是在陪审团面前简短陈述 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)
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='dark grey')
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 supprimer)
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 450 <= y <= 455 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()
从tkinter导入*
从随机输入范围
从数学输入cos,pi,sin
阶级原则(Tk):
定义初始值(自、父、vie=5):
Tk.\uuuuuuuuuuuuuuuuuuuuu初始(自我,父)
#参数初始化
self.parent=parent
self.flag=0#变量permetant d'empècher/autoriser,la lancement de la balle
self.vie=[]
self.score=0
#论当代生活的要素
对于范围内的i(0,vie):
self.vie.append(“”)
#论《联合国宪章》
can=self.can=Canvas(宽度=490,高度=500,背景为深灰色)
can.focus()
#命令初始化
可以绑定所有(“”,self.move)
can.bind_all(“”,self.starter)
can.bind(“”,self.souris)
can.bind(“”,自启动程序)
can.bind_all('p',self.pause)
可以。创建一个矩形(0470492502,填充为浅灰色)#倒出人生和分数
can.create_text(415480,text='Score:')
self.tscore=can.create_text(460480,text='0')
#论芭蕾舞代表人生
对于范围内的i(0,vie):
self.vie[i]=can.create_oval((25*vie)-(25*i),493,(25*vie)-10-(25*i),483,fill='red')
#关于草签d'autres paramètres
self.pose=0#暂停开/关
self.angle=pi/3#芭蕾舞步的再舞步角度
self.sens=-1#sens Haut/Bas de la balle
self.horizon=1#Sens Gauche/Droite de la balle
a=self.lbrique=[]#列出成分(供应)
self.l=[]#Coordonnées(tuple)des briques
颜色=[绿色','黄色','浅蓝色','红色','橙色']#不同的颜色
i=1#最终结果:阻力/阻力
x=12个横坐标
y=40
#关于克鲁·勒斯杜朱布里克110酒店
就我所知,x将背景图像添加到Tkinter画布时,语法是:
backgroundImage=PhotoImage(“插入路径”)
#用于GIF
及
backgroundImage=BitmapImage(“插入路径”)
用于位图
我希望这对你有帮助 太宽了。如果您想查看代码,请使用CodeReview.SE。如果您的问题是“如何将背景图像添加到Tkinter画布?”(据我所知),请仅提出该问题,并仅包含最低相关代码。重新询问。