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 :

Blocage sur une fonction vérifiant l'emplacement d'un bateau


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 14
    Points : 4
    Points
    4
    Par défaut Blocage sur une fonction vérifiant l'emplacement d'un bateau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def verification (a,b):
        global a
        global b
        a=(int(input("Entrer l'abscisse de votre 1er bateau")))
        b=(int(input("Entrer l'ordonnée de votre 1er bateau")))
        while (a)>10 or (b)>10:
            print("Oups, votre bateau est en dehors du jeu veuillez recomencer")
            a=(int(input("Entrer l'abscisse de votre bateau")))
            b=(int(input("Entrer l'abscisse de votre bateau")))
        print ("Votre bateau est placé en",a,b)
     
    cJoueur1=(int(input("Entrer l'abscisse de votre 1er bateau")))
    dJoueur1=(int(input("Entrer l'ordonnée de votre 1er bateau")))
    verification(cJoueur1,dJoueur1)
    Alors voila j'ai crée une fonction permettant de vérifié si le bateau, qui a pour coordonnées (cJoueur1,dJoueur), est bien dans la grille mais j'ai un message d'erreur qui me dis "name 'a' is paramater and global". Je n'ai sûrement pas compris quelque chose mais je ne sais quoi, pouvez vous m'aider ? Merci !

  2. #2
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Citation Envoyé par sosodu42 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def verification (a,b):
        global a
        global b
        a=(int(input("Entrer l'abscisse de votre 1er bateau")))
        b=(int(input("Entrer l'ordonnée de votre 1er bateau")))
    ...
    Le fouet, le fouet, le fouet !

    a (ou b) en argument. Mis en global puis saisis !!!
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par plxpy Voir le message
    Le fouet, le fouet, le fouet !

    a (ou b) en argument. Mis en global puis saisis !!!
    Excuse moi je suis débutant , cela fais 3 mois que je programme, pourrai tu m'expliquer quelle est mon erreur ?

  4. #4
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Si tu as une fonction avec deux arguments (a et b), c'est pour t'en servir !
    C'est à l'appelant de te fournir l'abscisse et l'ordonnée via un appel (exemple) : verification(4, 6)

    Donc pas de global pour aller chercher quoi ? Ni même les re-saisir via des input.

    C'est vraiment la B-A-BA. N'aurais-tu pas sauté des étapes ? Sinon, le célèbre Swinnen ...
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Le problème si je comprend bien est que je ne peux demandé de saisir 'a' et 'b' alors que je les est déclarés comme global. Certes je ne peux pas toujours justifier ces fautes par mon amateurisme en informatique mais j'essaye simplement de comprendre pourquoi cela ne fonctionne t-il pas et comment puis-je faire pour que la fonction fasse ce que je prévoit. Je ne comprend pas comment une fonction peut vérifier et redemander les coordonnées

  6. #6
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Tu mélanges tout.

    Le lien vers le bouquin de swinnen est à utiliser sans modération !
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  7. #7
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Pour être moins lapidaire, plus constructif et en me souvenant de mes premiers "programmes" en Fortran ...

    Une fonction Python, c'est un peu comme une fonction en math. Sauf qu'en python, on a trés souvent plusieurs variables.

    Ce n'est pas à l'intérieur de ta fonction que tu te poses la question de saisir/demander quelle valeur tu as en entrée.

    En math, dans ta fonction f(x), tu calcules le résultat avec x qui es fourni.

    Ben, là, c'est la même chose. S'il faut demander à l'utilisateur de saisir a et b, c'est "en dehors" de ta fonction.

    exemple (python2, pour les print):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> def verification(a, b):
    ...     print "je travaille avec a qui vaut", a
    ...     print "je travaille avec b qui vaut", b
    ... 
    >>> 
    >>> verification(4, 6)
    je travaille avec a qui vaut 4
    je travaille avec b qui vaut 6
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def verification (a,b):
        if (a>10 or b>10) :
            print("Oups, votre bateau est en dehors du jeu veuillez recomencer")
     
    cJoueur1=(int(input("Entrer l'abscisse de votre 1er bateau")))
    dJoueur1=(int(input("Entrer l'ordonnée de votre 1er bateau")))
    verification(cJoueur1,dJoueur1)
    Voila je viens de finir ma fonction qui vérifie si le bateau est dans le jeu, comment puis-je faire pour que le joueur saisisse de nouveau les coordonnées du bateau ?

  9. #9
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par sosodu42 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def verification (a,b):
        if (a>10 or b>10) :
            print("Oups, votre bateau est en dehors du jeu veuillez recomencer")
     
    cJoueur1=(int(input("Entrer l'abscisse de votre 1er bateau")))
    dJoueur1=(int(input("Entrer l'ordonnée de votre 1er bateau")))
    verification(cJoueur1,dJoueur1)
    Voila je viens de finir ma fonction qui vérifie si le bateau est dans le jeu, comment puis-je faire pour que le joueur saisisse de nouveau les coordonnées du bateau ?
    Tu peux par exemple introduire une variable qui définie si ta position est correcte, et l'utiliser dans une boucle "while"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    position = False
    def verification (a,b):
        global position
        if (a>10 or b>10) :
            print("Oups, votre bateau est en dehors du jeu veuillez recomencer")
        else :
            position = True
     
    while position == False:
        cJoueur1=(int(input("Entrer l'abscisse de votre 1er bateau")))
        dJoueur1=(int(input("Entrer l'ordonnée de votre 1er bateau")))
        verification(cJoueur1,dJoueur1)
    Il y a sûrement d'autres façons plus propres de le faire, mais c'est ce qui m'est venu à l'esprit en premier

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    oui ce que tu me montre semble fonctionner je n'avais pas du tout penser à cela merci beaucoup

Discussions similaires

  1. Besoin d'aide sur une fonction
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/08/2005, 17h40
  2. Probleme sur une fonction vérif
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/10/2004, 13h25
  3. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26
  4. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  5. PerlDoc sur une fonction d'un module
    Par lesouriciergris dans le forum Modules
    Réponses: 2
    Dernier message: 13/03/2003, 20h50

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