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))
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')
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:]