Mael_5199
Messages postés1Date d'inscriptionmardi 11 avril 2023StatutMembreDernière intervention11 avril 2023
-
Modifié le 14 avril 2023 à 14:25
mamiemando
Messages postés33367Date d'inscriptionjeudi 12 mai 2005StatutModérateurDernière intervention19 novembre 2024
-
14 avril 2023 à 14:29
Bonjour,
je ne comprends pas ce qui cloche dans mon programme, la consigne est simple il faut que le programme affiche des lapins (L), des renards (R) et de l'herbe (.) ce qui donne ceci :
et je dois pouvoir déplacer des animaux ou encore les compter. Mais je bloque sans comprendre pourquoi mon programme ne fonctionne pas le voici.
import random
# initialisation de la carte
carte = [['.' for j in range(20)] for i in range(10)]
# Ajout des lapins aux coordonnées spécifiées
lapins_coords = [(0, 0), (1, 3), (9, 12), (6, 8), (9, 15), (8, 19), (9, 19), (3, 10), (2, 8), (9, 3), (5, 8)]
for coord in lapins_coords:
carte[coord[0]][coord[1]] = 'L'
# Ajout des renards aux coordonnées spécifiées
renards_coords = [(2, 5), (3, 2)]
for coord in renards_coords:
carte[coord[0]][coord[1]] = 'R'
# Fonction pour afficher la carte
def afficheCarte(carte):
for i in range(len(carte)):
for j in range(len(carte[0])):
print(carte[i][j], end="")
print("")
# Fonction pour ajouter un animal à la carte
def ajouterAnimal(carte):
animal = input("Ajouter un animal (L pour lapin, R pour renard) : ")
x = int(input("Entrez la coordonnée x : "))
y = int(input("Entrez la coordonnée y : "))
if x >= 20 or x < 0 or y >= 10 or y < 0:
print("Erreur : coordonnées invalides")
else:
carte[y][x] = animal
return carte
# Fonction pour déplacer un animal sur la carte
def deplacerAnimal(carte, animal):
x = int(input("Entrez la coordonnée x de l'animal à déplacer : "))
y = int(input("Entrez la coordonnée y de l'animal à déplacer : "))
if x >= 20 or x < 0 or y >= 10 or y < 0:
print("Erreur : coordonnées invalides")
return carte
if carte[y][x] != animal:
print("Erreur : pas d'animal de ce type à ces coordonnées")
return carte
direction = input("Entrez la direction souhaitée (haut, bas, gauche ou droite) : ")
if direction == "haut":
if y == 0:
print("Erreur : l'animal ne peut pas sortir de la carte")
else:
if carte[y-1][x] == ".":
carte[y-1][x] = animal
carte[y][x] = "."
elif carte[y-1][x] == "L" and animal == "R":
print("Un lapin s'est fait manger par un renard !")
carte[y-1][x] = animal
carte[y][x] = "."
elif carte[y-1][x] == "R" and animal == "L":
print("Un lapin s'est fait manger par un renard !")
carte[y][x] = "."
else:
print("Erreur : il y a un autre animal à ces coordonnées")
elif direction == "bas":
if y == 9:
print("Erreur : l'animal ne peut pas sortir de la carte")
else:
if carte[y+1][x]
Si vous voulez bien m'aider ! J'espère que quelqu'un aura la solution, sinon tant pis, merci quand même pour votre considération.
jee pee
Messages postés40463Date d'inscriptionmercredi 2 mai 2007StatutModérateurDernière intervention20 novembre 20249 422 Modifié le 11 avril 2023 à 19:27
Bonjour,
Il manque la suite après la ligne 65.
Donc on ne voit pas comment tu lances les fonctions.
Enfin ne dois-tu pas utiliser une fenêtre graphique qui ferait, après modification, se ré-afficher la carte au même endroit ? Car là tu vas à chaque fois afficher une nouvelle carte, en dessous de la précédente à l'écran.
mamiemando
Messages postés33367Date d'inscriptionjeudi 12 mai 2005StatutModérateurDernière intervention19 novembre 20247 801 14 avril 2023 à 14:29
Bonjour,
Peux-tu aussi nous indiquer pourquoi le programme (une fois complété) ne fonctionne pas ? Quel est le comportement attendu ?
En tout cas, je pense qu'il manque au moins une chose dans l'extrait que tu as partagé : quand un animal disparaît, il faut le supprimer le la liste correspondante, sans quoi il sera affiché la prochaine fois que tu redessineras la carte et faussera le décompte des animaux. Pour cela, tu peux notamment utiliser del en python (voir ici).