Accueil > > > PENDU POUR XCHAT
PENDU POUR XCHAT
Information sur la source
Description
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
- # -*- 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'
# -*- 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 :-)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Bot IRC [ par maxpeg0705 ]
Bonjour,j'aimerai me lancer dans un projet de petit bot IRC Je suis débutant (mais je me débrouille un peu avec les sockets) : j'arrive a me connecter
aide pour xchat svp [ par Jamu ]
Salut a tous Je debute sur xchat et le python ben je connais pas,j'ai chercher des tuto sur google mais j'ai trouvé que des tuto de python en général
[xchat] faire tourner des scripts python [ par khayyam ]
bonsoir tout le monde je n'arrive pas à faire tourner des scripts python, même un simple hello world __module_name__ = "helloworld" __module_versio
Projet de bot irc [ par emilrom ]
Bonjour, Je cherche un bon codeur en tcl, C, php, python dans le but de crée un bot irc qui doit, par l'intermédiaire de socket, gérer
bot irc python problème rejoindre channel [ par Kuby ]
Bonjour, voila, après avoir un petit peu fouiller sur le net, j'ai reussi a trouver / modifier ceci : Mais je n'arrive pas à rejoindre de channel... a
Bot IRC Python ... problème à l'ouverture de la socket [ par tcyrill2 ]
Bonjour ici, Voilà, on m'a filé les bases d'un bot IRC en python. Je sais qu'il fonctionne car j'ai eu l'occaz de le tester avec la personne qui me
Pendu - Codeur interface graphique [ par Armanol ]
Bonjour, je suis Armanol, je suis programmeur en python. Je crée actuellement un pendu. Site (brièvement crée à l'occasion) : http://hitmanblog.x10.
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
974 Application Server (12.2.4.0)974 APPLICATION SERVER (12.2.4.0)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP mySongBook Player (1.0.0)MYSONGBOOK PLAYER (1.0.0)mySongBook Player est un logiciel gratuit permettant l'accès à une archive de tablatures/partitio... Cliquez pour télécharger mySongBook Player
|