Jeu du pendu

Contenu du snippet

Voici une version du jeu du pendu très simpliste.

Je sais que j'ai tendance à faire des rallonges de code, je corrige ça petit à petit.
Ca reste de la programmation linéaire, je n'ai programmé aucune classe.

C'est mon premier post alors soyez indulgents !

Source / Exemple :


# -*- coding: utf-8 -*-

import random

def masque(chaine,liInd=0):
        
        i = 0
        lenght = len(chaine)

        listeetalon = []
        
        ch = chaine[0]
        
        for i in range (1,lenght-1,1):

                if type(liInd)==type(listeetalon):
                        
                        if len(liInd)==0:
                                ch = ch + '*'

                        else:
                                j = 0
                                for j in range(len(liInd)):

                                        if liInd[j] == i:
                                                ch = ch + chaine[i]
                                                

                                if i+1 != len(ch):
                                        ch = ch + '*'
                                                
                else:
                        ch = ch + '*'

        ch = ch + chaine[lenght-1]
        return ch

def test_lettre(car, mot):

        i = 0
        lenght = len(mot)
        li = []
        
        for i in range(1,lenght-1,1):

                if mot[i] == car:
                        li.append(i)
        return li

def testmot(motor,mot2):
        i = 0
        compteur = 0
        lenghtor = len(motor)
        lenght2 = len(mot2)
        
        if lenghtor != lenght2:
                return False
        
        else:
                for i in range(lenghtor):
                        if mot2[i] == motor[i]:
                                compteur = compteur + 1
                if compteur == lenghtor:
                        return True
                else:
                        return False

def revenir():
        
            oui = "oO"
            non = "nN"
            choix = "?"
            i = 0
            print "\nRevenir au menu principal ? (O/N)"
            choix = raw_input()

            while(choix != oui[0] and choix != non[0] and choix != oui[1] and choix != non[1]):
                    print"Je n'ai pas compris votre saisie. O/N ?"
                    choix = raw_input()

            for i in range (2):
                if(choix == oui[i]):
                    menu()
                elif(choix == non[i]):
                    return 0

def verif_saisie(liste,saisie):
        i = 0
        lenght = len(liste)-1
        
        for i in range(lenght):
                if liste[i]==saisie:
                        print "Vous avez déjà tenté la lettre",saisie,
                        print "ainsi que les lettres",liste[0:lenght]
                        return False

                
def choixmot():
        
        liste = ["fromage","alambique","casserole","programme","television","logiciel","avion","gourmandise"\
        ,"telechargement","illegalite","instrument","tondeuse","ordinateur","programmation","technologie",\
        "diffusion","estampage","navigation","hasardeux","fondations","artistique","utilisation","imbuvable",\
        "legume","innovation","constitution","iconique","evidence","invitation","cavite","lampadaire","limonade"\
                ,"bouteille","concours","culture","psychologie","cardiologue","pharmaceutique","laboratoire","scolaire"\
                ,"rasoir","medicament","perfusion","pansement","forage","aiguille","costume","danser","contemporain"\
                ,"mondialisation","environnement","ombrelle","vetement","sentiment","congelateur","spatule","chandelier"\
                ,"bateau","commandant","paquerette","coquelicot","robinetterie","armoiries","boutique","fantome","plaisanterie"\
                ,"ironique","electricite","ingenieur","infirmiere","informatique","biologie","citoyennete","chaussette","confiseries"\
                ,"glacier","bistrot","opticien","elegant","aquatique","piscine","romantique","antiquite","automobile","italienne"]

        hasard = random.randint(0,len(liste)-1)
        motchoisi = liste[hasard]
        
        print "\nUn mot a été choisi parmi la base de donnée\n"
        print masque(motchoisi),"(",len(motchoisi),"lettres )"
        
        i = 0
        nbessai = 13

        liste2= []
        lisaisie = []
        
        for i in range(nbessai):
                
                print 'Proposition',i+1,"(",nbessai-i,"essais restants ) :"
                saisie = raw_input()
                                
                if len(saisie)==1:
                        lisaisie.append(saisie)
                        if verif_saisie(lisaisie,saisie) == False:
                                lisaisie.remove(saisie)
                                print "Saisissez une autre lettre"
                                saisie = raw_input()
                                lisaisie.append(saisie)
                                
                
                if len(saisie)==len(motchoisi):
                        if testmot(motchoisi,saisie) == True:
                                print "\nBravo, le mot à trouver est bien",motchoisi
                                break
                else:
                        liste2 = liste2 + test_lettre(saisie,motchoisi)
                        a = masque(motchoisi,liste2)
                        if testmot(motchoisi,a) == True:
                                print "\nBravo, le mot à trouver est bien",a
                                break
                        else:
                                print '\n',a
                
        
        if i == (nbessai-1):    
                print"\nGame Over - Vous avez été pendu !"
                print"Le mot était :",motchoisi
        revenir()
                

def menu():
                
        print'\t\t-- LE PENDU --\n'
        print'1. Jouer'
        print'2. Instructions'
        print'3. Quitter'
                
        saisie = raw_input()
        saisie = int(saisie)
                
        while saisie < 1 or saisie > 3:
                print'Erreur, 1 pour Jouer, 2 pour Quitter'
                saisie = raw_input()
                saisie = int(saisie)
                
        if saisie == 1:
                choixmot()
        elif saisie == 2:
                print "\n\t\t-- Règles du jeu --"
                print "Des mots sont tirés au sort parmi une base de donnée. Seule la première et dernière lettre\
                sont affichées, les autres lettres étant remplacées par des étoiles. Le but du jeu est d'essayer de\
                retrouver le mot. Vous pouvez saisir vos réponses lettres par lettre ou avec l'intégralité du mot.\
                Les majuscules et les caractères spéciaux (accents,...) sont volontairement omis pour plus de facilité.\n"
                menu()
        else:
                return 0
                        
                        
menu()

Conclusion :


Voilà, une bonne amélioration serait de gérer les mots aléatoirement à partir d'un fichier texte.

J'ai fait ce post pour me faire une idée de ma façon de programmer. Critiquez-moi !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.