def check_if_can_move(c,a,new_index_y,new_index_x): if new_index_x < 0 or new_index_y < 0: print(f"Le mouvement prévu de l'aventurier {a.name} n'est pas possible, l'aventurier ne peut pas sortir de la carte, une coordonnée ne peut pas être negative !") return try: predicted_position=c.board[new_index_y][new_index_x] is_T=re.findall("T",predicted_position) print(is_T) is_A=re.findall("A",predicted_position) print(is_T) if is_A: print(f"Le mouvement prévu de l'aventurier {a.name} n'est pas possible, un aventurier fouille déjà ce terrain !") return elif predicted_position in display_mountain(): print(f"Le mouvement prévu de l'aventurier {a.name} n'est pas possible, vous n'êtes pas équipé pour escalader cette montagne.") return elif predicted_position in display_plain(): return 1 elif is_T: a.get_tresor() update_tresors(c,new_index_y,new_index_x) return 2 else: return 1 except IndexError: print(f"Le mouvement prévu de l'aventurier {a.name} n'est pas possible, l'aventurier ne peut pas sortir de la carte !")
def test_aventurier_move_blocked_by_mountain(): c=carte(4,4) m1=mountain(1,0) m2=mountain(3,3) c.mountains.append(m1) c.mountains.append(m2) c.board[m1.axis_v][m1.axis_h]=display_mountain() c.board[m2.axis_v][m2.axis_h]=display_mountain() t=tresor(2,2,1) a1=aventurier("john",3,2,"S","ADAGGADA") a2=aventurier("lucie",1,1,"N","AGGAAADAAGA") c.aventuriers.append(a1) c.aventuriers.append(a2) c.tour_de_jeu=tour(c.aventuriers) move=check_if_can_move(c,a2,new_index_y=0,new_index_x=1) assert move is None
def update_diplay_position(c,y,x): # test si un tresor était positionné sur la case de l'aventurier avant son déplacement si oui réaffichage du tresor for t in c.tresors: if (t.axis_v,t.axis_h) == (y,x): print(f"tresor:{str(t.axis_v),str(t.axis_h)}, aventurier {str(y),str(x)}") c.board[t.axis_v][t.axis_h]=t.display_tresor() # test si une montagne était positionné sur la case de l'aventurier avant son déplacement si oui réaffichage de la montagne for m in c.mountains: if (m.axis_v,m.axis_h) == (y,x): print(f"mountain:{str(m.axis_v),str(m.axis_h)}, aventurier {str(y),str(x)}") c.board[m.axis_v][m.axis_h]=display_mountain()
def init_input(dirname_input): carte_created = False cwd, inputdir, dir = verify_input_path(dirname_input) if not dir: os.makedirs(inputdir, exist_ok=True) print( f"Le dossier d'entrée vient d'être créé, veuillez ajouter votre fichier d'entrée ici. {inputdir}" ) else: getfile = get_files_in_dir(inputdir) if getfile: if len(getfile) > 1: print( f"Plusieurs fichiers d'entrée sont dans le directory{inputdir}:\n{getfile}, seul le premier est pris en compte." ) # selectedfile=raw_input(f"Plusieurs fichiers d'entrée sont présents dans {inputdir} lequel voulez vous utilisez ? \n {getfile}:") # print(selectedfile) input = open(inputdir + "/" + getfile[0], "r") for l in input: if l[0] == "C" and carte_created: print( "une carte a déjà été instancié, cette ligne ne sera pas prise en compte seul une carte peut-etre créé à la fois." ) elif l[0] == "C" and not carte_created: str = l.replace(" ", "") values = str.split("-") try: largeur = int(values[1]) longueur = int(values[2]) except ValueError: print( " Les valeurs attendues sont des entiers. veuillez modifier le fichier." ) c = carte(largeur, longueur) carte_created = True print( f"La carte a ete cree. [{largeur} unites en largeur, {longueur} unites en longueur]" ) if l[0] == "M": str = l.replace(" ", "") values = str.split("-") try: axis_h = int(values[1]) axis_v = int(values[2][0]) except ValueError: print( " Les valeurs attendues sont des entiers. veuillez modifier le fichier." ) if not 0 <= axis_h < c.largeur or not 0 <= axis_v < c.longueur: print( "La case n'est pas dans la carte, la ligne est ignoré." ) else: if c.board[axis_h][axis_v] in display_plain(): c.mountains.append(mountain(axis_h, axis_v)) print( f"On aperçoit une montagne en [{axis_h},{axis_v}]" ) c.board[axis_h][axis_v] = display_mountain() else: print( "Cette case n'est pas une plaine, cette montagne ne peut etre créé ici. La ligne est donc ignoré" ) if l[0] == "T": str = l.replace(" ", "") values = str.split("-") try: axis_h = int(values[1]) axis_v = int(values[2]) nb_tresors = int(values[3][0]) except ValueError: print( " Les valeurs attendues sont des entiers. veuillez modifier le fichier." ) if not nb_tresors > 0: print( "le nombre de tresor doit être un entier positif non nul." ) else: if not 0 <= axis_h < c.largeur or not 0 <= axis_v < c.longueur: print( "La case n'est pas dans la carte, la ligne est ignoré." ) else: if c.board[axis_v][axis_h] in display_plain(): c.tresors.append( tresor(axis_h, axis_v, nb_tresors)) print( f"{nb_tresors} trésors ont été caché ici. [{axis_h},{axis_v}]" ) else: print( "Cette case n'est pas une plaine, le trésor ne peut pas être créé ici. La ligne est donc ignoré." ) if l[0] == "A": str = l.replace(" ", "") values = str.split("-") try: name = values[1] orientation = values[4] parcours = values[5] axis_h = int(values[2]) axis_v = int(values[3]) nb_tresors = int(values[6]) except ValueError: print( " Les valeurs attendues sont des entiers. veuillez modifier le fichier." ) if not 0 <= axis_h < c.largeur or not 0 <= axis_v < c.longueur: print( "La case n'est pas dans la carte, la ligne est ignoré." ) else: if not orientation in "NSOE": print( "L'orientation renseigné n'est pas reconnu, toute triche est sanctionné, la ligne est ignoré." ) else: c.aventuriers.append( aventurier(name, axis_h, axis_v, orientation, parcours, nb_tresors)) print( f"l'aventurier {name} est inscrit. il partira de [{axis_h},{axis_v}] et s'orientera vers {orientation}" ) for t in c.tresors: c.board[t.axis_v][t.axis_h] = t.display_tresor() for a in c.aventuriers: c.board[a.axis_v][a.axis_h] = a.display_aventurier() c.design_map() input.close() c.tour_de_jeu = tour(c.aventuriers) return c else: print("Pas de fichier d'entrée présent dans :" + inputdir + "\n\n\t Veuillez créer un fichier dans ce repertoire") return