Ce code gère un jeu de Pendu pour Xchat (installé avec le module Python).
Tout le monde peut participer, il y a une gestion simple des scores (parties gagnées, perdues).
On tire au hasard un mot dans une liste qui en contient plus de 100 et après, vous devez connaître le principe du pendu ^^
On a 10 coups à jouer. On peut aussi mettre le mot en entier au lieu de faire lettre par lettre.
Source / Exemple :
# -*- coding: cp1252 -*-
__module_name__ = "pendu"
__module_version__ = "1.0"
__module_description__ = "Pendu"
__module_author__ = "Pmol"
# Cree par Pmol en mars 2006 pour Xchat. Merci de laisser ma trace si vous utilisez ce script ;-)
# Modules :
import xchat
import random
# Cherche la lettre et cree une liste:
def cherche(le, position,mot):
global modif # Indique si l'on a trouve une lettre du mot cache
x = 0
modif = 0
while x < len(mot):
if position[x] == '*':
if mot[x] == le:
position[x] = le
modif += 1
x += 1
return position
# Affiche seulement ce que l'on a decouvert :
def affiche(position,mot): # Prend la liste des lettres decouvertes et le mot
temp = ''
for i in position:
temp += i
return temp
# Verfie si on a perdu
def perdu(compte_coups, mot, coups_restants):
global lance, nb_perdu
if coups_restants <= 0: # Si on a vraiment perdu
xchat.command("me " + 'Vous avez perdu ! C\'etait pourtant simple ! C\'etait ' + mot) # On lui dit qu'il a perdu
xchat.command("me " + 'Vous avez joue %s coups'%(compte_coups)) # On lui donne le nombre de coups joues
lance = 0 # On defini le pendu comme 'Arrete'
nb_perdu += 1 # On incremente le nombre de parties perdues
xchat.command("me " + 'Vous avez gagne %s parties et en avez perdu %s !'%(nb_gagne, nb_perdu)) # Affichage du nb de parties joues et perdues
xchat.command("me " + 'Rejouez en tapant !pendu')
return 0
else: # Si on a pas perdu, on continue
return 1
# Verfie si on a gagne
def gagne(compte_coups, mot, mot_affiche):
global lance, nb_gagne
if mot_affiche == mot: # Si on a gagne :
xchat.command("me " + 'Vous avez gagne ! Le mot cache est bien ' + mot) # On lui dit qu'il a gagne
xchat.command("me " + 'Vous avez joue %s coups !'%(compte_coups)) # On lui donne le nombre de coups joues
lance = 0 # On defini le pendu comme 'Arrete'
nb_gagne += 1 # On incremente le nombre de parties gagnees
xchat.command("me " + 'Vous avez gagne %s parties et en avez perdu %s !'%(nb_gagne, nb_perdu)) # Affichage du nb de parties joues et perdues
return 0
else: # Si on a pas gagne, on continue
return 1
# Augmente les compteurs
def compteurs():
global compte_coups, coups_restants
if modif == 0: #Si on a pas fait de modification au mot cache :
compte_coups += 1
coups_restants -= 1
else: # Si on a modifie des trucs :
compte_coups += 1
# Verifie si le mot entier donne et le meme que le mot cache, si oui, on gagne, sinon, on perd 2 essais
def verifie_mot_entier(mot, mot_donne):
global compte_coups, coups_restants
if mot_donne == mot: # Si le mot entier est le mot cache :
if coups_restants > 0: # Si on peut jouer :
gagne(compte_coups, mot, mot_donne)
compte_coups += 1
else: # Si on a perdu :
perdu(compte_coups, mot, coups_restants)
return 0
else: # Si le mot donne n'est pas le mot cache :
compte_coups += 1
coups_restants -= 2 # On enleve 2 coups au nombre de coups restants
xchat.command("me " + 'Il vous reste %s coups a jouer'%(coups_restants)) # On dit combien de coups il reste a jouer
return 1
# Analyse ce que l'on ecrit, et appelle la fonction correspondante :
def analyse(word, word_eol, userdata):
global nb_gagne, nb_perdu, liste_mots, compte_coups, coups_restants, mot, position, modif, lance
if word[1] == '!pendu': # Si on veut lancer le pendu :
xchat.command("me " +'Bienvenue dans le jeu du Pendu. Chaque lettre doit etre donnee en majuscule. Tapez !pendu pour rejouer, !fin pour quitter et !remise pour remettre les scores a zero. Chaque essai manque vous enleve une chance de gagner. Vous avez 10 essais. Si vous pensez avoir trouve le mot, vous pouvez marquer le mot entier, mais, si vous vous trompez, cela comptera comme 2 essais. Vous pouvez chatter en jouant.') # Phrase de depart
xchat.command("me " +'Vous avez gagne %s parties et en avez perdu %s.'%(nb_gagne,nb_perdu))
mot = liste_mots[random.randrange(0,len(liste_mots))] # On tire un nouveau mot au hasard
position = ['*']*len(mot)
xchat.command("me " + '*'*len(mot)) # On affiche que des *, vu que c'est le debut du jeu
coups_restants, compte_coups = 10, 0 # Il nous reste 10 coups a jouer, on a pas encore joue
lance = 1 # On definit le pendu comme 'Lance'
elif len(word[1]) == 1 and lance == 1 : # Si on ecrit juste une lettre, et que le pendu est lance
cherche(word[1], position,mot) # On cherche
mot_affiche = affiche(position,mot) # On affiche
compteurs() # On incremente les compteurs
g = gagne(compte_coups, mot, mot_affiche) # On verifie si on a pas gagne
p = perdu(compte_coups, mot, coups_restants) # On verifie si on a pas perdu
if g == 1 and p == 1: # Si on a pas perdu ni gagne :
xchat.command("me " + affiche(position,mot))
xchat.command("me " + 'Il vous reste %s coups a jouer'%(coups_restants)) # On dit combien de coups il reste a jouer
elif word[1] == '!fin': # Si on decide d'arreter
xchat.command("me " + 'Cette partie est arretee. Tapez !pendu pour rejouer')
lance = 0 # On definit le pendu comme 'Arrete'
return
elif len(word[1]) == len(mot) and lance == 1: # Si on ecrit quelque chose de la meme longueur que celle du mot cache :
u = verifie_mot_entier(mot, word[1])
if u == 1:
mot_affiche = affiche(position,mot)
xchat.command("me " + mot_affiche)
p = perdu(compte_coups, mot, coups_restants) # On verifie si on a pas perdu
elif word[1] == '!remise': # Si on veut remettre a zero les scores :
nb_gagne,nb_perdu = 0,0
xchat.command("me " + 'Les scores ont ete remis a zero')
# Affiche les commandes du jeu :
def commandes(word, word_eol, userdata):
xchat.command("me " + 'Tapez !pendu pour jouer au pendu')
# Liste des mots :
liste_mots = ['MAISON', 'PAPIER', 'CISEAUX', 'FEUILLE', 'FLUTE', 'PIANO', 'ORDINATEUR', 'CERVEAU', 'POMME', 'PATATE', 'FRUIT', 'COUSSIN', 'OREILLER', 'LIT', 'LAMPE', 'FENETRE', 'VERRE', 'GOBELET', 'CRAYON', 'STYLO', 'PANIER', 'OEUF', 'CHOCOLAT', 'PLACARD', 'CUISINE', 'CUISINIERE', 'TAPIS', 'FRIGO', 'CARREAUX', 'CARRELAGE', 'MOQUETTE', 'MONTRE', 'HORLOGE', 'RESSORT', 'STUDIO', 'CINEMA', 'ENTREPRISE', 'JEU', 'TELECOMMANDE', 'CARTON', 'PORTE', 'LOQUET', 'SERRURE', 'PORTAIL', 'HERBE', 'ARBRE', 'LIVRE', 'DICTIONNAIRE', 'PENDU', 'TELEVISION', 'CHIEN', 'VILLAGE', 'VILLE', 'PLANETE', 'TERRE', 'GOUTIERRE', 'ROUTE', 'VOITURE', 'ANTENNE', 'COLLEGE', 'ECOLE', 'LYCEE', 'LION', 'GIRAFE', 'CHIEN', 'PINSON', 'BERGERONNETTE', 'ALLEMAND', 'FRANCAIS', 'ANGLAIS', 'FLEUVE', 'TOUR', 'RIVIERE', 'MOULIN', 'IMPRIMANTE', 'GOLF', 'CLUB', 'DICTIONNNAIRE', 'MAGASIN', 'AGRAFEUSE', 'CALLIGRAPHIE', 'NUMERO', 'ART', 'BOITE', 'MAGAZINE', 'HAMSTER', 'ABONNEMENT', 'TELEPHONE', 'COLLECTION', 'BALLE', 'REDUCTION', 'OPERATION', 'LEGENDE', 'PUBLICITE', 'TOMATE', 'SALADE', 'HAMBURGER', 'LIMITE', 'LOGEMENT', 'MARMELADE', 'MUR', 'PALISSADE', 'FONTAINE', 'AMPOULE', 'CRI', 'TRANSPARENT', 'LOUTRE', 'LIONNE', 'BUDGET', 'GROUPE','TUILE', 'ESSENCE', 'MARTEAU', 'BURIN', 'MOUCHOIR', 'PEINTURE', 'LIVRE', 'ANTICONSTITUTIONNEL', 'ANTICONSTITUTIONNELEMENT', 'LETTRE', 'FRUIT', 'MAGAZINE', 'CANAPE', 'CHAMPIGNON', 'ARBORICOLE', 'PLAGE', 'PLAGIER', 'CONSTITUTION']
nb_gagne, nb_perdu, lance, modif, mot = 0, 0, 0, '', ''
# Des que l'on poste un message :
event = ("Channel Message", 1)
event2 = ("Join", 1)
xchat.hook_print(event[0], analyse, event)
xchat.hook_print(event2[0], commandes, event2)
print 'Pendu lance'
Conclusion :
S'il y a des bugs => Directions les commentaires :-)
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.