begin process at 2012 05 24 01:21:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > PENDU POUR XCHAT

PENDU POUR XCHAT


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :xchat, pendu, irc Niveau :Initié Date de création :24/04/2006 Vu :5 633

Auteur : The_Pmol

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 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

CALCULE LA FRÉQUENCE DU CPU par Guillamue06
Source avec Zip Source avec une capture NOTEPAD POUR PYTHON par grephit
EXTRAIRE LE CONTENU D'UNE ARCHIVE .TAR OU .RAR par brennal
Source avec Zip SCRIPT PERMETTANT DE DÉCODER LA STRUCTURE SECONDAIRE D'UNE P... par Basilio
SUPPRESSION par Rano Its

 Sources en rapport avec celle ci

Source avec une capture BOT DÉMOCRATIQUE par YaCoUbA
Source avec Zip Source avec une capture MOTUS EN PYTHON 2.6 AVEC TKSNACK par Mints
JEU DU PENDU par Sciroccu
XCHAT RECONNEXION par jad_jay
Source avec Zip Source avec une capture XCHAT-PYTHON -- REPONDEUR par cartoongraphist

Commentaires et avis

Commentaire de coolcubix le 19/05/2006 18:36:45

Dans la liste des mots, dictionnaire avec trois N ? :)

Sinon, pas testé mais ça a l'air bien sympa ^^

Commentaire de macfleid le 02/12/2006 05:54:00

Quand je tape !pendu j'ai tout qui s'affiche 2 fois ...
Les longue phrase d'explication du bot + 2 mots à trouver.

J'ai donc tout en double comme si je joué pour 2 personnes ...

Sinon je trouve ce pendu pas mal du tout (pas de connaissande en prog donc ...)

Commentaire de macfleid le 04/12/2006 20:03:12

Finalement c'est bon ca marche nikel. Ca se lancé 2 fois a cause d'une mauvaise manip.
Par contre on peut y jouer que en écrivant en noir ... les remote doivent etre off.
Et domage qui a pas de points pour les joueur au lieu d'un score général ...

Sinon je laisse tourné et il est assez apprécié ^^

Commentaire de Nitrite59 le 03/08/2007 01:03:03

et le zip alors ??!!

 Ajouter un commentaire


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&#233;e un bot irc qui doit, par l'interm&#233;diaire de socket, g&#233;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.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales