class TestJeu(TestCase):
    """Test vérifiant le bon fonctionnement du jeu.

    Ceci inclut l'application des règles.

    """
    def setUp(self):
        """Crée un jeu vide avec deux joueurs."""
        carte = Carte("test", GRILLE)
        self.jeu = Jeu(carte)
        self.grille = dict(self.jeu.labyrinthe.grille)
        self.joueur_1 = self.jeu.ajouter_joueur(None)
        self.joueur_2 = self.jeu.ajouter_joueur(None)

    def test_tour(self):
        """Vérifie le bon fonctionnement du changement de tour."""
        self.assertEqual(self.jeu.tour, self.joueur_1)
        self.jeu.changer_tour()
        self.assertEqual(self.jeu.tour, self.joueur_2)
        self.jeu.changer_tour()
        self.assertEqual(self.jeu.tour, self.joueur_1)

    def test_placement(self):
        """Vérifie que le robot est placé sur une case autrefois vide."""
        x, y = self.joueur_1.robot.x, self.joueur_1.robot.y

        # Vérifie que le robot s'est bien ajouté sur un emplacement vide
        self.assertNotIn((x, y), self.grille)

    def test_deplacement(self):
        """Essaye de déplacer le robot."""
        robot = self.jeu.labyrinthe.grille.get((1, 1))
        retour = self.jeu.labyrinthe.deplacer_robot(robot, "est")
        self.assertTrue(retour)
        self.assertEqual(robot.x, 2)
        self.assertEqual(robot.y, 1)

    def test_collision(self):
        """Vérifie que le robot ne bouge pas en cas de collision."""
        robot = self.jeu.labyrinthe.grille.get((1, 1))

        # Si le robot va au nord, il doit se prendre le mur
        retour = self.jeu.labyrinthe.deplacer_robot(robot, "nord")
        self.assertFalse(retour)
        self.assertEqual(robot.x, 1)
        self.assertEqual(robot.y, 1)

        # Si il va deux fois vers l'est, il doit se heurter à l'autre robot
        self.jeu.labyrinthe.deplacer_robot(robot, "est")
        retour = self.jeu.labyrinthe.deplacer_robot(robot, "est")
        self.assertFalse(retour)
コード例 #2
0
            msg = client.recv(1024)
            msg = msg.decode()
            joueur = jeu.get_joueur_depuis_client(client)
            if jeu.tour is not joueur:
                joueur.envoyer("Ce n'est pas votre tour.")
                continue

            # On cherche la commande
            trouve = False
            for commande in commandes:
                reste = commande.doit_executer(joueur, msg)
                if reste is not None:
                    retour = commande.executer(joueur, reste)
                    if retour:
                        jeu.afficher_grille()
                        jeu.changer_tour()
                        trouve = True
                        break

            if not trouve:
                joueur.envoyer("Commande invalide.")

            if jeu.labyrinthe.gagnee:
                break

    # Enfin, on joue les coups différés
    joueur = jeu.tour
    if joueur in jeu.coups_differes:
        direction, nb = jeu.coups_differes[joueur]
        essai = jeu.labyrinthe.deplacer_robot(joueur.robot, direction)
        nb -= 1