def envoyer_affichage_labyrinthe_tous_les_joueurs(labyrinthe, status, liste_connexions):
    affichage = AffichageConsole()

    for joueur in liste_connexions:
        print("DEBUG joueur = ", joueur)
        affichage_labyrinthe = affichage.afficheLabyrinthe(labyrinthe, joueur.get_index_joueur())
        envoyer_message_au_client(affichage_labyrinthe,
                                  status,
                                  joueur.get_connexion())
Beispiel #2
0
	#on affiche uniquement le nom du fichier
	#soit la partie après le dernier "\"
	nomCarte = carte.split('\\')[-1]
	print("\t{0} - {1}".format(i+1,nomCarte))

#on récupère le choix du joueur
choixNumLabyrinthe = saisie.choixLabyrinthe(len(listeCartesTxt))

#récupère le nom correspondant
nomLabyrintheChoisi = listeCartesTxt[choixNumLabyrinthe - 1]

#on créé notre objet Labyrinthe à partir du fichier sélectionné
labyrinthe = Labyrinthe(nomLabyrintheChoisi)

#affiche le labyrinthe choisi 
affichage.afficheLabyrinthe(labyrinthe)

#demarrage de la partie
quitter = False
while not labyrinthe.partieGagnee() and not quitter:
    #lecture et vérification synthaxique du déplacement choisi par le joueur
    (direction,nbCase,quitter) = saisie.choixDeplacement()

    #l'utilisateur demande à quitter la partie
    if quitter:
        affichage.afficheMessage("Merci d'avoir joué avec nous. Au revoir")
        #on sauvegarde la partie en cours
        labyrinthe.sauverPartieEnCours()

    #l'utilisateur a saisi une commande pour déplacer le robot
    else:        
def traitement_demandes_connexions(connexion_principale, labyrinthe, clients_connectes):
    # objets utiles
    affichage = AffichageConsole()

    # On va vérifier que de nouveaux clients ne demandent pas à se connecter
    # Pour cela, on écoute la connexion_principale en lecture
    # On attend maximum 50ms
    connexions_demandees, wlist, xlist = select.select([connexion_principale], [], [], 0.05)

    for (i, connexion) in enumerate(connexions_demandees):
        connexion_avec_client, infos_connexion = connexion.accept()

        # accueil du nouveau joueur
        num_joueur = clients_connectes.get_nombre_joueurs()
        joueur = Joueur(num_joueur, connexion_avec_client)

        envoyer_message_au_client("Bonjour Joueur {}!\n".format(joueur.get_num_joueur()),
                                  Status.ECOUTE_SERVEUR,
                                  joueur.get_connexion())

        # ajouter ce nouveau joueur dans le labyrinthe (calcul position depart)
        retour = labyrinthe.ajouterPositionNouveauJoueur()

        # vérifie que le robot du joueur peut bien etre rajouté
        if retour != "OK":
            envoyer_message_au_client("Connexion à la partie impossible : {}".format(retour),
                                      Status.DECONNEXION,
                                      joueur.get_connexion())

            joueur.get_connexion().close()

        else:

            # On ajoute le joueur à la liste des clients connectes
            clients_connectes.ajouter_joueur(joueur)

            # affichage en local sur le serveur
            affichage.afficheMessage("Joueur {0} connecté : {1}".format(joueur.get_num_joueur(), infos_connexion))

            # informer le joueur de succes de la connexion
            envoyer_message_au_client("Vous etes maintenant connectés à la partie\n",
                                      Status.ECOUTE_SERVEUR,
                                      joueur.get_connexion())

            # affichage du labyrinthe
            affichage_labyrinthe = affichage.afficheLabyrinthe(labyrinthe, joueur.get_index_joueur())

            if num_joueur == 0:
                envoyer_message_au_client(affichage_labyrinthe,
                                          Status.DEMANDE_DEMARRAGE_PARTIE,
                                          joueur.get_connexion())

            else:
                envoyer_message_au_client(affichage_labyrinthe,
                                          Status.ECOUTE_SERVEUR,
                                          joueur.get_connexion())

                envoyer_message_au_client("Attendez que Joueur 1 démarre la partie\n",
                                          Status.ECOUTE_SERVEUR,
                                          joueur.get_connexion())
    return clients_connectes