def __init__(self, ipServerAddress, tcpServerPort, ruzzleGraph): self.ipServerAddress = ipServerAddress self.tcpServerPort = tcpServerPort self.BUFFER_SIZE = 2024 self.listeTrouvees = ListeMots() self.ruzzleGraph = ruzzleGraph # starting server self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.s.bind((self.ipServerAddress, self.tcpServerPort)) self.s.listen(1)
def waitForOpponent(self): print("En attente d' adversaire ... ") self.conn, self.addr = self.s.accept() print("Adversaire Trouve'! ---> ", self.addr, "\n") listeMotsAdversaire = ListeMots() listeTrouvees = ListeMots() received = str(self.receiveFromClient()) # reponse au defi self.answerClient("CHALLENGE_ACCEPTED") # debut match en locale if received.startswith("TIME_"): self.ruzzleGraph.playChallenge( int(received[5:len(received)] )) # extraction du temps(%) de la str TIME_% # envoie resultats au client self.answerClient("RESULTS_" + self.ruzzleGraph.listeTrouvees.compressToSend()) resultsClient = self.receiveFromClient() if resultsClient.startswith("RESULTS_"): resultsClient = resultsClient[8:len(resultsClient)] listeMotsAdversaire = ListeMots() listeMotsAdversaire.decompress(resultsClient) self.resultatMatch(self.ruzzleGraph.listeTrouvees, listeMotsAdversaire)
def playOneMatch(self): listeTrouvees = ListeMots() self.affichageTableRuzzle() temps = float( input( "\nSaisir le temps de duree de votre defi (en secondes)!\ntemps = " )) timer = Timer(temps, self.gererFinMatch, [listeTrouvees]) timer.start() print("Saisir les mots que vous trouvez dans la grille!...\n") while True: if self.matchEnded == True: sys.exit() mot = input("mot -> ") if self.listeMotsDansGrille.estDans(mot): listeTrouvees.insert(mot)
def sendChallenge(self, challengeTime): # on envoie une requete de defi au serveur self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serverHostName = socket.gethostbyaddr(self.tcpServerAddress) serverHostName = serverHostName[0] self.client_socket.connect((serverHostName, self.tcpServerPort)) # envoie du defi au serveur print("Connexion au Serveur en cours ...\n") self.sendToServeur("TIME_" + str(challengeTime)) # elaboration reponse reponseDuServeur = self.receiveFromServeur() if reponseDuServeur == "CHALLENGE_ACCEPTED": self.ruzzleGraph.playChallenge(challengeTime) # envoie resultats... self.sendToServeur("RESULTS_" + self.ruzzleGraph.listeTrouvees.compressToSend()) # reception resultats reponse = self.receiveFromServeur() if reponse.startswith("RESULTS_") == True: reponse = reponse[8:len(reponse)] listeMotsAdversaire = ListeMots() listeMotsAdversaire.decompress(reponse) self.resultatMatch(self.ruzzleGraph.listeTrouvees, listeMotsAdversaire)
def main(): # initialisation variables langue = "" parcourDictionnaire = "" for par in sys.argv: if par == "en": langue = "en" parcourDictionnaire = "./ressources/dictEn" if par == "fr": langue = "fr" parcourDictionnaire = "./ressources/dictFr" # creation de la grille de jeu ruzzle = RuzzleMatrix(langue) grafoRuzzle = RuzzleGraph(ruzzle.vertexMatrixToGraph(), None) # methode 1 (ArbreLexServeur C) if sys.argv[1] == "-m1": grafoRuzzle.affichageTableRuzzle() print("\n\n") grafoRuzzle.dictionnaire = ClientDictionnaire(int(sys.argv[2])) grafoRuzzle.generationM1(True) # methode 1b (ArbreLex en Python) elif sys.argv[1] == "-m1b": grafoRuzzle.affichageTableRuzzle() print("\n\n") grafoRuzzle.generationM1b(parcourDictionnaire, True) # methode 2 (ArbreLex en Python) elif sys.argv[1] == "-m2": grafoRuzzle.affichageTableRuzzle() print("\n\n") grafoRuzzle.generationM2(grafoRuzzle, parcourDictionnaire, True) # Statistiques - Comparation de performances m1 - m1b - m2 elif sys.argv[1] == "-s": grafoRuzzle.dictionnaire = ClientDictionnaire(int(sys.argv[2])) grafoRuzzle.affichageTableRuzzle() print("Methode 1 (ArbreLexServeur C) --> ") grafoRuzzle.generationM1(False) grafoRuzzle.listeMotsDansGrille = ListeMots() print("Methode 1b (ArbreLex Python) --> ") grafoRuzzle.generationM1b(parcourDictionnaire, False) grafoRuzzle.listeMotsDansGrille = ListeMots() print("\nMethode 2 (Py - Parcours Diction) --> ") grafoRuzzle.generationM2(grafoRuzzle, parcourDictionnaire, False) # Multiplayer Mode - Server Side elif sys.argv[1] == "-server": print("Generation Liste Mots A Trouver...") grafoRuzzle.generationM2(grafoRuzzle, parcourDictionnaire, False) print("\nEn attente de connexion pour une defi!") serverGame = ServerGame('localhost', int(sys.argv[2]), grafoRuzzle) serverGame.waitForOpponent() # Multiplayer Mode - Client Side elif sys.argv[1] == "-client": print("Generation Liste Mots A Trouver...") grafoRuzzle.generationM2(grafoRuzzle, parcourDictionnaire, False) clientGame = ClientGame(sys.argv[2], int(sys.argv[3]), grafoRuzzle) temps = int(input("saisir temps du defi : ")) clientGame.sendChallenge(temps) # mode Single Player else: dictionnaire = ArbreLex(parcourDictionnaire) dictionnaire.chargeDictionnaire(parcourDictionnaire) dictionnaire.generePossiblesMots(grafoRuzzle) grafoRuzzle.playOneMatch()
def __init__(self, parcoursDict): self.noeudRoot = Noeud("", None, None) self.chargeDictionnaire(parcoursDict) self.listeMotsDansGrille = ListeMots()
def __init__(self, vertexList, dictionnaire): self.matchEnded = False self.vertexList = vertexList self.dictionnaire = dictionnaire self.listeMotsDansGrille = ListeMots() self.listeTrouvees = ListeMots()