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)
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_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_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_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_gauche():
    vaisseau = Vaisseau(50, 480)
    vaisseau.forme.x = 100

    vaisseau.vitesse = 10

    vaisseau.bouge(2, -1)

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

    vaisseau.vitesse = 10

    vaisseau.bouge(2, +1)

    assert vaisseau.forme.x == 20
Exemplo n.º 8
0
    def __init__(self):
        """Initialisation"""
        pygame.init()
        self.parametres = Parametres()
        self.ecran = pygame.display.set_mode(
            (self.parametres.largeur,
             self.parametres.hauteur))  #Créer une fenêtre
        pygame.display.set_caption("Invaders")
        self.stats = Stats(self)
        self.scoreboard = Scoreboard(self)
        """Jeu en plein écran
		self.ecran = pygame.display.set_mode((0,0), pygame.FULLSCREEN)
		self.parametres.largeur = self.ecran.get_rect().width
		self.parametres.largeur = self.ecran.get_rect().height"""

        self.vaisseau = Vaisseau(self)
        self.bullets = pygame.sprite.Group()

        self.aliens = pygame.sprite.Group()
        self._create_fleet()
        self.play_bouton = Bouton(self, "Play")
Exemplo n.º 9
0
    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 test_position_initiale():
    vaisseau = Vaisseau(50, 480)

    assert vaisseau.forme.x == (480 - LONGUEUR) // 2
    assert vaisseau.forme.y == 50
Exemplo n.º 11
0
def jouer(n, carte):
    missionss = Mission((carte[0][0], carte[0][1]), (carte[1][0], carte[1][1]),
                        carte[2], carte[3], carte[4], carte[5], carte[6])
    vaisseau = Vaisseau(Vector(missionss.jx, missionss.jy), missionss.vitax,
                        missionss.energie)

    window = pyglet.window.Window(700, 700)
    kitten = pyglet.image.load('pilote.png')
    kitten.anchor_x = kitten.width // 2
    kitten.anchor_y = kitten.height // 2
    poten = pyglet.sprite.Sprite(kitten, x=missionss.jx, y=missionss.jy)
    croix = pyglet.image.load('trou35.png')
    croix.anchor_x = croix.width // 2
    croix.anchor_y = croix.height // 2
    croixx = pyglet.sprite.Sprite(croix, x=missionss.fx, y=missionss.fy)
    fond = pyglet.image.load('fond.jpg')
    fonds = pyglet.sprite.Sprite(fond, x=0, y=0)
    liste_joueurs = []
    for i in range(
            0, n - 1
    ):  # boucle qui génère une liste avec les sprites des différents joueurs
        beta = pyglet.image.load('pilote2.png')
        beta.anchor_x = beta.width // 2
        beta.anchor_y = beta.height // 2
        liste_joueurs.append(
            pyglet.sprite.Sprite(beta, x=missionss.jx, y=missionss.jy))
    keys = key.KeyStateHandler()
    window.push_handlers(keys)
    delta_r = Chrono(autostart=True)  # création du chrono

    @window.event
    def on_draw():
        window.clear()
        fonds.draw()
        for vecteurs in range(0, len(missionss.listpol)):
            vertex = missionss.listpol[vecteurs]
            for i in polytri.triangulate(vertex):
                pyglet.graphics.draw(
                    3, pyglet.gl.GL_POLYGON,
                    ('v2i',
                     (i[0][0], i[0][1], i[1][0], i[1][1], i[2][0], i[2][1])),
                    ('c3B', (255, 0, 0, 0, 255, 0, 0, 0, 255)))
        croixx.draw()
        poten.draw()
        for autres_joueurs in liste_joueurs:
            autres_joueurs.draw(
            )  # affiche les différents sprites des joueurs à l'écran
        croixx.draw()
        if delta_r.get() > 0.025:
            # ok, le délai minimum est respecté,
            # rapporter l'état puis mettre à zéro le chrono
            états = client.rapporter((vaisseau.po.x, vaisseau.po.y),
                                     (vaisseau.vitesse.x, vaisseau.vitesse.y),
                                     vaisseau.angle)

            if états is not None:
                fin_jeu = états.copy()
                fin_jeu.pop('gagnant')
                for pseudo in états.keys():
                    if états[pseudo] is None:
                        continue
                    score_label = pyglet.text.Label(text=pseudo,
                                                    x=états[pseudo][0][0],
                                                    y=états[pseudo][0][1])
                    score_label.draw()
                fin_jeu.pop(client.pseudonyme)
                b = 0
                # Si la méthode "rapporter" renvoie un dictionnaire avec les positions et les angles des joueurs,
                # on génère une boucle, et on itère sur chaque clé pour pouvoir associer ces coordonnées aux
                # coordonnées des sprites des joueurs
                for adversaire in fin_jeu.values():
                    if adversaire is None:
                        continue
                    liste_joueurs[b].x, liste_joueurs[b].y = adversaire[0][
                        0], adversaire[0][1]
                    liste_joueurs[b].rotation = adversaire[2]
                    b += 1
                if états['gagnant'] is not None:
                    a = "Le gagnant est: "
                    a += "{}, ".format(états["gagnant"])
                    print(a)  # affiche le ou les gagnants
                    exit()  # quitte le jeu
            delta_r.reset()  # mettre à zéro le chrono

    def update(dt):

        if keys[key.LEFT]:
            vaisseau.angle -= missionss.ang * dt
        if keys[key.RIGHT]:
            vaisseau.angle += missionss.ang * dt
        if keys[key.UP]:
            vaisseau.acc(dt)

        vaisseau.move(dt)
        # détecte si il y a collision avec les 4 bords de la fenêtre
        obstacle = Obstacle(vaisseau.po, vaisseau.vitesse, missionss.elas)
        obstacle.detecter_collision(dt, Vector(700, 0), Vector(700, 700))
        obstacle.detecter_collision(dt, Vector(0, 0), Vector(0, 700))
        obstacle.detecter_collision(dt, Vector(0, 700), Vector(700, 700))
        obstacle.detecter_collision(dt, Vector(0, 0), Vector(700, 0))
        # détecte si il y a collision avec les différents obstacles du jeu
        for i in range(0, len(missionss.listpol)):
            for j in range(0, len(missionss.listpol[i])):
                if j == (len(missionss.listpol[i]) - 1):
                    obstacle.detecter_collision(
                        dt,
                        Vector(missionss.listpol[i][j][0],
                               missionss.listpol[i][j][1]),
                        Vector(missionss.listpol[i][0][0],
                               missionss.listpol[i][0][1]))
                else:
                    obstacle.detecter_collision(
                        dt,
                        Vector(missionss.listpol[i][j][0],
                               missionss.listpol[i][j][1]),
                        Vector(missionss.listpol[i][j + 1][0],
                               missionss.listpol[i][j + 1][1]))
        vaisseau.po.x, vaisseau.po.y = obstacle.p.x, obstacle.p.y
        vaisseau.vitesse.x, vaisseau.vitesse.y = obstacle.v.x, obstacle.v.y
        # associe les positions et angles de l'objet vaisseau au sprite du joueur
        poten.x, poten.y = vaisseau.po.x, vaisseau.po.y
        poten.rotation = vaisseau.angle

    pyglet.clock.schedule_interval(update, 1 / 60)
    pyglet.app.run()