Untitled

 avatar
unknown
plain_text
2 years ago
5.0 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 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...