Example #1
0
def demandeTir():
	header()
	print Partie.get_JoueurActif().get_NomJoueur()+" >> TIR : "
	X = int(raw_input("X: "))
	Y = int(raw_input("Y: "))
	PosTir = Position(X,Y)
	Resultat(PosTir,Partie.get_nextJoueur().get_Grille())
	raw_input("Joueur suivant")
Example #2
0
def afficherGagnant():
	header()
	print "===================================\n"
	print "==         FIN DE PARTIE         ==\n"
	print "===================================\n"
	print "+GAGNANT: "+Partie.get_nextJoueur().get_NomJoueur()+"\n\n"
	print "-Dommage "+Partie.get_JoueurActif().get_NomJoueur()+", vous avez perdu !\n\n"
	print "===> Merci d'avoir joué ! ;)\n"
	raw_input("'Entrée' pour quitter.")
Example #3
0
    def reset(self):
        filename = FileChooser().get_filename()
        questions = Reader(filename).get_questions()
        if questions is None:
            return False

        self.partie = Partie(questions)
        # reset game
        self.partie.reset()
        self.plateau.reset()
        self.sound_manager.reset()
        self.sound_manager.play_generic()
        return True
Example #4
0
    def generer(self):
        """
        Permet de generer la partie avec les paramètres choisi par le joueur
        
        Paramètres
        ----------
        
        Return
         ------
        """
        nb_moy = self.ui.nb_IA_moyenne_choisi()
        nb_fac = self.ui.nb_IA_facile_choisi()
        nb_hn = self.ui.nb_Hn_choisi()
        print(nb_hn,nb_fac,nb_moy)
        self.partie = Partie(nb_fac,nb_moy,nb_hn,self)
        self.carte=self.partie.carte
        self.ui.lcdNumber_Metal.display(self.partie.L_joueur[0].metal_tot)
        self.ui.lcdNumber_Energie.display(self.partie.L_joueur[0].energie_tot)
        self.__xmax = Constante.xmax
        self.__ymax = Constante.ymax
        self.Epp = Constante.Ep_app

        self.H=Constante.H_Z_Constructible
        self.L=Constante.L_Z_Constructible

        self.x_inf_b = (self.__xmax - self.L )//2 +1
        self.x_sup_b= (self.__xmax + self.L )//2 -1
        self.y_inf_b =  (self.__ymax - self.H )//2 +1
        self.y_sup_b = (self.__ymax + self.H)//2 -1
        
        self.x_inf = (self.__xmax )//2 -1
        self.x_sup = (self.__xmax)//2 +2
        self.y_inf =  (self.__ymax)//2 - 1
        self.y_sup = (self.__ymax)//2 +2
Example #5
0
    def __init__(self):
        super().__init__()
        # Configuration de l'interface utilisateur.

        self.ui = Ui_Minima_Accueil()

        self.ui.setupUi(self)
        self.ui.Bouton_Generer.clicked.connect(self.generer)
        self.ui.Bouton_Findetour.clicked.connect(self.un_Tour)

        self.partie = Partie(1, 1)
        self.ui.lcdNumber_Metal.display(self.partie.L_joueur[0].metal_tot)
        self.ui.lcdNumber_Energie.display(self.partie.L_joueur[0].energie_tot)
Example #6
0
    def IA_coup(self, plateau):
        situation = plateau2mini(plateau, self)
        situationConnue = situation in self.situationsConnues
        loiProba = [] if not situationConnue else self.situationsConnues[situation]
        pourcentageVictoires = 0

        coupsConnusPre = len(loiProba)

        if self.apprentissageVolee:
            debut = time.time()

            nbParties = 0
            from Partie import Partie
            while time.time() - debut < 3: #3 secondes
                partie = Partie(self.situationsConnues, situation)
                partie.interaction()

                nbParties += 1

            nbGagnants = 0 if situation not in self.situationsConnues else len(self.situationsConnues[situation])
            pourcentageVictoires = 100 * (nbGagnants - coupsConnusPre) / nbParties

            loiProba = [] if situation not in self.situationsConnues or len(self.situationsConnues[situation]) < 30 else self.situationsConnues[situation]

        if self.apprentissageVolee:
            coup = coupPlusFrequent(self.situationsConnues[situation])

            self.coups[situation] = coup
            return coup, pourcentageVictoires

        for i in range(1, 5+1):
            if i not in loiProba and not self.pieces[i-1].arrive():
                loiProba.append(i)

        coup = choice(loiProba)
        self.coups[situation] = coup
        return coup, pourcentageVictoires
