Esempio n. 1
0
def CoupAdversaire(gui):
    #On définit le numéro de l'adversaire, afin de pouvoir jouer son coup.
    numAdversaire = 0
    if hv.numJoueur == 1:
        numAdversaire = 2
    elif hv.numJoueur == 2:
        numAdversaire = 1
    """ traite les commandes et coups de l'adversaire """
    # To do ! Vous devez programmer cette fonction.
    (cmd, arg) = recvcmd("joue", "bravo", "oups", "aurevoir")
    if (cmd == "bravo"):
        raise Bravo
    elif (cmd == "oups"):
        raise Oups()
    elif (cmd == "aurevoir"):
        raise Aurevoir
    elif (cmd == "joue"):
        (i, j) = TablierToPlateauCoord(arg)
        if (hv.monTour == False):
            if (CoupValide(i, j) == True):
                if (JouerUnCoup(gui, i, j, numAdversaire) == True):
                    sendcmd("bravo", "")
            hv.monTour = True
        else:
            if (hv.monTour == True):
                print(">>Ce n'est pas votre tour")
            else:
                sendcmd("oups", "")
Esempio n. 2
0
def initServeur(arguments):
	""" initialisation du serveur """

	# programmation réseaux du socket
	s=socket()
	s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
	s.bind(('0.0.0.0',6666))
	s.listen(1024)

	(sc, addr) = s.accept()

	#listeExtensions est une liste contenant toutes les extensions passées sur la ligne de commande
	listeExtensions = [key for key in arguments if arguments[key]==True]
	
	hv.gs = sc
	
	#bonjour extension1 extension2 ...
	sendcmd('bonjour',listeExtensions)
	(cmd,args)=recvcmd('bonjour')
	extensionsSupportees = []
	if len(args)>0 :
		extensionsSupportees = [param for param in args.split(' ') if arguments[param]]
	print("--- Extensions supportées par les deux joueurs :", extensionsSupportees)
	
	#joueur NomJoueur
	sendcmd('joueur', arguments["NomJoueur"])
	(cmd,args)=recvcmd('joueur')
	NomAutreJoueur = args
	print("--- L'autre joueur s'appelle %s." % NomAutreJoueur)
	
	#tablier taille1 taille2 ...
	sendcmd('tablier', ' '.join(arguments["tablier"]))
	(cmd,args) = recvcmd('tablier')
	hv.taille = int(args)
	print("--- Le serveur a choisi un tablier de taille %s" % hv.taille)

	if "pileouface" in extensionsSupportees:
		(cmd,args)=recvcmd('pileouface')
		if(cmd == "pileouface"):
			y = str(uuid4())
			t = randint(0,1)
			x = args
			sendcmd("pileouface",sha256(' '.join([x,y,t]).encode('utf8')).hexdigest())
			(cmd,args)=recvcmd('pileouface')
			if(cmd == "pileouface"):
				p = args
				sendcmd("pileouface",y)
				if(t != p):
					hv.monTour = True
					print("--- C'est moi qui commence.")
				else:
					hv.monTour = False
					print("--- C'est toi qui commence.")

	else:
		hv.monTour = False
		print("--- C'est toi qui commence.")

	hv.numJoueur = 1
	print("--- J'ai la couleur", hv.couleurs[hv.numJoueur])
Esempio n. 3
0
def CoupJoueur(gui, i, j):
	""" le joueur joue sur la cellule (i,j) """
	if CoupValide(i,j) and hv.monTour :
		sendcmd("joue",PlateauToTablierCoord(i,j))
		JouerUnCoup (gui,i,j,hv.numJoueur)
		hv.monTour = False
	elif not CoupValide(i,j) :
		print ("Cette case n'est pas libre !")
	elif not hv.monTour :
		print ("Ce n'est pas votre tour !")
