def test_bouge_depasse_taille():
    vaisseau = Vaisseau(50, 480)
    vaisseau.forme.x = 479 - LONGUEUR
    vaisseau.vitesse = 10

    vaisseau.bouge(1, +1)

    assert vaisseau.forme.x == 480 - LONGUEUR
def test_bouge_negatif():
    vaisseau = Vaisseau(50, 480)
    vaisseau.forme.x = 1
    vaisseau.vitesse = 10

    vaisseau.bouge(1, -1)

    assert vaisseau.forme.x == 0
def test_bouge_droite():
    vaisseau = Vaisseau(50, 480)
    vaisseau.forme.x = 0

    vaisseau.vitesse = 10

    vaisseau.bouge(2, +1)

    assert vaisseau.forme.x == 20
def test_bouge_gauche():
    vaisseau = Vaisseau(50, 480)
    vaisseau.forme.x = 100

    vaisseau.vitesse = 10

    vaisseau.bouge(2, -1)

    assert vaisseau.forme.x == 80
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()