Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
4.4 kB
1
Indexable
Never
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()