def test_collision():
    vaisseau = Vaisseau(50, 480)
    bille = Bille(50, 480 - 50, 640)

    bille.forme.y = vaisseau.forme.y + vaisseau.forme.height // 2
    bille.forme.x = vaisseau.forme.x + vaisseau.forme.width // 2

    assert vaisseau.collision(bille)
def test_collision_trop_droite():
    vaisseau = Vaisseau(50, 480)
    bille = Bille(50, 480 - 50, 640)

    bille.forme.y = vaisseau.forme.y + vaisseau.forme.height // 2
    bille.forme.x = vaisseau.forme.x + vaisseau.forme.width + 2 * bille.forme.radius

    assert not vaisseau.collision(bille)
def test_collision_trop_haut():
    vaisseau = Vaisseau(50, 480)
    bille = Bille(50, 480 - 50, 640)

    bille.forme.y = vaisseau.forme.y + vaisseau.forme.height + 2 * bille.forme.radius
    bille.forme.x = vaisseau.forme.x + vaisseau.forme.width // 2

    assert not vaisseau.collision(bille)
class Fenetre(pyglet.window.Window):
    def __init__(self):
        super().__init__(640, 480, "Arkanoid")
        self.score = pyglet.text.Label(
            "0",
            x=630,
            y=470,
            anchor_x="right",
            anchor_y="top",
        )

        self.vie = pyglet.text.Label(
            "2",
            x=10,
            y=10,
            anchor_x="left",
            anchor_y="bottom",
        )

        self.sol = pyglet.shapes.Line(0, 50, 640, 50, color=(0xFF, 0xFF, 0xFF))
        self.plafond = pyglet.shapes.Line(0,
                                          480 - 50,
                                          640,
                                          480 - 50,
                                          color=(0xFF, 0xFF, 0xFF))

        self.vaisseau = Vaisseau(50, 640)
        self.bille = Bille(50, 480 - 50, 640)
        self.bille.vitesse = (75, 25)

        self.briques = []
        for i in range(12):
            for j in range(5):
                self.briques.append(Brique(25 + i * (40 + 10), 400 - j * 30))

        self.direction = 0  # -1 (gauche) ; 0 (immobile) ; 1 (droite)
        pyglet.clock.schedule_interval(self.update, 1 / 60)

    def update(self, dt):
        self.vaisseau.bouge(dt, self.direction)
        self.bille.bouge(dt)

        if self.vaisseau.collision(self.bille):
            self.score.text = str(int(self.score.text) + 1)
            self.bille.vitesse = (self.bille.vitesse[0],
                                  -self.bille.vitesse[1])

        for brique in self.briques:
            if brique.collision(self.bille):
                self.score.text = str(int(self.score.text) + 5)
                self.bille.vitesse = (self.bille.vitesse[0],
                                      -self.bille.vitesse[1])
                self.briques.remove(brique)

        if self.bille.vitesse == (0, 0):
            vie = int(self.vie.text)
            if vie > 0:
                vie -= 1
                self.vie.text = str(vie)
                self.bille.vitesse = (75, 25)

    def on_key_press(self, symbol, modifiers):
        if symbol == key.LEFT:
            self.direction += -1
        elif symbol == key.RIGHT:
            self.direction += 1

    def on_key_release(self, symbol, modifiers):
        if symbol == key.LEFT:
            self.direction -= -1
        elif symbol == key.RIGHT:
            self.direction -= 1

    def on_draw(self):
        self.clear()
        self.score.draw()
        self.vie.draw()
        self.sol.draw()
        self.plafond.draw()

        self.vaisseau.draw()
        self.bille.draw()
        for brique in self.briques:
            brique.draw()