IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Problème programme bataille navale


Sujet :

Programmation multimédia/Jeux Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 16
    Par défaut Problème programme bataille navale
    Bonjour à tous,
    Je suis lycéen et en NSI nous avons des mini-projets à faire. J'ai choisit de réaliser une bataille navale
    Petit problème la partie de mon programme qui place les bateaux ne fonctionne pas mais je ne comprend pas pourquoi

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        if tour_placement == 0 :
            bateau_1 = construire_bateau((position1,position2),(orient),2)
            carte[0][bateau_1[0][0]][bateau_1[0][1]] = 5
            carte[0][position1,position2[1][0]][bateau_1[1][1]] = 5
     
        if tour_placement == 1:
            bateau_2 = construire_bateau((position1,position2),(orient),3)
            carte[0][bateau_2[0][0]][bateau_2[0][1]] = 4
            carte[0][bateau_2[1][0]][bateau_2[1][1]] = 4
            carte[0][bateau_2[2][0]][bateau_2[2][1]] = 4
     
        if tour_placement == 2:
            bateau_3 = construire_bateau((position1,position2),(orient),3)
            carte[0][bateau_3[0][0]][bateau_3[0][1]] = 3
            carte[0][bateau_3[1][0]][bateau_3[1][1]] = 3
            carte[0][bateau_3[2][0]][bateau_3[2][1]] = 3
     
        if tour_placement == 3:
            bateau_4 = construire_bateau((position1,position2),(orient),4)
            carte[0][bateau_4[0][0]][bateau_4[0][1]] = 2
            carte[0][bateau_4[1][0]][bateau_4[1][1]] = 2
            carte[0][bateau_4[2][0]][bateau_4[2][1]] = 2
            carte[0][bateau_4[3][0]][bateau_4[3][1]] = 2
    la fonction "construire_bateau" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def construire_bateau (pt, dir, lg):
        x, y = pt
        dx, dy = dir
        bateau = [pt]
        pt = ajouter(pt,dir)
        for i in range (lg-1):
            bateau.append(pt)
            pt = ajouter(pt,dir)
        return bateau
    La fonction "ajouter" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def ajouter(point, vecteur):
        x, y = point
        dx, dy = vecteur
        return x+dx, y+dy
    Merci par avance de votre aide

  2. #2
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Il manque trop d'informations. Il faudrait définir « Ne fonctionne pas » par ce qu'il se passe et ce que tu attends.
    On ne sait pas ce qu'est carte, pourquoi carte[0] doit être un tableau de x, y avec des valeurs de 2 à 5.

    Dans ton code rien n'indique que position1 ,position2 sont incrémentés ou changés, ton problème pourrait donc venir d'écrasements de valeurs.

    Il y a à mon sens un problème dans la structuration de ton tableau carte.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 16
    Par défaut
    Salut,

    Les valeurs de 2 à 5 sont les emplacements des différents bateaux (5 = le bateau de 2 de long // 4 = un bateau de 3 de long // etc)

    "carte" est un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    carte = [ #Grille du joueur A
              [ [0, 0, 0, 0, 0, 0, 0, 0], 
                [0, 0, 0, 0, 0, 0, 0, 0], 
                [0, 0, 0, 0, 0, 0, 0, 0], 
                [0, 0, 0, 0, 0, 0, 0, 0], 
                [0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0]
     
              ],
              #Grille joueur B
              [ [0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0]
              ]
            ]
    le carte[0] c'est pour mettre les valeurs dans grille du joueur A (celui qui place les bateaux)
    L'erreur est : TypeError: 'int' object does not support item assignment

    Désolé ça fait un peu info en vrac mais je sais pas trop comment l'organiser

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Gal.o.u Voir le message
    L'erreur est : TypeError: 'int' object does not support item assignment
    Normalement, le message d'erreur vous indique aussi le numéro de ligne et affiche l'instruction en erreur.
    Ça évite de chercher dans tout le code que vous avez posté et permet de s'assurer que l'instruction en erreur est bien dedans.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 16
    Par défaut
    Voila l'intégralité de l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Traceback (most recent call last):
      File "<string>", line 250, in run_nodebug
      File "D:\users\Tarting\Desktop\Lycée\NSI\Bataille_navale\bataille_navale_console.py", line 78, in <module>
        carte[0][bateau_1[0][0]][bateau_1[0][1]] = 5
    TypeError: 'int' object does not support item assignment
    La line ne correspond peut être pas car je ne vous ait pas envoyer l’entièreté du code (je peux vous l'envoyer si vous le voulez)

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Le message d'erreur semble dire que:
    • carte[0][bateau_1[0][0]] ou
    • carte[0]

    sont des entiers et l'indexation/assignation qui vient derrière "plante" comme on peut le reproduire avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> 1[10] = 3
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'int' object does not support item assignment
    >>>
    A vous d'utiliser l'instruction magique "print" pour visualiser ce que sont/contiennent:
    • carte[0][bateau_1[0][0]] ou
    • carte[0]

    avant l'erreur.

    Mais vous allez sans doute constater que cette erreur est la conséquence d'un cafouillage bien avant dans votre code.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programme bataille navale sous python
    Par Eden_guegan dans le forum Programmation multimédia/Jeux
    Réponses: 2
    Dernier message: 11/10/2018, 12h18
  2. programme bataille navale
    Par GuiBB dans le forum C++
    Réponses: 4
    Dernier message: 28/04/2016, 10h31
  3. Programmation bataille navale
    Par zo-68 dans le forum Programmation multimédia/Jeux
    Réponses: 8
    Dernier message: 19/01/2015, 09h49
  4. programmation bataille navale
    Par adamorane dans le forum Programmation multimédia/Jeux
    Réponses: 1
    Dernier message: 14/12/2013, 13h09
  5. [LG]Programme Bataille Navale en Pascal
    Par RaFaL dans le forum Langage
    Réponses: 21
    Dernier message: 10/06/2003, 21h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo