Example #1
0
 def envoyerFlotte(self):
     if(self.vue.choisirNbVaisseaux.get() > 0):
         self.modele.humain.listeFlottes.append(Classes.flotteDeVaisseaux(self.vue.choisirNbVaisseaux.get(), self.modele.listeEtoiles[self.modele.etoileDepart], self.modele.listeEtoiles[self.modele.etoileArrivee], 1, self.modele.temps_courant))
         self.modele.listeEtoiles[self.modele.etoileDepart].nbVaisseaux -= self.vue.choisirNbVaisseaux.get()
         etoileDepart = None
         etoileDepart = None
         self.vue.surfaceJeu.delete("selection")
         self.vue.choisirNbVaisseaux.set(0)
         self.vue.choisirNbVaisseaux.place_forget()
         self.vue.boutonEnvoyerFlotte.place_forget()
Example #2
0
    def deroulerTour(self):
        #Tour des Gubrus
        if(not self.modele.gubrus.mort):
            #Envoyer flottes vers planete la plus proche
            self.modele.gubrus.listeFlottes.append(Classes.flotteDeVaisseaux(self.modele.listeEtoiles[self.modele.gubrus.etoileMere].nbVaisseaux,self.modele.listeEtoiles[self.modele.gubrus.etoileMere],self.modele.gubrus.strategieAttaque(self.modele),2,self.modele.temps_courant))
        
        #Tour des Czin

        #Si les Czins sont toujours en vie
        if(not self.modele.czin.mort):
        
            #Si les Czins sont en mode rassemblement_force
            if(self.modele.czin.rassemblement_force):

                #Si on possede une armada soit 3 x force_attaque
                if(self.modele.listeEtoiles[self.modele.czin.base].nbVaisseaux >= self.modele.czin.forceAttaque(self.modele.temps_courant)*3):
                    #Envoyer l'Armada vers la base prospective
                    self.modele.listeFlottes.append(Classes.flotteDeVaisseaux(self.modele.listeEtoiles[self.modele.czin.base].nbVaisseaux, self.modele.listeEtoiles[self.modele.czin.base], self.modele.czin.etablirBase(self.modele), 3, self.modele.temps_courant))
                    self.self.modele.listeEtoiles[self.modele.czin.base].nbVaisseaux = 0
                    self.modele.czin.listePossessionsFlottes.append(len(self.modele.listeFlottes)-1)
                    self.modele.czin.rassemblement_force = False
                    self.modele.czin.etablir_base = True
                
                #Si les Czins on plusieurs Etoiles
                elif(len(self.modele.czin.listePossessions) > 1):

                    planeteProche = False
                    
                    #Pour tous les numeros d'etoile que les Czins possedent
                    for numero in self.modele.czin.listePossession:
                        print("infinie")
                        
                        #Pour calculer la distance
                        differenceX = abs(self.modele.listeEtoiles[numero].posX - modele.listeEtoiles[sel.modele.czin.base].posX)
                        differenceY = abs(self.modele.listeEtoiles[numero].posY - modele.listeEtoiles[sel.modele.czin.base].posY)

                        #Calculer la distance a l'aide du theoreme de pythagore
                        distance=math.sqrt(math.pow(differenceX, 2)+math.pow(differenceY, 2))
                        
                        #Si les etoiles sont a distance rassemblement
                        if(distance <= 6):

                            planeteProche = True
                            
                            #Si le nombre de vaisseau sur cette etoile est plus grand que 3
                            if(self.modele.listeEtoile[numero] > 3):
                                
                                #Choisir le nombre de vaisseaux a envoyer sur la base soit nbVaisseaux - 3
                                vaisseauxAEnvoyer = self.modele.listeEtoile[numero].nbVaisseaux - 3
                            
                                #Creation de la flotte de Vaisseau
                                self.modele.listeFlottes.append(Classes.flotteDeVaisseaux(vaisseauxAEnvoyer, self.modele.listeEtoile[numero], self.modele.listeEtoile[self.modele.czin.base], 3, self.modele.temps_courant))
                                self.modele.listeEtoile[numero].nbVaisseaux -= vaisseauxAEnvoyer
                                self.modele.listeFlottes[len(self.modele.listeFlottes)-1].armada = True
                                self.modele.czin.listePossessionsFlottes.append(len(self.modele.listeFlottes)-1)
                            
                                #On enleve les vaisseaux sur l'etoile une fois la flotte creee
                                self.modele.listeEtoile[numero].nbVaisseaux = self.modele.listeEtoile[numero].nbVaisseaux - vaiseauxAEnvoyer

                    #Si il n'y a pas d'etoile a distance rassemblement de la base changer la base pour l'etoile mere
                    if(not planeteProche):
                        self.modele.czin.base = self.modele.czin.etoileMere
                            
                
            
            #Si on est en mode conquerir_grappe
            if(self.modele.czin.conquerir_grappe):

                etoileABonneDistance = False
                
                for etoileAConquerir in self.modele.listeEtoiles:

                    #Pour calculer la distance
                    differenceX = abs(etoile.posX - modele.listeEtoiles[sel.modele.czin.base].posX)
                    differenceY = abs(etoile.posY - modele.listeEtoiles[sel.modele.czin.base].posY)

                    #Calculer la distance a l'aide du theoreme de pythagore
                    distance=math.sqrt(math.pow(differenceX, 2)+math.pow(differenceY, 2))

                    #Si cette toile est a distance grappe 
                    if(distance <= self.czin.DISTANCE_GRAPPE):

                        #Si il y a une etoile a la bonne distance
                        etoileABonneDistance = True
                        
                        #Si le nombre de vaisseau sur la base est plus grand ou egal a froce_attaque
                        if(self.modele.listeEtoiles[self.modele.czin.base] >= self.modele.czin.forceAttaque(self.modele.temps_courant)):
                            self.modele.listeFlottes.append(Classes.flotteDeVaisseaux(self.modele.czin.forceAttaque(self.modele.temps_courant), self.modele.listeEtoile[self.modele.czin.base], etoileAConquerir, 3, self.modele.listeEtoiles.index(etoileAConquerir), self.modele.temps_courant))
                            self.modele.listeEtoile[self.modele.czin.base].nbVaisseaux -= self.modele.czin.forceAttaque(self.modele.temps_courant)
                            self.modele.czin.listePossessionsFlottes.append(len(self.modele.listeFlottes)-1)
                            

                        #Sinon on sort de la boucle puisqu'il n'y a pas assez de vaisseaux sur la base
                        else:
                            break

                    if(not etoileABonneDistance):
                        self.modele.czin.rassemblement_force = True
                        self.modele.czin.conquerir_grappe = False
                        
        #Evaluer chaque dixieme d'annee
        for i in range(0,10):

            #Pour chaque flotte Czin   
            for flotte in self.modele.czin.listeFlottes:
                #Si la flotte est arrivee a destination
                if(round(flotte.anneeArrivee, 1) == self.modele.temps_courant+(i/10)):
                    print("Une flotte Czin est arrivee!")
                    #Si la planete est ennemi
                    self.combatVaisseau(flotte, flotte.destination)
                        
                    if(flotte.armada):
                        self.modele.czin.etablir_base = False
                        self.modele.czin.conquerir_grappe = True

            #Pour chaque flotte Humaine 
            for flotte in self.modele.humain.listeFlottes:
                #Si la flotte est arrivee a destination
                if(round(flotte.anneeArrivee, 1) == self.modele.temps_courant+(i/10)):
                    print("Une flotte Humaine est arrivee!")
                    #Si la planete est ennemi
                    self.combatVaisseau(flotte, flotte.destination)

            #Pour chaque flotte Gubrus  
            for flotte in self.modele.gubrus.listeFlottes:
                #Si la flotte est arrivee a destination
                if(round(flotte.anneeArrivee, 1) == self.modele.temps_courant+(i/10)):
                    print("Une flotte Gubru est arrivee!")
                    #Si la planete est ennemi
                    self.combatVaisseau(flotte, flotte.destination)
                

        #Generer des vaisseaux
        for etoile in self.modele.listeEtoiles:
            etoile.genererVaisseau()
            print(etoile.nbVaisseaux)

        #Update les informations
        self.vue.choisirNbVaisseaux.place_forget()
        self.vue.boutonEnvoyerFlotte.place_forget()
        self.vue.surfaceJeu.delete("selection")
        self.vue.surfaceJeu.delete("info")
        self.modele.temps_courant += 1
        self.vue.labelAnnee.config(text="Annee : "+str(self.modele.temps_courant))

        #Update les logo ainsi que la map
        self.vue.afficherProprietaire(self.modele)
        self.vue.afficherMap(self.modele)