Untitled
unknown
plain_text
2 years ago
5.0 kB
5
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 Gra:
punkty1 = 0
punkty2 = 0
def __init__(self):
self.paletka1 = Paletka(-400, 0, 50, 100)
self.paletka2 = Paletka(400, 0, 50, 100)
self.pilka = Pilka(0, 0, 50, 50)
def rysuj(self):
self.paletka2.rysuj()
self.paletka1.rysuj()
self.pilka.rysuj()
def AI(self):
if self.pilka.y > self.paletka2.y:
self.paletka2.do_gory()
elif self.pilka.y < self.paletka2.y:
self.paletka2.do_dolu()
def klawiatura(self):
if keyboard.is_pressed('up'):
self.paletka1.do_gory()
elif keyboard.is_pressed('down'):
self.paletka1.do_dolu()
def pilka_update(self):
a = self.pilka.przesun(self.paletka1, self.paletka2)
if a == 1:
self.punkty1 += 1
self.pilka = Pilka(0, 0, self.pilka.a, self.pilka.b)
self.pilka.kierunek_x *= (-1)
elif a == 2:
self.punkty2 += 1
self.pilka = Pilka(0, 0, self.pilka.a, self.pilka.b)
def loop(self):
clear()
self.pilka_update()
self.rysuj()
update()
self.klawiatura()
self.AI()
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 = -0.5
kierunek_y = 0.25
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):
if self.y - self.a/2 > paletka1.y - 40:
self.kierunek_y += 0.5
elif self.y - self.a/2 < paletka1.y - 60:
self.kierunek_y -= 0.5
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)
if self.y - self.a/2 > paletka1.y - 40:
self.kierunek_y += 0.5
elif self.y - self.a/2 < paletka1.y - 60:
self.kierunek_y -= 0.5
# 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
"""gra = Gra()
while 1:
gra.loop()
"""
write(f'{self.punkty1} : {self.punkty2}', font = ('Arial', 30, 'normal'))
input()
Editor is loading...