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()