Exemple #1
0
class TestQuoridorMethods(unittest.TestCase):
    def setUp(self):
        self.partie = Quoridor(
            [{
                "nom": "idul",
                "murs": 7,
                "pos": [5, 5]
            }, {
                "nom": "automate",
                "murs": 3,
                "pos": [8, 6]
            }],
            murs={
                "horizontaux": [[4, 4], [2, 6], [3, 8], [5, 8], [7, 8]],
                "verticaux": [[6, 2], [4, 4], [2, 6], [7, 5], [7, 7]]
            })

    def test_état_partie(self):
        état = self.partie.état_partie()
        self.assertEqual(
            état, {
                "joueurs": [{
                    "nom": "idul",
                    "murs": 7,
                    "pos": [5, 5]
                }, {
                    "nom": "automate",
                    "murs": 3,
                    "pos": [8, 6]
                }],
                "murs": {
                    "horizontaux": [[4, 4], [2, 6], [3, 8], [5, 8], [7, 8]],
                    "verticaux": [[6, 2], [4, 4], [2, 6], [7, 5], [7, 7]]
                }
            })

    def test_placer_mur_exceptions(self):
        def joueur_erroné():
            self.partie.placer_mur(joueur=0,
                                   position=(4, 5),
                                   orientation='horizontal')

        self.assertRaises(QuoridorError, joueur_erroné)
Exemple #2
0
    ID, etat = debuter_partie(c.idul)

    while True:
        TYPE_COUP = input('Quel type de coup voulez-vous jouer? (D/MH/MV) ')
        POSI = input(
            'À quelle position (x,y) voulez-vous jouer ce coup ? ').replace(
                ' ', '')
        x, y = int(POSI[1]), int(POSI[3])

        if TYPE_COUP.lower() == 'd':
            jeu.déplacer_jeton(1, (x, y))
            print(jeu)
            time.sleep(0.6)
            reponse = jouer_coup(ID, 'D', (x, y))
        elif TYPE_COUP.lower() == 'mh':
            jeu.placer_mur(1, (x, y), 'horizontal')
            print(jeu)
            time.sleep(0.6)
            reponse = jouer_coup(ID, 'MH', (x, y))
        elif TYPE_COUP.lower() == 'mv':
            jeu.placer_mur(1, (x, y), 'vertical')
            print(jeu)
            time.sleep(0.6)
            reponse = jouer_coup(ID, 'MV', (x, y))
        jeu.pos2 = tuple(reponse['joueurs'][1]['pos'])
        jeu.hori = reponse['murs']['horizontaux']
        jeu.ver = reponse['murs']['verticaux']

        jeu.partie_terminée()

        jeu.état_partie()
Exemple #3
0
from quoridor import Quoridor

partie = Quoridor(["rod", "jimbo"])
print(partie)

print(partie.placer_mur(1, [1, 8], "horizontal"))
print(partie)

try:
    partie.placer_mur(1, [2, 8], "horizontal")
except:
    print("aaaaaaaaaaaaaaaaaaaaa")
print(partie)

partie.placer_mur(1, [3, 8], "horizontal")
print(partie)

partie.placer_mur(1, [3, 4], "vertical")
print(partie)

try:
    partie.placer_mur(1, [3, 5], "vertical")
except:
    print(".awemc3eic43icm3ocmn3rkco ")

partie.placer_mur(1, [3, 6], "vertical")
partie.placer_mur(1, (2, 1), "qmce")

print(partie)