Example #7
0
def demandeNoms():
	header()
	NomJoueur = raw_input("Joueur 1>> Votre nom: ")
	Partie.get_joueur1().set_NomJoueur(NomJoueur)

	NomJoueur = raw_input("Joueur 2>> Votre nom: ")
	Partie.get_joueur2().set_NomJoueur(NomJoueur)

	print "Joueur 1 : "+Partie.get_joueur1().get_NomJoueur()
	print "Joueur 2 : "+Partie.get_joueur2().get_NomJoueur()
Example #8
0
 def testSave(self):
     """
     Test vérifiant que, sur une partie avec 3 joueurs humains qui vient juste
     d'être initialisée : 
         *Que le nom de la sauvegarde (appelée blob.txt ici) est bien correct.
         *Que la sauvegarde possède le bon nombre de lignes (34 ici).
         *Que la dernière ligne de la sauvegarde est correcte.
     """
     Game = Partie(0,3)
     Carte = Game.carte
     Save = sl.Save("blob",Carte)
     self.assertEqual(Save.Nme,"blob.txt")
     with open(Save.Nme, 'r') as f:
             List_Save = [line.strip() for line in f]
     self.assertEqual(len(List_Save),56)
     self.assertEqual(List_Save[-1],"Fin sauvegarde")
Example #9
0
    def testInit_Hn(self):
        """
        Test vérifiant :
            *Que tous les joueurs humains ont bien été crées. (3, d'après
            le paramètre d'entrée de Game)
            *Que le premier joueur humain est bien un défenseur, avec le bon
            nombre de métal et d'énergie initial.
            *Que l'objet Game est bien une instance de la classe Partie.
        
        """
        Game = Partie(0,3)
        self.assertEqual(Game.nb_hn,0)

        self.assertEqual(len(Game.L_joueur),3)
        self.assertEqual(Game.L_joueur[0]._role,'DH')
        self.assertEqual(Game.L_joueur[0].metal_tot,Constante.metal_tot)
        self.assertEqual(Game.L_joueur[0].energie_tot, Constante.energie_tot)
        self.assertIsInstance(Game,Partie)
Example #10
0
    async def back(ctx):
        stop = await phaseTestsMsg(ctx)
        if stop: return

        if ctx.author not in partiesParJoueur:
            await ctx.send(
                "Vous ne pouvez pas utiliser cette commande sans être dans une partie !"
            )
            return

        partie = partiesParJoueur[ctx.author]
        infosPartie = parties[partie]

        if len(minisParPartie[partie]) < 2:
            await ctx.send(
                "Vous ne pouvez pas utiliser cette commande au début de la partie !"
            )
            return

        miniPrec = minisParPartie[partie][
            -2]  #on récupère la mini de la situation précédente

        #on fait une nouvelle partie qui part de là
        nouvPartie = Partie(situationsConnues, miniPrec, True, False, False,
                            False, True)

        #on met à jour les enregistrements qu'il faut
        for joueur in infosPartie["joueurs"]:
            partiesParJoueur[joueur] = nouvPartie
        joueurEnCours = infosPartie["joueurs"][partie.idJoueur]

        parties[nouvPartie] = infosPartie.copy()
        del parties[partie]

        minisParPartie[nouvPartie] = minisParPartie[partie][:-1]
        del minisParPartie[partie]

        #on demande au joueur en cours de rejouer
        await affichePlateau(ctx, nouvPartie)
        await ctx.send("À votre tour joueur {} {}".format(
            nouvPartie.idJoueur + 1, joueur.mention))
