Programme en python problème

Fermé
Mael_5199 Messages postés 1 Date d'inscription mardi 11 avril 2023 Statut Membre Dernière intervention 11 avril 2023 - Modifié le 14 avril 2023 à 14:25
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 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 :

L...................
...L................
.....R..L...........
..R.......L.........
....................
........L...........
........L...........
....................
...................L
...L........L..L...L

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.

Au revoir.

2 réponses

jee pee Messages postés 39650 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 avril 2024 9 238
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.


0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
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).

Bonne chance

0