Esempio n. 4
0
def initClient(arguments):
	""" initialisation du client """
	
	# programmation réseaux du socket
	s=socket()
	s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)

	#listeExtensions est une liste contenant toutes les extensions passées sur la ligne de commande
	listeExtensions = [key for key in arguments if arguments[key]==True]
	
	s.connect((arguments["ip"],arguments["port"]))
	hv.gs = s
	
	#bonjour extension1 extension2 ...
	sendcmd('bonjour', ' '.join(listeExtensions))
	(cmd,args)=recvcmd('bonjour')
	extensionsSupportees = []
	if len(args)>0 :
		extensionsSupportees = [param for param in args.split(' ') if arguments[param]]
	print("--- Extensions supportées par les deux joueurs :", extensionsSupportees)
	
	#joueur NomJoueur
	sendcmd('joueur', arguments["NomJoueur"])
	(cmd,args)=recvcmd('joueur')
	NomAutreJoueur = args
	print("--- L'autre joueur s'appelle %s." % NomAutreJoueur)
	
	#tablier taille1 taille2 ...
	sendcmd('tablier', ' '.join(arguments["tablier"]))
	(cmd,args) = recvcmd('tablier')
	hv.taille = int(args)
	print("--- Le serveur a choisi un tablier de taille %s" % hv.taille)

	if "pileouface" in extensionsSupportees:
		x = str(uuid4())
		p = randint(0,1)
		sendcmd("pileouface", x)
		(cmd,args)=recvcmd('pileouface')
		if(cmd == "pileouface"):
			sendcmd("pileouface", p)
			(cmd,args)=recvcmd('pileouface')
			if(cmd == "pileouface"):
				y = args
				if(sha256(' '.join([x,y,t]).encode('utf8')).hexdigest() == sha256(' '.join([x,y,p]).encode('utf8')).hexdigest()):
					hv.monTour = True
					print("--- C'est moi qui commence.")
				else:
					hv.monTour = False
					print("--- C'est toi qui commence.")
	else:
		hv.monTour = True
		print("--- C'est moi qui commence.")

	hv.numJoueur = 2
	print("--- J'ai la couleur", hv.couleurs[hv.numJoueur])
Esempio n. 5
0
def CoupJoueur(gui, i, j):
	""" le joueur joue sur la cellule (i,j) """
    
	# To do ! Vous devez programmer cette fonction.
	if(hv.monTour):
		if(CoupValide(i,j)):
			JouerUnCoup(gui, i, j, hv.numJoueur)
			hv.monTour = False
			sendcmd("joue",PlateauToTablierCoord(i,j))
		else:
			print("Coup impossible, case déjà occupée")
	else:
		print("Wait your turn")
Esempio n. 6
0
def CoupJoueur(gui, i, j):
    """ le joueur joue sur la cellule (i,j) """

    #Si c'est a mon tour de jouer
    if (hv.monTour == True):
        #Si mon coup est valide
        if (CoupValide(i, j) == True):
            sendcmd("joue", PlateauToTablierCoord(i, j))
            JouerUnCoup(gui, i, j, hv.numJoueur)
            hv.monTour = False
        else:
            print("ce n est pas un coup valide")
    else:
        print("ce n est pas ton tour de jouer")
Esempio n. 7
0
def CoupAdversaire(gui):
	""" traite les commandes et coups de l'adversaire """
	# To do ! Vous devez programmer cette fonction.
	(cmd,co) = recvcmd("joue","bravo","aurevoir")
	if(cmd == "joue"):
		(i,j)=TablierToPlateauCoord(co)
		if not(hv.monTour):
			if(CoupValide(i,j)):
				if(hv.numJoueur==1):
					numJoueur=2
				else:
					numJoueur=1
				JouerUnCoup(gui, i, j, numJoueur)
				if(Gagnant(numJoueur)):
					sendcmd("bravo",numJoueur)
				hv.monTour=True
	if(cmd == "bravo"):
		raise Aurevoir
	if(cmd == "aurevoir"):
		raise Aurevoir
Esempio n. 8
0
def QuitterPartie(gui):

	if (Aurevoir.etat == 0) or (Aurevoir.etat == 2):
		sendcmd('aurevoir', '')
		if Aurevoir.etat == 0:
			Aurevoir.etat = 1
			if Aurevoir.Messages.get() == ("<<<", "aurevoir"): pass
			else: exit(0)

		elif Aurevoir.etat == 2:
			Aurevoir.etat = 1
			if recvcmd('aurevoir') == ("aurevoir", ""): pass
			else: exit(0)
		
		hv.gs.close()
		print("--- La connexion est fermée.")
		sleep(2)
		gui.tk.quit()
		print("--- Le programme est quitté.")
	else:
		print("--- En attente de la réponse de l'autre joueur pour quitter. Patientez.")
Esempio n. 9
0
def QuitterPartie(gui):

	if (Aurevoir.etat == 0) or (Aurevoir.etat == 2):
		sendcmd('aurevoir', '')
		if Aurevoir.etat == 0:
			Aurevoir.etat = 1
			if Aurevoir.Messages.get() == ("<<<", "aurevoir"): pass
			else: exit(0)

		elif Aurevoir.etat == 2:
			Aurevoir.etat = 1
			if recvcmd('aurevoir') == ("aurevoir", ""): pass
			else: exit(0)
		
		hv.gs.close()
		print("--- La connexion est fermée.")
		sleep(2)
		gui.tk.quit()
		print("--- Le programme est quitté.")
	else:
		print("--- En attente de la réponse de l'autre joueur pour quitter. Patientez.")