Example #11
0
def placerBateaux(i=0):
	# i = BateauCourant
	

	while (Partie.get_JoueurActif().get_Bateaux().get_NombreBateauxNonPlaces() > 0):

		header()
		print "===> Placer vos bateaux <====\n"
		print Partie.get_JoueurActif().get_NomJoueur()+" >> "+str(Partie.get_JoueurActif().get_Bateaux().get_NombreBateauxNonPlaces())+ " bateaux à placer."
		print "Bateau selectionné: \nTaille:"+str(Partie.get_JoueurActif().get_Bateaux().get_Bateau(i).get_taille())+"\n"
		print("Entrez une coordonnee: ")
		X = int(raw_input("X: "))
		Y = int(raw_input("Y: "))
		LastPos=Position(X,Y,Partie.get_JoueurActif().get_Bateaux().get_Bateau(i))
		try:
			Partie.get_JoueurActif().get_Grille().marquerPosition(LastPos)
			k=1
			while(k < Partie.get_JoueurActif().get_Bateaux().get_Bateau(i).get_taille()):
			
				header()
				print "===> Placer vos bateaux <====\n"
				print Partie.get_JoueurActif().get_NomJoueur()+" >> "+str(Partie.get_JoueurActif().get_Bateaux().get_NombreBateauxNonPlaces())+ " bateaux à placer."
				print "Bateau selectionné: \nTaille:"+str(Partie.get_JoueurActif().get_Bateaux().get_Bateau(i).get_taille())+"\n"
				print("Entrez une coordonnee: ")
				X = int(raw_input("X: "))
				Y = int(raw_input("Y: "))
				pos=Position(X,Y,Partie.get_JoueurActif().get_Bateaux().get_Bateau(i))
				if (pos.est_AdjacenteY(LastPos) or pos.est_AdjacenteX(LastPos)):
					try:
						Partie.get_JoueurActif().get_Grille().marquerPosition(pos)
						k = k+1

						LastPos = pos
					except:
						raw_input("Case occuppée et/ou hors grille !")
				else:
					raw_input("Mauvaise case, non adjacente.")
			# k == taille(Bateau)
			Partie.get_JoueurActif().get_Bateaux().get_Bateau(i).set_estPlace()
			i=i+1
			raw_input("Bateau place, Bateau suivant")
		except:
			raw_input("Case occuppée et/ou hors grille !")
			placerBateaux(i)
Example #12
0
	print "==         FIN DE PARTIE         ==\n"
	print "===================================\n"
	print "+GAGNANT: "+Partie.get_nextJoueur().get_NomJoueur()+"\n\n"
	print "-Dommage "+Partie.get_JoueurActif().get_NomJoueur()+", vous avez perdu !\n\n"
	print "===> Merci d'avoir joué ! ;)\n"
	raw_input("'Entrée' pour quitter.")
try:
	Partie = Partie()
	print "Création d'une partie à 2 joueurs"
except:
	print "Erreur lors de la création de la partie !"
demandeNoms()
# Joueur 1 Actif : Placement des bateaux
placerBateaux()
raw_input("Joueur suivant")
Partie.joueurSuivant()
# Joueur 2 Actif : Placement des bateaux 
placerBateaux()
raw_input("Joueur suivant")
Partie.joueurSuivant()

# Tous les bateaux sont placés !

# Tirs 

# TO BE CONTINUED
while (not(Partie.get_JoueurActif().a_perdu())):
	demandeTir()
	Partie.joueurSuivant()
