Untitled
unknown
plain_text
2 years ago
4.4 kB
6
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...