def setUp(self) : self.j1 = Joueur("GingerBeard") self.j2 = Joueur("GingerBeard") self.j3 = Joueur("Code pandorum") self.j4 = Joueur("S-Cual") self.structure = StructureJoueurs() self.structure_remplie = StructureJoueurs() self.structure_remplie.ajouterJoueur(self.j1,"Ginger","motdepasse") self.structure_remplie.ajouterJoueur(self.j3,"gingea","modepa") self.structure_remplie.ajouterJoueur(self.j4,"login","mdp")
def essaiInscription(frame, fenetre, login, mdp, pseudo, serveur): serveur.send(b"tentative inscription") time.sleep(0.1) serveur.send(login.encode()) time.sleep(0.1) serveur.send(mdp.encode()) time.sleep(0.1) serveur.send(pseudo.encode()) retour = serveur.recv(1024).decode() if (retour == "False login"): frame.ligne_log.config(background="red") frame.ligne_pseudo.config(background="white") frame.ligne_key.config(background="white") elif (retour == "False pseudo"): frame.ligne_pseudo.config(background="red") frame.ligne_log.config(background="white") frame.ligne_key.config(background="white") elif (retour == "False encodage"): frame.ligne_pseudo.config(background="white") frame.ligne_log.config(background="red") frame.ligne_key.config(background="red") elif (retour == "Done"): joueur = Joueur(pseudo) with open("localdata/dataJoueur", "wb") as file: pickle.dump(joueur, file) lancerInterfaceIntermediaire(frame, fenetre, serveur) else: raise CommunicationError("Message inattendu")
def __init__(self, fenetre, serveur, joueur, **kwargs): fenetre.title("BattleShip v1 (hors-ligne) " + joueur.pseudo) Frame.__init__(self, fenetre, width=500, height=700, **kwargs) self.serveur = serveur self.pack(fill=BOTH) self.tst = True self.tstDamier = False self.partieEnCours = True self.fenetre = fenetre self.joueur = joueur self.aPlace = False self.timer = time.time() self.joueur.debutPartie() self.IA = Joueur("Ordinateur") self.d1 = Damier() self.d2 = Damier() self.message = Label(self, text="Etape 1 : Placez vos bateaux") style = Style() style.theme_use('default') style.configure("blue.Horizontal.TProgressbar", background='blue') self.barreCherche = Progressbar(self, length=100, style="blue.Horizontal.TProgressbar") self.message.pack(fill=X) self.partie = Partie(self.joueur, self.d1, self.IA, self.d2) #self.partie.placerIA() self.partie.tour[0] = self.joueur self.d2 = self.partie.grille2 self.grillePerso = GrillePlacement(self, self.partie) self.grilleTir = GrilleTirEL(self, self.grillePerso, self.partie, self.joueur, self.serveur) self.message.pack() self.grillePerso.pack() self.grilleTir.pack(padx=60) self.valider = Button(self, text="Valider", fg="white", bg="green", command=self.valider) self.valider.pack() self.quitter = Button(self, text="Quitter", command=self.quit, fg="black", bg="red") self.quitter.pack()
# "nom": ["paix", "pigalle", "courcelles"], # "prix": [40, 18, 14], # "couleur": ["bleu", "orange", "bleu clair"] # }, # Joueur: { # "nom": ["moi", "toi"], # "capital": [100, 100] # } # } # # rep = {} # for classe, attributs in donnees.items(): # nbr_objets = len(attributs[list(attributs)[0]]) # nom_liste_objets = str(classe.__name__).lower() + 's' # rep[nom_liste_objets] = [] # # # print(rep) terrains = [] for i in range(len(data["terrains"])): terrains.append( Terrain(data["terrains"]["nom"][i], data["terrains"]["prix"][i], data["terrains"]["couleur"][i])) joueurs = [] for i in range(len(data["joueurs"])): # noinspection PyArgumentList joueurs.append( Joueur(data["joueurs"]["nom"][i], data["joueurs"]["capital"][i]))
def lecture(serveur): liste_connexions = [] liste_attente = [] liste_enJeu = [] liste_joueurs_connectes = [] liste_parties = [] liste_abandon = [] damiers_en_stock = [] tst = True try: while (tst): connexions, wlist, xlist = select.select([serveur], (), (), 0.05) for con in connexions: clients, infos = con.accept() liste_connexions.append(clients) aLire = [] try: aLire, wlist, xlist = select.select(liste_connexions, (), (), 0.05) except select.error: pass else: for el in aLire: msg = el.recv(1024) msg = msg.decode() _temp = False if (msg.lower() == "renvoi joueur"): joueur = pickle.loads(el.recv(1024)) structure = StructureJoueurs() structure.importStructure() cle = "" for clef in structure.dicoJoueurs.keys(): if (structure.dicoJoueurs[clef].pseudo == joueur.pseudo): cle = clef structure.dicoJoueurs[cle] = joueur structure.editStructure() if (msg.lower() == "fin partie"): joueur = pickle.loads(el.recv(1024)) structure = StructureJoueurs() structure.importStructure() cle = "" for clef in structure.dicoJoueurs.keys(): if (structure.dicoJoueurs[clef].pseudo == joueur.pseudo): cle = clef structure.dicoJoueurs[cle] = joueur structure.editStructure() for el1, el2, partie in liste_parties: if (el is el1): liste_parties.remove((el1, el2, partie)) if (el is el2): liste_parties.remove((el1, el2, partie)) for el1, el2 in liste_enJeu: if ((el is el1) or (el is el2)): liste_enJeu.remove((el1, el2)) if (msg.lower() == "a joue"): partie = pickle.loads(el.recv(9999)) tstFini = partie.testFin() for el1, el2 in liste_enJeu: if (el is el1): if (tstFini): el2.send(b"perdu") else: el2.send(b"a toi") time.sleep(0.1) el2.send(pickle.dumps(partie)) elif (el is el2): if (tstFini): el1.send(b"perdu") else: el1.send(b"a toi") time.sleep(0.1) el1.send(pickle.dumps(partie)) if (msg.lower() == "envoi damier"): damier = pickle.loads(el.recv(1024)) joueur = pickle.loads(el.recv(1024)) el.send(b"OK") damiers_en_stock.append((el, damier, joueur)) if (msg.lower() == "abandon"): for el1, el2 in liste_enJeu: if (el is el1): liste_abandon.append(el2) elif (el is el2): liste_abandon.append(el1) if (msg.lower() == "attente damier"): adversaire = None for el1, el2 in liste_enJeu: if (el is el1): adversaire = el2 elif (el is el2): adversaire = el1 tstDamier = False damier1 = None damier2 = None joueur1 = None joueur2 = None for el1 in liste_abandon: if (el is el1): el.send(b"partie interrompue") liste_abandon.remove(el) for co, damier, joueur in damiers_en_stock: if (co is adversaire): tstDamier = True damier2 = damier joueur2 = joueur elif (co is el): damier1 = damier joueur1 = joueur if (tstDamier): el.send(b"partie") time.sleep(0.1) damiers_en_stock.remove((el, damier1, joueur1)) damiers_en_stock.remove( (adversaire, damier2, joueur2)) partie = Partie(joueur1, damier1, joueur2, damier2) el.send(pickle.dumps(partie)) liste_parties.append((el, adversaire, partie)) else: tstBoucle = False for co1, co2, part in liste_parties: if ((el is co1) or (el is co2)): el.send(b"partie") time.sleep(0.1) el.send(pickle.dumps(part)) tstBoucle = True if (not tstBoucle): el.send(b"attente") if (msg.lower() == "arret attente"): for elem in liste_attente: if (elem is el): _temp = True if (_temp): liste_attente.remove(el) cpt = 0 for el1, el2 in liste_enJeu: if (el is el1 or el is el2): liste_enJeu.remove((el1, el2)) else: pass if (msg.lower() == "cherche"): liste_attente.append(el) el.send(b"pas encore") if (msg.lower() == "attente"): tst1 = False for el1, el2 in liste_enJeu: if ((el is el1) or (el is el2)): el.send(b"trouve") tst1 = True if (tst1): pass else: if (len(liste_attente) > 1): if (el is liste_attente[0]): liste_enJeu.append((el, liste_attente[1])) liste_attente.remove(liste_attente[1]) liste_attente.remove(el) else: liste_enJeu.append((el, liste_attente[0])) liste_attente.remove(liste_attente[0]) liste_attente.remove(el) el.send(b"trouve") else: el.send(b"pas encore") if (msg.lower() == "actualiser profil"): structure = StructureJoueurs() try: structure.importStructure() except: structure = StructureJoueurs() login = el.recv(1024).decode() mdp = el.recv(1024).decode() joueurActuel = el.recv(1024) joueurActuel = pickle.loads(joueurActuel) try: structure.actualiserJoueur(joueurActuel, login, mdp) except NoPlayerFoundException: el.send(b"False") except NoActualException: el.send(b"False") else: el.send(b"Done") if (msg.lower() == "arret jeu"): _temp1 = None _temp2 = None _temp3 = None tstIn = False for el1, damier, adv in damiers_en_stock: if (el is el1): _temp1 = el1 _temp2 = damier _temp3 = adv tstDIn = True if (tstIn): damiers_en_stock.remove((_temp1, _temp2, _temp3)) tstIn = False for el1, el2, partie in liste_parties: if (el is el1): _temp1 = el1 _temp2 = el2 _temp3 = partie try: el2.send(b"partie interrompue") except OSError: pass tstIn = True elif (el is el2): _temp1 = el1 _temp2 = el2 _temp3 = partie try: el1.send(b"partie interrompue") except OSError: pass tstIn = True if (tstIn): liste_parties.remove((_temp1, _temp2, _temp3)) tstIn = False for el1, el2 in liste_enJeu: if (el is el1 or el is el2): _temp1 = el1 _temp2 = el2 tstIn = True if (tstIn): liste_enJeu.remove((_temp1, _temp2)) if (msg.lower() == "tentative connexion"): structure = StructureJoueurs() try: structure.importStructure() except: structure = StructureJoueurs() login = el.recv(1024).decode() mdp = el.recv(1024).decode() joueur = None try: joueur = structure.getJoueur(login, mdp) except NoPlayerFoundException: el.send(b"False") else: if (joueur.pseudo in liste_joueurs_connectes): el.send(b"deja connecte") else: liste_joueurs_connectes.append(joueur.pseudo) joueur = pickle.dumps(joueur) el.send(joueur) elif (msg.lower() == "tentative inscription"): structure = StructureJoueurs() structure.importStructure() login = el.recv(1024).decode() mdp = el.recv(1024).decode() pseudo = el.recv(1024).decode() try: structure.ajouterJoueur(Joueur(pseudo), login, mdp) except LoginExistantException: el.send(b"False login") except PseudoExistantException: el.send(b"False pseudo") except HashException: el.send(b"False encodage") else: structure.editStructure() el.send(b"Done") elif (msg.lower() == "joueur deconnecte"): joueur = pickle.loads(el.recv(1024)) cle = "" structure = StructureJoueurs() structure.importStructure() for clef in structure.dicoJoueurs.keys(): if (structure.dicoJoueurs[clef].pseudo == joueur.pseudo): cle = clef structure.dicoJoueurs[cle] = joueur structure.editStructure() liste_joueurs_connectes.remove(joueur.pseudo) elif (msg.lower() == "fin exit(0)"): for elem in liste_abandon: if (elem is el): liste_abandon.remove(el) el.close() liste_connexions.remove(el) elif (msg.lower() == "fermeture reseau principal"): for el in liste_connexions: try: el.send(b"coupure reseau") except BrokenPipeError: pass el.close() serveur.close() tst = False except KeyboardInterrupt: for el in liste_connexions: el.send(b"fin exit(0)") el.close() serveur.close() print("WTF?") raise KeyboardInterrupt
def setUp(self): self.joueur = Joueur("R2d2")
class TestBateau(unittest.TestCase): def setUp(self): self.joueur = Joueur("R2d2") def testMatchHL(self): with self.assertRaises(NewLevelException): self.joueur.partieHLGagnee() self.assertEqual(self.joueur.niveau, 2) self.assertEqual(self.joueur.xp, 0) self.joueur.partieHLGagnee() self.joueur.partieHLPerdue() self.assertEqual(self.joueur.niveau, 2) self.assertEqual(self.joueur.xp, 500) self.assertEqual(self.joueur.nbPartiesHL, 3) def testMatchEL(self): with self.assertRaises(NewLevelException): self.joueur.partieELGagnee() self.assertEqual(self.joueur.niveau, 2) self.assertEqual(self.joueur.xp, 0) self.joueur.partieELGagnee() self.joueur.partieELPerdue() self.assertEqual(self.joueur.niveau, 2) self.assertEqual(self.joueur.xp, 500) self.assertEqual(self.joueur.nbPartiesEL, 3)