afficherGagnant()
Example #13
0
        
        L_Ht = TrPC.placement_pos(0,TrPC.Epp + 1,(y -TrPC.H )//2,(y + TrPC.H )//2,' ')
        self.assertEqual(len(L_Ht),(TrPC.Epp+1)*TrPC.H)
        
        L_Bas = TrPC.placement_pos(x-1-TrPC.Epp, x,(y - TrPC.H)//2,(y + TrPC.H )//2,' ')
        self.assertEqual(len(L_Bas),(TrPC.Epp+1)*TrPC.H)
        
        L_Gche = TrPC.placement_pos((x - TrPC.L)//2 , (x + TrPC.L )//2,0, TrPC.Epp+1,' ')
        self.assertEqual(len(L_Gche),(TrPC.Epp+1)*TrPC.L)
        
        L_Dte = TrPC.placement_pos((x - TrPC.L )//2,(x + TrPC.L )//2,y -1- TrPC.Epp, y,' ')
        self.assertEqual(len(L_Dte),(TrPC.Epp+1)*TrPC.L)
        
        L_pos = L_Ht + L_Bas + L_Gche + L_Dte 
        for k in range(3):    
            TrPC.production_unite_attaque_IA_0(1)
            self.assertIn(GamePC.L_joueur[1]._liste_unite[-1].coords,L_pos)
            self.assertEqual(TrPC.unite_disp_par_tour,1)


   
if __name__ == "__main__":
    Game = Partie(0,3)
    GamePC = Partie(2,)
    Carte = Game.carte
    Tr_jeu_0_Hn = Carte.TrHn
    Tr_jeu_0_IA = Carte.TrIA    
    Tr_jeu_0_IAA = GamePC.carte.TrIA
    unittest.main()
    
Example #14
0
 def generer(self):
     #        self.partie = Partie(self.ui.Nb_IA_Choisi(),self.ui.Nb_Humain_Choisi())
     self.partie = Partie(1, 1)
     self.ui.conteneur.update()
     print('generer')
Example #15
0
    async def demarrage(ctx, here="non", moutons=""):
        global partieEnCours
        stop = await phaseTestsMsg(ctx)
        if stop: return

        here = str(here).lower()
        moutons = True if moutons else False  #True aussi si ce champ est un str non vide
        user = ctx.author

        if here.startswith("-") and estAdmin(
                ctx.author
        ):  #pour lancer une partie de tournoi dont les joueurs sont pré-enregistrés
            idPartieAnticipee = here.replace(" ", "")
            if idPartieAnticipee in partiesTournoi and partiesTournoi[
                    idPartieAnticipee]["gagnant"] is None:
                partie = Partie(situationsConnues, MINI_DEPART, True, False,
                                False, False, True)

                joueurs = partiesTournoi[idPartieAnticipee]["joueurs"]

                #on initialise la partie comme une partie "normale"
                parties[partie] = {
                    "joueurs": joueurs,
                    "dansSalon": ctx.channel,
                    "moutons": moutons
                }
                partiesParJoueur[joueurs[0]] = partie
                partiesParJoueur[joueurs[1]] = partie

                #on enregistre dans partiesTournoi l'instance de la partie pour identifier que c'est une partie de tournoi
                partiesTournoi[partie] = idPartieAnticipee

                await ctx.send("La partie {} VS {} va commencer !".format(
                    joueurs[0].mention, joueurs[1].mention))
                await affichePlateau(ctx, partie)
                await ctx.send(
                    "À votre tour, joueur 1 {}. Vous jouez les pions jaunes/horizontaux"
                    .format(joueurs[0].mention))

                minisParPartie[partie] = [MINI_DEPART]

                return
            else:
                return

        if user not in partiesParJoueur:  #le joueur lance une nouvelle partie
            await ctx.send("Démarrage d'une nouvelle partie...")

            IA1 = "ia1" in here
            IA2 = not IA1 and "ia2" in here  #on empêche les parties IA vs IA

            partieEnCours = Partie(situationsConnues, MINI_DEPART, True, True,
                                   IA1, IA2, True)

            if IA1:
                joueurs = [1]
            elif IA2:
                joueurs = [2]
            else:
                joueurs = []

            parties[partieEnCours] = {
                "joueurs": joueurs,
                "dansSalon": ctx.channel if "here" in here else False,
                "moutons": moutons
            }
            await ctx.send(
                "En attente de joueurs...\nPour se déclarer joueur, il faut écrire **{pf}moi**. Le joueur 1 doit se déclarer en premier, puis le joueur 2."
                .format(pf=prefixeBot))

        else:  #le joueur est déjà dans une partie
            await ctx.send(
                "Vous participez déjà à une partie, vous ne pouvez pas participer à plusieurs parties en même temps."
            )
            await ctx.send(
                "Vous pouvez déclarer forfait dans votre partie en cours si vous le souhaitez avec la commande {pf}forfait"
                .format(pf=prefixeBot))

        return
Example #16
0
class Main:
    def __init__(self):

        #questions = QuestionPack4().questions
        pygame.init()
        self.plateau = Plateau(1280, 700, "./images")
        self.partie = None
        self.sound_manager = SoundManager("./audio")

    # Call public -> P
    # Call friend -> J
    # 50/50       -> L
    # Reset       -> R
    # Next question -> N
    # A B C D -> SELECT RESPONSE
    # ENTER -> Show result
    # ESCAPE -> Quit game
    #

    def reset(self):
        filename = FileChooser().get_filename()
        questions = Reader(filename).get_questions()
        if questions is None:
            return False

        self.partie = Partie(questions)
        # reset game
        self.partie.reset()
        self.plateau.reset()
        self.sound_manager.reset()
        self.sound_manager.play_generic()
        return True

    def start_game(self):
        question = self.partie.get_current_question()
        index = self.partie.current_question_index

        self.sound_manager.start_party_jingle()
        self.plateau.fill_question_area(question)
        self.sound_manager.play_ongoing_question(index)

    def select_response(self, letter):
        question = self.partie.get_current_question()
        index = self.partie.current_question_index

        self.partie.select_response(letter)
        self.plateau.select_answer(question, letter)
        self.sound_manager.play_last_word(index)

    def show_response(self):
        question = self.partie.get_current_question()
        index = self.partie.current_question_index

        good = self.partie.response_is_good()
        if good:
            self.sound_manager.play_good_response(index)
            winned_price = self.partie.gains[index]
            self.plateau.good_response(question, winned_price,
                                       self.partie.letter_selected)

        else:
            self.sound_manager.play_wrong_answer()
            self.plateau.wrong_response(question, question.good_letter)

    def run(self):
        self.reset()
        self.running = True
        while self.running:
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    print("key")
                    print(event.key)
                    if event.key == pygame.K_q:
                        print("press A")
                        # answer a
                        self.select_response("A")

                    elif event.key == pygame.K_b:
                        print("press B")
                        # answer b
                        self.select_response("B")

                    elif event.key == pygame.K_c:
                        print("press C")
                        # answer c
                        self.select_response("C")

                    elif event.key == pygame.K_d:
                        print("press D")
                        # answer d
                        self.select_response("D")

                    elif event.key == pygame.K_p:
                        print("press P")
                        # public vote
                        # DISABLED

                    elif event.key == pygame.K_j:
                        print("press J")
                        # call friend
                        if self.partie.call_friend_available > 0:
                            self.partie.call_friend_available = self.partie.call_friend_available - 1
                            index = self.partie.current_question_index
                            self.sound_manager.play_call_friend(index)
                            if self.partie.call_friend_available == 0:
                                self.plateau.update_call_friend(False)
                    elif event.key == pygame.K_l:
                        print("press L")
                        # 50/50
                        if self.partie.fiftyfifty_available > 0:
                            self.partie.fiftyfifty_available = self.partie.fiftyfifty_available - 1
                            index = self.partie.current_question_index

                            question = self.partie.get_current_question()
                            choices = ["A", "B", "C", "D"]
                            choices.remove(question.good_letter)
                            first_answer_removed = choices[randint(
                                0,
                                len(choices) - 1)]
                            choices.remove(first_answer_removed)
                            second_answer_removed = choices[randint(
                                0,
                                len(choices) - 1)]

                            self.sound_manager.play_fifty_fifty()
                            self.plateau.hide_answers(
                                [first_answer_removed, second_answer_removed])
                            if self.partie.fiftyfifty_available == 0:
                                self.plateau.update_fifty_fifty(False)
                    elif event.key == pygame.K_r:
                        print("press R")
                        if self.reset():
                            pass
                        else:
                            self.running = False
                            pygame.quit()
                            return

                    elif event.key == pygame.K_s:
                        print("press S")
                        # start game
                        self.start_game()

                    elif event.key == pygame.K_n:
                        print("press N")
                        # next question
                        question = self.partie.next_question()
                        index = self.partie.current_question_index
                        self.plateau.fill_question_area(question)
                        self.sound_manager.play_ongoing_question(index)

                    elif event.key == pygame.K_RETURN:
                        print("press ENTER")
                        # enter show response
                        self.show_response()
                    elif event.key == pygame.K_ESCAPE:
                        print("press ESCAPE")
                        self.running = False
                        pygame.quit()
                        return
Example #17
0
        nb_joueurs = input(
            "Choix non valide. Veuillez-entrer le nombre de joueurs avec lequel vous voulez jouer.\n"
        )
    nb_joueurs = int(nb_joueurs)

    ## Code utile si jamais on veut jouer contre l'IA en cours de construction ##

    # if nb_joueurs == 2:
    #     choix_IA = input("Souhaitez vous jouer contre une intelligence artificielle ? \n"
    #                      "1. Oui \n"
    #                      "2. Non\n"
    #                      "Votre choix : ")
    #
    #     while choix_IA not in ['1', '2']:
    #         nb_joueurs = input("Choix non valide. Veuillez-entrer une réponse correcte : \n")
    #
    #     choix_IA = int(choix_IA)
    #
    #     if choix_IA == 1:       # Jeu contre une IA
    #         partie_IA = PartieIA.nouvelle_partie_IA(nb_joueurs)
    #         partie_IA.jouerIA()
    #     else:                   # Jeu à 2 sans IA
    #         partie = Partie.nouvelle_partie(nb_joueurs)
    #         partie.jouer()
    #else:                       # Jeu à 4

    partie = Partie.nouvelle_partie(nb_joueurs)
    partie.jouer()

    input('Appuyer sur ENTER pour quitter.')
Example #18
0
     [910, 550], [850, 550], [790, 550], [730, 550], [670, 550], [610, 550],
     [550, 550], [490, 550], [430, 550], [370, 550], [310, 550], [250, 550],
     [190, 550], [130, 550], [130, 410], [190, 410], [250, 410], [310, 410],
     [370, 410], [430, 410], [490, 410], [550, 410], [610, 410], [770, 410]],
    os.path.join("ressources", "img", "carte1.png"))  ##Carte Niveau 1
carte2 = Carte([[285, 30], [285, 150], [515, 150], [515, 360], [675, 360],
                [675, 185], [920, 185], [920, 540], [630, 540], [630, 605],
                [380, 605], [380, 375], [220, 375], [220, 480], [70, 480]],
               [[219, 153], [282, 211], [437, 92], [578, 213], [459, 349],
                [596, 427], [738, 238], [829, 122], [859, 328], [980, 478],
                [861, 484], [683, 482], [689, 601], [504, 671], [436, 552],
                [317, 561], [298, 432], [334, 312], [161, 372], [220, 541]],
               os.path.join("ressources", "img",
                            "carte2.png"))  ##Carte Niveau 2
carte = carte1
partie = Partie(carte, affichage)

enseignantutils = EnseignantUtils()

#Musique
pygame.mixer.music.load(os.path.join("ressources", "audio", "musique.wav"))
pygame.mixer.music.play(-1, 0.0)
pygame.mixer.music.set_volume(0.6)
musique = True

execution = True


def ecoute_evenements(evenements, musique, carte):
    """Fonction qui traite les évenements et retourne si l'utilisateur veut quitter.