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 !
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.