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)
connexion.bind(('localhost', 29408)) connexion.listen(5) print("On attend les clients.") # On boucle pendant toute la durée du jeu while not jeu.labyrinthe.gagnee: # On accepte les nouvelles connexions nouvelles, w, x = select.select([connexion], [], [], 0.1) for nouvelle in nouvelles: client, infos = nouvelle.accept() if jeu.partie_commencee: client.send("La partie a déjà commencée.".encode()) client.close() else: clients.append(client) joueur = jeu.ajouter_joueur(client) print("Connexion du joueur {}".format(joueur.numero)) joueur.envoyer("Bienvenue, joueur {}.".format(joueur.numero)) jeu.envoyer_a_tous("Joueur {} se connecte.".format(joueur.numero), joueur) jeu.afficher_grille() jeu.envoyer_a_tous("Entrez C pour commencer à jouer :") # On accepte les commandes if clients: entrees, w, x = select.select(clients, [], [], 0.1) for client in entrees: msg = client.recv(1024) msg = msg.decode() joueur = jeu.get_joueur_depuis_client(client) if jeu.tour is not joueur: