Exemplo n.º 1
0
    def apparition_ressource(self):
        """
        Permet de faire apparaitre une ressource de métal en dehors de la zone 
        constructible (#) et des murs de défense(/).
        
        Paramètres
        ----------
        Aucun
        
        Renvoie
        -------
        Rien  
        
        """
        for z in range(int(
                self.spawn_ress)):  #spawn les ressource en generation de map
            val = randint(0, 1)
            if val == 0:
                i = randint(0, self.__xmax)
                j = choice([
                    randint(0, (self.__ymax - self.H) / 2),
                    randint((self.__ymax - self.H) / 2 + self.H + 1,
                            self.__ymax)
                ])
                Obj = self.ss_carte[i][j]
                while Obj != ' ':
                    i = randint(0, self.__xmax)
                    j = choice([
                        randint(0, (self.__ymax - self.H) / 2),
                        randint((self.__ymax - self.H) / 2 + self.H + 1,
                                self.__ymax)
                    ])
                    Obj = self.ss_carte[i][j]
                metal(i, j, self, randint(5, 15))

            elif val == 1:

                i = choice([
                    randint(0, (self.__xmax - self.L) / 2),
                    randint((self.__xmax - self.L) / 2 + self.L + 1,
                            self.__xmax)
                ])
                j = randint(0, self.__ymax)
                Obj = self.ss_carte[i][j]
                while Obj != ' ':
                    i = choice([
                        randint(0, (self.__xmax - self.L) / 2),
                        randint((self.__xmax - self.L) / 2 + self.L + 1,
                                self.__xmax)
                    ])
                    j = randint(0, self.__ymax)
                    Obj = self.ss_carte[i][j]
                metal(i, j, self, randint(5, 15))
Exemplo n.º 2
0
 def testInit(self):
     """
     Test vérifiant :
         *Que la carte et la sous-carte possédées par la ressource correspondent 
         bien à celles de l'objet Carte.
         *Que la ressource se trouve bien dans la carte de jeu.
         *Que les variables de la ressource (position, valeur, identifiant) sont
         corrects.
     """
     U = metal(0,0,Carte,2)
     self.assertEqual(U._cart,Carte)
     self.assertIn(U,Carte)
     self.assertIn(U,Carte.ss_carte)
     self.assertEqual(U.coords,(0,0))
     self.assertEqual(U.valeur,2)
     self.assertEqual(U.T_car(),'N_O_M')
