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

Python Discussion :

Jeu des allumettes - Python


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Jeu des allumettes - Python
    Bonjour à tous,
    Je me présente, suis actuellement en terminale S et je fais la nouvelle spécialité ISN (sciences du numérique) ou nous apprenons à programmer en langage Python.
    Toujours novice, j'ai décidé de réaliser en petit "projet" le fameux jeu des allumettes cependant ce n'est pas très concluant..
    Il fonctionnait à un moment mais comme nous avons vu comment définir des fonctions j'ai dû le modifier et j'avoue être un perdu maintenant. Je vous montre ce que j'ai fais, c'est un peu fouilli, d'ailleurs ne faites pas attention aux notes comme j'ai déplacé et changé pas mal de choses avec à chaque fois un nouveau problème qui apparait. Je pense que c'est surtout un problème de variables dans la partie principale mais si le soucis actuel (le int pour rentrer le nombre d'allumette) et encore plus incompréhensible pour moi.

    Si quelqu'un pouvait m'aider, j'en serai très reconnaissante
    Merci, d'avance
    nala130

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Ton code est embrouillé comme un code de débutant, mais pas plus.

    J'ai l'impression que tu ne 'vois' pas ce que fait ce code.
    J'ai supprimé tes lignes de commentaire et j'ai mis mes observations.

    Essayes de répondre aux questions qui se posent, après on verra pour un code qui fonctionne ... et plus si affinités.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    # -*- coding: utf-8 -*-
    from random import*
     
    def menu(rejouer):
        fin=False
        while fin==False: # S'écrit 'while not fin:'
             print("\n\n******** Menu ********")            #  \n = sauter une ligne
             print("Bienvenue dans le jeu des allumettes!")
             print("Le but du jeu est simple : Choisissez un nombre d'allumette puis decidez du nombre (entre 1 et 3) a enlever.\n A son tour, l'ordinateur en fera de meme et ainsi de suite jusqu'a ce qu'il n'y ait plus d'allumettes.\n Le perdant est celui qui retirera la derniere allumette.")
             print("(1) Jouer ")
             print("(2) Quitter le programme ")
     
             if rejouer==2:
                fin=True
     
             return rejouer # !! 'rejouer' est donné en argument à la fonction,
                            # quelle était ton intention ?
     
    def PartieJoueur(nbrAllumettes,nbrAlluAretirer,reponse): # A quoi sert l'argument 'reponse' ?
        print("/"*nbrAllumettes,end='')  # Tâche ménagère, ne devrait pas être ici.
        print(" Vous jouez avec",alluaffiche,"allumettes") # Pareil
        # C'est ici qu'il faudrait saisir le nombre d'allumettes choisi par le joueur
        while 1:
            if (nbrAlluAretirer<1):
                print("Entrer un nombre SUPERIEUR ou egal a 1 ")
                # Ici, on dit au joueur de rectifier son choix ...
                reponse = False
            elif (nbrAlluAretirer>3):
                print("Entrer un nombre INFERIEUR ou egal 3")
                # .. ici encore ...
                reponse = False
            # ... sans lui donner la possibilité de le faire.
            if reponse == True: #
                break
     
                # !! Les lignes qui suivent ne s'exécuteront jamais',
                # est-ce le but ? !!
                print("/"*alluaffiche,end='')  # Tâche ménagère, ne devrait pas être ici.
                if(alluaffiche<=1):
                    print(" Vous avez gagne :D")
     
    def tourOrdi(nbrAlluAretirer,alluaffiche):
        if (nbrAlluAretirer > 8):
            print(" L'ordinateur a retirer",nbrAlluAretirer,"Allumettes")
        # Voir à créer un algo qui simplifie ces 14 lignes
        elif (nbrAlluAretirer == 8):
            nbrAlluAretirer = 3
        elif (nbrAlluAretirer == 7):
            nbrAlluAretirer = 2
        elif (nbrAlluAretirer == 6):
            nbrAlluAretirer = 1
        elif (nbrAlluAretirer == 5):
            nbrAlluAretirer = 1
        elif (nbrAlluAretirer == 4):
            nbrAlluAretirer = 3
        elif (nbrAlluAretirer == 3):
            nbrAlluAretirer = 2
        elif (nbrAlluAretirer == 2):
            nbrAlluAretirer = 1
     
            # !! Les lignes qui suivent s'exécuteront si 'nbrAlluAretirer == 2' !!
            alluaffiche=alluaffiche-nbrAlluAretirer
     
            print("/"*alluaffiche,end='')  # Tâche ménagère, ...
            print(" Il reste",alluaffiche,"allumettes")
            if(alluaffiche<=1):
                 print(" Vous avez perdu :(")
     
        return alluaffiche # 1 chance sur 8 d'avoir été modifiée
     
     
    #Programme principal #
    rejouer=1
    menu(rejouer)
    rejouer=input("Quel est votre choix? : ") # Devrait être retourné par la fonction menu()
     
    nbrAllumettes=int(input("Rentrer un nombre entier d'allumettes : ")) # >> fonction menu()
    alluaffiche=nbrAllumettes
     
    # Mettre ceci dans une fonction
    nbrAlluAretirer=int(input("Combien d'allumettes (entre 1 et 3) voulez-vous retirer? : "))
    reponse = True
    PartieJoueur(nbrAllumettes,nbrAlluAretirer,reponse)
    nbrAlluAretirer = (int(random()*3+1))
    alluaffiche=alluaffiche-nbrAlluAretirer
     
    tourOrdi(nbrAlluAretirer,alluaffiche)
    rejouer = True
    while rejouer:
        nbrAllumettes=int(input("Rentrer un nombre entier d'allumettes : "))
        alluaffiche=nbrAllumettes
        while alluaffiche>1: 
            # !!! Boucle infinie s'il reste plus d'une allumette !!!
            print("/"*nbrAllumettes,end='')
            print(" Vous jouez avec",alluaffiche,"allumettes")
     
        rejouer = menu() # !! menu() demande un argument
     
    # Fin du programme #
    print("*** Fin ***")

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Ce que VinsS veut dire, c'est qu'une fonction est une entité dédié à effectuer une tâche spécifique du programme. En général les tâches données aux fonctions suivent une certaine logique de pensée. S'il faut un menu spécifique, on donnera effectivement le menu et sa gestion à une fonction plutôt que le menu à une fonction X et sa gestion à une fonction Y

    Les fonctions ont souvent besoin d'éléments pour travailler (les paramètres) et peuvent aussi souvent renvoyer à l'appelant le résultat de son travail (la valeur).

    Prenons par exemple ton menu. Un menu c'est quoi ? Une liste de choix, une réponse donnée par l'utilisateur, une vérification de la réponse (doit correspondre aux choix du menu) et renvoi de la réponse à celui qui attend le retour. Dans cette optique, pourquoi cette fonction reçoit un paramètre "rejouer" ? A quel moment le menu en a-t-il besoin pour faire son travail ?

    Par ailleurs tu affiches ton jeu plusieurs fois à différents moments. Ne penses-tu pas que l'affichage est un point important dans le jeu lui-même et qu'il pourrait faire l'objet d'une fonction bien à lui laquelle pourrait embarquer des routines rendant cet affichage plus joli (effacement écran, couleurs, etc) ?

    Donc voilà. C'est ce genre de réflexions qui te permettront de découper ton programme en fonctions de travail correctes puis ensuite de les écrire pour programmer ton jeu...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Jeu des Allumettes
    Par jca dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 23/02/2013, 16h12
  2. jeu des allumettes
    Par musicetcie dans le forum Télécharger
    Réponses: 5
    Dernier message: 11/11/2012, 13h05
  3. Jeu des allumettes en java
    Par tom31 dans le forum Général Java
    Réponses: 2
    Dernier message: 08/04/2008, 09h59

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