from tkinter import *
import random
import time
class Piłka:
def __init__(self, płótno, rakietka, kolor,):
self.Punkty = Punkty
self.płótno = płótno
self.Rakietka = rakietka
self.id = płótno.create_oval(10, 10, 25, 25, fill=kolor)
self.płótno.move(self.id, 245, 100)
początek = [-6, -5, -4, 4, 5, 6,]
random.shuffle(początek)
self.x = początek[0]
self.y = -1
self.wysokość_płótna = self.płótno.winfo_height()
self.szerokość_płótna = self.płótno.winfo_width()
self.upadek_na_ziemię = False
def trafienie_w_piłkę(self, pozycja):
pozycja_rakietki = self.płótno.coords(self.Rakietka.id)
if pozycja[2] >= pozycja_rakietki[0] and pozycja[0] <= pozycja_rakietki[2]:
if pozycja[3] >= pozycja_rakietki[1] and pozycja[3] <= pozycja_rakietki[3]:
return True
return False
def rysuj(self):
self.płótno.move(self.id, self.x, self.y)
pozycja = self.płótno.coords(self.id)
if pozycja [1] <= 0:
self.y = 1
if pozycja [3] >= self.wysokość_płótna:
self.upadek_na_ziemię = True
if self.trafienie_w_piłkę(pozycja) == True:
PunktyLabel = Label( text=self.Punkty)
self.Punkty = self.Punkty + 1
print(self.Punkty)
if self.Punkty < 2:
PunktyLabel.pack()
self.y = random.randint(-8,-4)
if pozycja[0] <= 0:
self.x = 3
if pozycja[2] >= self.szerokość_płótna:
self.x = -3
class Rakietka:
def __init__(self, płótno, kolor, ):
self.płótno = płótno
self.id = płótno.create_rectangle(0, 0, 100, 7, fill=kolor)
self.płótno.move(self.id, 200, 375,)
self.x = 0
self.szerokość_płótna = self.płótno.winfo_width()
self.płótno.bind_all('<KeyPress-Left>' , self.przesuń_w_lewo, )
self.płótno.bind_all('<KeyPress-Right>', self.przesuń_w_prawo, )
def rysuj(self,):
self.płótno.move(self.id, self.x, 0)
pozycja = self.płótno.coords(self.id)
if pozycja [0] <= 1:
self.x = 0
if pozycja[2] >= self.szerokość_płótna:
self.x = -0
def przesuń_w_lewo(self, zdarzenie):
self.x = -1.5
def przesuń_w_prawo(self, zdarzenie):
self.x = 1.5
tk = Tk()
Punkty = 0
tk.title("Odibij Piłkę")
tk.resizable(0, 0)
tk.wm_attributes("-topmost", 1)
płótno = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)
płótno.pack()
tk.update()
Rakietka = Rakietka(płótno, 'aqua')
Piłka = Piłka(płótno, Rakietka, 'yellow')
while 1:
if Piłka.upadek_na_ziemię == True:
from tkinter import *
end = PhotoImage(file='D:\\KUBA\\Python\\Pong (Python Gra)\\end.png')
płótno.create_image(150, 100, anchor=NW, image=end)
if Piłka.upadek_na_ziemię == False :
Piłka.rysuj()
Rakietka.rysuj()
tk.update_idletasks()
tk.update()
time.sleep(0.01)
płótno.configure(bg='black')
Mam problem z aktualizacją PunktyLabel, zmienna Punkty się zmienia ( sprawdziłem to komenda "print(Punkty)" )
Może mi ktoś wytłumaczyć dlaczego to nie działa ? chodzi dokładniej o ten kod:
if self.trafienie_w_piłkę(pozycja) == True:
PunktyLabel = Label( text=self.Punkty)
self.Punkty = self.Punkty + 1
print(self.Punkty)
if self.Punkty < 2:
PunktyLabel.pack()