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