partie.placer_mur_auto(1, partie.etat["joueurs"][1]["pos"], "horizontal")
 def test_placer_mur(self):
     """ Test de la fonction placer_mur
         Cas à tester:
             - Les murs horizontaux et verticaux sont placés correctement
             - QuoridorError si le numéro du joueur n'est pas bon
             - QuoridorError si un mur occupe déjà la position
             - QuoridorError si la position est invalide pour l'horientation
             - QuoridorError si le joueur a déjà placé tous ses murs
     """
     jeu1_etat = {
         "joueurs": [{
             "nom": "joueur1",
             "murs": 9,
             "pos": (5, 1)
         }, {
             "nom": "joueur2",
             "murs": 9,
             "pos": (5, 9)
         }],
         "murs": {
             "horizontaux": [(4, 4)],
             "verticaux": [(6, 6)]
         }
     }
     jeu2_etat = {
         "joueurs": [{
             "nom": "joueur1",
             "murs": 8,
             "pos": (5, 1)
         }, {
             "nom": "joueur2",
             "murs": 8,
             "pos": (5, 9)
         }],
         "murs": {
             "horizontaux": [(4, 4), (5, 5)],
             "verticaux": [(6, 6), (7, 7)]
         }
     }
     jeu3_etat = {
         "joueurs": [{
             "nom": "joueur1",
             "murs": 7,
             "pos": (5, 3)
         }, {
             "nom": "joueur2",
             "murs": 0,
             "pos": (3, 5)
         }],
         "murs": {
             "horizontaux": [(4, 4), (2, 6), (4, 2), (5, 8), (7, 8)],
             "verticaux": [(6, 2), (4, 4), (2, 5), (7, 5), (7, 7), (2, 2),
                           (2, 3), (2, 4)]
         }
     }
     jeu1 = Quoridor(jeu1_etat['joueurs'], jeu1_etat['murs'])
     # Tester si le mur est bien placé avec les 2 joueurs
     jeu1.placer_mur(1, (5, 5), 'horizontal')
     jeu1.placer_mur(2, (7, 7), 'vertical')
     self.assertEqual(jeu1.état_partie(), jeu2_etat)
     # Tester l'erreur si le numéro du joueur n'est pas bon
     self.assertRaisesRegex(QuoridorError, "joueur invalide!",
                            jeu1.placer_mur, 5, (2, 2), 'horizontal')
     # Tester l'erreur si le joueur ne peut plus placer de murs
     jeu3 = Quoridor(jeu3_etat['joueurs'], jeu3_etat['murs'])
     self.assertRaisesRegex(QuoridorError,
                            "le joueur ne peut plus placer de murs!",
                            jeu3.placer_mur, 2, (2, 2), 'horizontal')
     # Tester l'erreur si l'emplacement est déjà occupé pour un mur horizontal -->
     # position exacte
     self.assertRaisesRegex(QuoridorError, "Il y a déjà un mur!",
                            jeu3.placer_mur, 1, (4, 4), 'horizontal')
     # Position décallée
     self.assertRaisesRegex(QuoridorError, "Il y a déjà un mur!",
                            jeu3.placer_mur, 1, (5, 4), 'horizontal')
     # Tester l'erreur si l'emplacement est déjà occupé pour un mur vertical --> position exacte
     self.assertRaisesRegex(QuoridorError, "Il y a déjà un mur!",
                            jeu3.placer_mur, 1, (4, 4), 'vertical')
     # Position décallée
     self.assertRaisesRegex(QuoridorError, "Il y a déjà un mur!",
                            jeu3.placer_mur, 1, (4, 5), 'vertical')
     # Tester l'erreur si l'orientation n'est pas valide
     self.assertRaisesRegex(QuoridorError, "orientation invalide!",
                            jeu3.placer_mur, 1, (4, 5), 'diagonale')
     # Tester l'erreur si la position est hors des limites du jeu pour un mur horizontal
     self.assertRaisesRegex(QuoridorError, "position du mur invalide!",
                            jeu1.placer_mur, 1, (0, 5), 'horizontal')
     self.assertRaisesRegex(QuoridorError, "position du mur invalide!",
                            jeu1.placer_mur, 1, (9, 5), 'horizontal')
     self.assertRaisesRegex(QuoridorError, "position du mur invalide!",
                            jeu1.placer_mur, 1, (5, 1), 'horizontal')
     self.assertRaisesRegex(QuoridorError, "position du mur invalide!",
                            jeu1.placer_mur, 1, (5, 10), 'horizontal')
     # Tester l'erreur si la position est hors des limites du jeu pour un mur vertical
     self.assertRaisesRegex(QuoridorError, "position du mur invalide!",
                            jeu1.placer_mur, 1, (1, 5), 'vertical')
     self.assertRaisesRegex(QuoridorError, "position du mur invalide!",
                            jeu1.placer_mur, 1, (10, 5), 'vertical')
     self.assertRaisesRegex(QuoridorError, "position du mur invalide!",
                            jeu1.placer_mur, 1, (5, 0), 'vertical')
     self.assertRaisesRegex(QuoridorError, "position du mur invalide!",
                            jeu1.placer_mur, 1, (5, 9), 'vertical')
     # tester l'erreur si le coup enfermerait le joueur
     self.assertRaisesRegex(nx.exception.NetworkXError, "", jeu3.placer_mur,
                            1, (3, 3), 'horizontal')
     self.assertRaisesRegex(nx.exception.NetworkXError, "", jeu3.placer_mur,
                            1, (4, 2), 'vertical')