Esempio n. 10
0
def CoupAdversaire(gui):
	""" traite les commandes et coups de l'adversaire """

	if hv.numJoueur == 1 :
		numAdv = 2
	else :
		numAdv = 1

	(cmd,coo) = recvcmd ("bravo","oups","aurevoir","joue")
	if (cmd == "bravo") :
		raise Bravo
	if (cmd == "oups") :
		raise Oups
	if (cmd == "aurevoir") :
		raise Aurevoir
	if (cmd == "joue") :
		(i,j) = TablierToPlateauCoord (coo)
		if CoupValide (i,j) and not hv.monTour :
			if (JouerUnCoup (gui,i,j,numAdv)) :
				sendcmd("bravo","")
			
			hv.monTour = True
		else :
			sendcmd("oups","")
Esempio n. 11
0
def initClient(arguments):
	""" initialisation du client """
	
	# programmation réseaux du socket
	s=socket()
	s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)

	#listeExtensions est une liste contenant toutes les extensions passées sur la ligne de commande
	listeExtensions = [key for key in arguments if arguments[key]==True]
	
	s.connect((arguments["ip"],arguments["port"]))
	hv.gs = s
	
	#bonjour extension1 extension2 ...
	sendcmd('bonjour', ' '.join(listeExtensions))
	(cmd,args)=recvcmd('bonjour')
	extensionsSupportees = []
	if len(args)>0 :
		extensionsSupportees = [param for param in args.split(' ') if arguments[param]]
	print("--- Extensions supportées par les deux joueurs :", extensionsSupportees)
	
	#joueur NomJoueur
	sendcmd('joueur', arguments["NomJoueur"])
	(cmd,args)=recvcmd('joueur')
	NomAutreJoueur = args
	print("--- L'autre joueur s'appelle %s." % NomAutreJoueur)
	
	#tablier taille1 taille2 ...
	sendcmd('tablier', ' '.join(arguments["tablier"]))
	(cmd,args) = recvcmd('tablier')
	hv.taille = int(args)
	print("--- Le serveur a choisi un tablier de taille %s" % hv.taille)

	if "pileouface" in extensionsSupportees:
		# To do ! Pour supporter l'extension pileouface, vous devez implémenter ce morceau de code
		pass
	else:
		hv.monTour = True
		print("--- C'est moi qui commence.")

	hv.numJoueur = 2
	print("--- J'ai la couleur", hv.couleurs[hv.numJoueur])
Esempio n. 12
0
def initServeur(arguments):
    """ initialisation du serveur """

    s = socket()
    s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)

    #Le serveur est ouvert à toutes adresses ip sur le port 6666
    s.bind(('0.0.0.0', 6666))
    #On autorise une connexion à la fois
    s.listen(1)
    sc, addr = s.accept()

    #listeExtensions est une liste contenant toutes les extensions passées sur la ligne de commande
    listeExtensions = [key for key in arguments if arguments[key] == True]

    hv.gs = sc

    #bonjour extension1 extension2 ...
    (cmd, args) = recvcmd('bonjour')
    sendcmd('bonjour', ' '.join(listeExtensions))
    extensionsSupportees = []
    if len(args) > 0:
        extensionsSupportees = [
            param for param in args.split(' ') if arguments[param]
        ]
    print("--- Extensions supportées par les deux joueurs :",
          extensionsSupportees)

    #joueur NomJoueur
    (cmd, args) = recvcmd('joueur')
    sendcmd('joueur', arguments["NomJoueur"])
    NomAutreJoueur = args
    print("--- L'autre joueur s'appelle %s." % NomAutreJoueur)

    #tablier taille1 taille2 ...
    (cmd, args) = recvcmd('tablier')
    sendcmd('tablier', ' '.join(arguments["tablier"]))
    hv.taille = int(args)
    print("--- Le serveur a choisi un tablier de taille %s" % hv.taille)

    if "pileouface" in extensionsSupportees:
        # To do ! Pour supporter l'extension pileouface, vous devez implémenter ce morceau de code
        y = str(uuid4())
        t = ""
        if (random == 0):
            t = "pile"
        else:
            t = "face"

        # A l'image de la description du sujet
        #On reçoit x du client
        (cmd, x) = recvcmd("pileouface")
        #On envoit f(x, y, t) au client
        f_serveur = f(x, y, t)
        sendcmd('pileouface', f_serveur)
        #On reçoit p du client
        (cmd, p) = recvcmd('pileouface')
        #On envoie y au client
        sendcmd('pileouface', y)
        #On envoie t au client
        sendcmd('pileouface', t)

        if (t == p):
            hv.monTour = False
            print("--- Ce n'est pas moi qui commence.")
        else:
            hv.monTour = True
            print("--- C'est moi qui commence.")

    else:
        hv.monTour = False
        print("--- Je ne commence pas.")

    hv.numJoueur = 1
    print("--- J'ai la couleur", hv.couleurs[hv.numJoueur])