Exemplo n.º 3
0
    def process(self, L):
        """
        Effectue le processus de chargement de la partie, en testant les différentes chaînes de caractères de
        la liste L.
        
        Paramètres:
        ------------
        L : list
            Liste contenant toutes les chaînes de caractères de la sauvegarde; chaque élément de
            la liste correspond à une ligne de la sauvegarde.
            
        Renvoie : 
        ----------
        Rien.
        
        """
        Tst = ['S', 'R']
        if type(self.IHM) != str:
            self.IHM.tr_en_crs = 1
            self.IHM.tr_Hn_en_crs = 1
        while len(L) != 0:
            if L[0] == 'Carte':
                # Processus de recréation de la carte sauvegardée.
                Dims = L[2]
                Nbta = L[4]
                Nbt = L[6]
                U_disp = L[7]
                Jr_en_crs = L[8]
                L = L[9:]
                Dims = Dims[1:-1]
                k = Dims.find(',')
                X = int(Dims[0:k])
                Y = int(Dims[k + 1:])
                Constante.xL = X
                Constante.yL = Y
                if int(X / 2) % 2 == 0:
                    LL = int(X / 2) + 1
                else:
                    LL = int(X / 2)
                if int(Y / 2) % 2 == 0:
                    LH = int(Y / 2) + 1
                else:
                    LH = int(Y / 2)
                LEp = int(max(X, Y) / 20)
                Constante.LL_Z_Constructible = LL
                Constante.LH_Z_Constructible = LH
                Constante.LEp_app = LEp

                Constante.Lnbta = int(Nbta)

                Constante.Lnbt = int(Nbt)
                U_disp = float(U_disp)

                self.Lcarte = Map.Map([], 1, self.IHM)
                self.Lcarte.TrIA.unite_disp_par_tour = U_disp
                self.Lcarte.TrHn.unite_disp_par_tour = U_disp
                self.Lcarte.TrHn.Jr_en_crs = int(Jr_en_crs)
                print("Carte OK")

            while L[0] == 'Ressource':
                #Processus de chargement des ressources sauvegardées sur la carte.
                Val = L[1]
                Pos = L[2]
                L = L[4:]

                Pos = Pos[1:-1]
                k = Pos.find(',')
                X = int(Pos[0:k])
                Y = int(Pos[k + 1:])

                Val = int(Val)

                metal(X, Y, self.Lcarte, Val)
                print("Ressource OK")

            while L[0] == 'Joueur':
                # Processus de chargement des joueurs de la partie, et de leurs caractéristiques principales.
                Role = L[1]
                Metal_tot = int(L[2])
                Energie_tot = int(L[3])
                Ur = float(L[4])
                self.Jr = Joueur(Role)
                self.Lcarte.L_joueur.append(self.Jr)
                self.Jr.metal_tot = Metal_tot
                self.Jr.energie_tot = Energie_tot
                self.Jr.nbe_unite_restantes = Ur
                L = L[6:]
                while L[0] == 'Bat':

                    # Processus de chargement des batiments du joueur actuel.
                    Typ = L[1]
                    Sante = L[2]
                    Pos = L[3]
                    L = L[4:]
                    Sante = int(Sante)
                    Typ = Typ[-2:]
                    Pos = Pos[1:-1]
                    k = Pos.find(',')
                    X = int(Pos[0:k])
                    Y = int(Pos[k + 1:])
                    if Typ == "QG":
                        B = QG(X, Y, self.Lcarte)
                        B.sante = Sante
                        self.Jr._liste_bat[0].append(B)
                    elif Typ[0] == "P":
                        Id = int(Typ[1])
                        B = Panneau_solaire(X, Y, self.Lcarte)
                        B.sante = Sante
                        B.id = Id
                        self.Jr._liste_bat[1].append(B)
                    elif Typ[0] == "F":
                        Id = int(Typ[1])
                        B = Foreuse(X, Y, self.Lcarte)
                        B.sante = Sante
                        B.id = Id
                        self.Jr._liste_bat[2].append(B)
                if L[0] == "Fin bat":
                    print("Fin bat")
                    L = L[2:]

                while L[0] == "Unite":
                    # Processus de chargement des unités du joueur actuel.
                    k = -2
                    Typ = L[1]
                    Num_joueur = L[2]
                    Sante = L[3]
                    Pos = L[4]
                    if Role[1] == 'H':
                        Capmvt = int(L[5])
                        L = L[6:]
                    else:
                        L = L[5:]
                    tTyp = Typ[k:]
                    while tTyp[0] not in Tst:
                        k = k - 1
                        tTyp = Typ[k:]
                    Typ = tTyp
                    Num_joueur = int(Num_joueur)
                    Sante = int(Sante)
                    Pos = Pos[1:-1]
                    k = Pos.find(',')
                    X = int(Pos[0:k])
                    Y = int(Pos[k + 1:])
                    if Typ[0:2] == "RC":
                        Id = int(Typ[2:])
                        U = Robot_combat(Role, self.Lcarte, X, Y)
                        U.sante = Sante
                        U.capmvt = Capmvt
                        self.Jr._liste_unite.append(U)

                    elif Typ[0:2] == "RO":
                        Id = int(Typ[2:])
                        U = Robot_Ouvrier(Role, self.Lcarte, X, Y)
                        U.sante = Sante
                        U.capmvt = Capmvt
                        self.Jr._liste_unite.append(U)

                    elif Typ[0] == "S":
                        if len(Role) > 3 and Role[3] == "0":
                            Id = int(Typ[3:])
                            U = Scorpion0(Role, self.Lcarte, X, Y, Num_joueur)
                            U.sante = Sante
                            U.id = Id
                            self.Jr._liste_unite.append(U)

                        elif len(Role) > 3 and Role[3] == "1":
                            Id = int(Typ[3:])
                            U = Scorpion1(Role, self.Lcarte, X, Y, Num_joueur)
                            U.sante = Sante
                            U.id = Id
                            self.Jr._liste_unite.append(U)

                        elif Role[1] == "H":
                            Id = int(Typ[1:])
                            U = Scorpion(Role, self.Lcarte, X, Y, Num_joueur)
                            U.sante = Sante
                            U.id = Id
                            U.capmvt = Capmvt
                            self.Jr._liste_unite.append(U)

                if L[0] == "Fin unite":
                    print("Fin unite")
                    L = L[1:]

            if L[0] == "Fin sauvegarde":
                L = []
            else:
                L = L[1:]