Untitled
unknown
plain_text
2 years ago
4.4 kB
4
Indexable
from turtle import * import keyboard tracer(False) speed(5) hideturtle() gorna_sciana = 400 dolna_sciana = -400 lewa_sciana = -500 prawa_sciana = 500 punkty1 = 0 punkty2 = 0 class Figura: def __init__(self, x, y, a, b): self.x = x self.y = y self.a = a self.b = b def rysuj(self): penup() goto(self.x, self.y) pendown() for i in range(2): fd(self.a) rt(90) fd(self.b) rt(90) class Paletka(Figura): def do_gory(self): if self.y + 1 < gorna_sciana: self.y += 1 def do_dolu(self): if self.y - self.b - 1 > dolna_sciana: self.y -= 1 class Pilka(Figura): kierunek_x = 1 kierunek_y = 2 def czy_kolizja(self, paletka1, paletka2): # sprawdzenie kolizji z krancami planszy if self.y + self.kierunek_y >= gorna_sciana or self.y - self.b + self.kierunek_y <= dolna_sciana: self.kierunek_y *= (-1) if self.x + self.kierunek_x <= lewa_sciana: return 1 if self.x + self.a + self.kierunek_x >= prawa_sciana: return 2 # sprawdzenie kolizji z paletka1 # sprawdzenie kolizji prawego boku if paletka1.x + paletka1.a >= self.x and paletka1.y >= self.y - self.a and paletka1.y - paletka1.b <= self.y: if abs(paletka1.x + paletka1.a - self.x) <= abs(paletka1.y - (self.y - self.b)) or abs( paletka1.x + paletka1.a - self.x) <= abs(paletka1.y - paletka1.b - self.y): self.kierunek_x *= (-1) # sprawdzenie dolu i gory if paletka1.x <= self.x + self.a and paletka1.x + paletka1.a >= self.x and paletka1.y >= self.y - self.a and paletka1.y - paletka1.b <= self.y: if abs(paletka1.x + paletka1.a - self.x) > abs(paletka1.y - (self.y - self.b)) or abs( paletka1.x + paletka1.a - self.x) > abs(paletka1.y - paletka1.b - self.y): self.kierunek_y *= (-1) # sprawdzenie kolizji z paletka2 # sprawdzenie kolizji lewego boku if paletka2.x <= self.x + self.a and paletka2.y >= self.y - self.a and paletka2.y - paletka2.b <= self.y: if abs(paletka2.x - (self.x + self.a)) <= abs(paletka2.y - (self.y - self.b)) or abs( paletka2.x - (self.x + self.a)) <= abs(paletka2.y - paletka2.b - self.y): self.kierunek_x *= (-1) # sprawdzenie dolu i gory if paletka2.x >= self.x - self.a and paletka2.x + paletka2.a <= self.x and paletka2.y >= self.y - self.a and paletka2.y - paletka2.b <= self.y: if abs(paletka2.x - (self.x + self.a)) > abs(paletka2.y - (self.y - self.b)) or abs( paletka2.x - self.x) > abs((paletka1.y - paletka1.b) - self.y): self.kierunek_y *= (-1) return None def przesun(self, paletka1, paletka2): a = self.czy_kolizja(paletka1, paletka2) if a != None: return a self.x += self.kierunek_x self.y += self.kierunek_y return None paletka1 = Paletka(-400, 0, 50, 100) paletka2 = Paletka(400, 0, 50, 100) pilka = Pilka(0, 0, 50, 50) pilka.kierunek_x = -0.5 pilka.kierunek_y = 0.3 while 1: clear() a = pilka.przesun(paletka1, paletka2) if a == 1: punkty1 += 1 pilka = Pilka(0, 0, pilka.a, pilka.b) pilka.rysuj() print("gracz1: ", punkty1, " gracz2:", punkty2) if a == 2: punkty2 += 1 pilka = Pilka(0, 0, pilka.a, pilka.b) pilka.rysuj() pilka.kierunek_x *= (-1) print("gracz1: ", punkty1, " gracz2:", punkty2) if a != None: # jezeli a jest 1 to gracz po lewej stronie ekranu stracil punkt, jezeli jest 2 to gracz po prawej # dokonczyc - napisac kod ktory bedzie resetowal stan gry - np. w takim wypadku pilka idzie na srodek i jezeli # to gracz po lewej stracil bramke to pilka startuje lecac w strone prawego gracza pass paletka2.rysuj() paletka1.rysuj() pilka.rysuj() update() if keyboard.is_pressed('up'): paletka1.do_gory() paletka2.do_gory() elif keyboard.is_pressed('down'): paletka1.do_dolu() paletka2.do_dolu() input()
Editor is loading...