Esempio n. 13
0
def initClient(arguments):
    """ initialisation du client """

    # programmation réseaux du socket
    s = socket()
    s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)

    #listeExtensions est une liste contenant toutes les extensions passées sur la ligne de commande
    listeExtensions = [key for key in arguments if arguments[key] == True]

    s.connect((arguments["ip"], arguments["port"]))
    hv.gs = s

    #bonjour extension1 extension2 ...
    sendcmd('bonjour', ' '.join(listeExtensions))
    (cmd, args) = recvcmd('bonjour')
    extensionsSupportees = []
    if len(args) > 0:
        extensionsSupportees = [
            param for param in args.split(' ') if arguments[param]
        ]
    print("--- Extensions supportées par les deux joueurs :",
          extensionsSupportees)

    #joueur NomJoueur
    sendcmd('joueur', arguments["NomJoueur"])
    (cmd, args) = recvcmd('joueur')
    NomAutreJoueur = args
    print("--- L'autre joueur s'appelle %s." % NomAutreJoueur)

    #tablier taille1 taille2 ...
    sendcmd('tablier', ' '.join(arguments["tablier"]))
    (cmd, args) = recvcmd('tablier')
    hv.taille = int(args)
    print("--- Le serveur a choisi un tablier de taille %s" % hv.taille)

    if "pileouface" in extensionsSupportees:
        x = str(uuid4())
        random = randint(0, 1)
        p = ""
        if (random == 0):
            p = "pile"
        else:
            p = "face"

        #On envoie x au serveur
        sendcmd('pileouface', x)
        #On reçoit f(x, y, t)
        (cmd, arg) = recvcmd('pileouface')
        f_serveur = arg
        #On envoie p au serveur
        sendcmd('pileouface', p)
        #On recoit y du serveur
        (cmd, y) = recvcmd('pileouface')
        #On peut definir sha client
        f_client = f(x, y, p)
        #On reçoit t du serveur
        (cmd, t) = recvcmd('pileouface')

        if (f_serveur == f_client):
            if (p == t):
                hv.monTour = True
                print("--- C'est moi qui commence")
            else:
                sendcmd('aurevoir')
                QuitterPartie(gui)
        else:
            hv.monTour = False
            print("--- Ce n'est pas moi qui commence")
    else:
        hv.monTour = True
        print("--- C'est moi qui commence.")

    hv.numJoueur = 2
    print("--- J'ai la couleur", hv.couleurs[hv.numJoueur])
Esempio n. 14
0
def initServeur(arguments):
	""" initialisation du serveur """
	# To do ! Pour programmer le serveur, vous devez implémenter cette fonction
# programmation réseaux du socket
	s=socket()
	s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
	
	s.bind (('0.0.0.0', 6666))
	s.listen (1)
	sc, addr = s.accept()
	print ("Connexion de : " , addr)

	#listeExtensions est une liste contenant toutes les extensions passées sur la ligne de commande
	listeExtensions = [key for key in arguments if arguments[key]==True]
	hv.gs = sc
	
	#bonjour extension1 extension2 ...
	(cmd,args)=recvcmd('bonjour')
	sendcmd('bonjour', ' '.join(listeExtensions))
	
	extensionsSupportees = []
	if len(args)>0 :
		extensionsSupportees = [param for param in args.split(' ') if arguments[param]]
	print("--- Extensions supportées par les deux joueurs :", extensionsSupportees)
	
	#joueur NomJoueur
	(cmd,args)=recvcmd('joueur')
	sendcmd('joueur', arguments["NomJoueur"])
	
	NomAutreJoueur = args
	print("--- L'autre joueur s'appelle %s." % NomAutreJoueur)
	
	#tablier taille1 taille2 ...
	(cmd,args) = recvcmd('tablier')
	sendcmd('tablier', ' '.join(arguments["tablier"]))
	
	hv.taille = int(args)
	print("--- Le serveur a choisi un tablier de taille %s" % hv.taille)

	if "pileouface" in extensionsSupportees:
		# To do ! Pour supporter l'extension pileouface, vous devez implémenter ce morceau de code
		Mot = str (uuid4())
		(cmd,args) = recvcmd ('pileouface')
		rep1 = args

		ran = randint (0,1)
		
		if ran == 0 : 
			ran = 'pile'
		else : 	
			ran = 'face'

		Server = sha256(' '.join([rep1, Mot, ran]).encode('utf8')).hexdigest()
		sendcmd ('pileouface' , Server)

		(cmd,args) = recvcmd ('pileouface')
		rep2 = args

		Client = sha256(' '.join([rep1, Mot, rep2]).encode('utf8')).hexdigest()
		sendcmd ('pileouface', Mot)

		if Client == Server : 
			hv.monTour = False
		else :
			hv.monTour = True

	else:
		hv.monTour = False

	hv.numJoueur = 1
	print("--- J'ai la couleur", hv.couleurs[hv.numJoueur])