Pendu en @window

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 017 fois - Téléchargée 25 fois

Contenu du snippet

Voila il s'agis du célebre du pendu version mirc script :)
pour le lancer:
/pendu

pour le fermer: /pendu close
ou alors: quit dans la fenetre du pendu

configuration:
creez un fichier texte a la racine de mirc ( //echo -a $mircdir si vous ignorez ou c'est )
nomez le: pendu.dico.txt

fonctionement:
Une ligne dans le fichier = 1 mot
le script choisis une ligne au hazzard dans le fichier texte
vous pouvez changer le chemin du fichier texte en éditant la variable %file = pendu.dico.txt
example: %file = c:\dico\dictionaire.txt

pour lancer une partie:
/pendu (ouvre la fenetre de jeu)
new

par defaut le nombre de tentatives infructueuses pour un mot est de 8, pour le changer éditez la variable %max

Source / Exemple :


alias pendu {
  var %win @pendu , %table = wbs.pendu
  if ($hget(%table)) hfree %table
  if ($window(%win)) window -c %win
  if ($1 != close) {
    window -e %win
    hmake %table
    pendu.help %win
  }
}
alias -l repchar return $+($iif($calc($2 -1) > 0,$mid($1,1,$calc($2 -1))),$3,$mid($1,$calc($2 +1)))
alias -l xadd hadd $1-
alias -l pget return $hget(wbs.pendu,$1-)
alias -l wcolor return $+($chr(3),04,$1-,$chr(15))
alias -l pendu.help {
  var %win = $1
  aline %win $wcolor(new) : Commence une nouvelle partie
  aline %win $wcolor(stop) : Arrete la partie en cour
  aline %win $wcolor(word) : Affiche le mot courant (celui que vous avez devoilé)
  aline %win $wcolor(clear) : Efface le contenu de la fenetre (termine aussis la partie)
  aline %win $wcolor(quit) : Ferme la fenetre
  aline %win $wcolor(help) : Affiche cette aide
  aline %win $wcolor(regles) : Affiche les regles du jeu
}
alias -l pclean {
  var %table = $1
  hdel %table partie
  hdel %table word
  hdel %table try
  hdel %table mot
}
alias -l pendu.eval {
  if ($left($1,1) == /) return
  var %win = @pendu , %table = wbs.pendu , %max = 8 , %file = pendu.dico.txt
  aline %win $+($chr(3),09,$1-,$chr(15))
  if ($1 == new) {
    if (!$pget(partie)) {
      xadd -m %table partie $ctime
      xadd %table mot $encode($read(%file),m)
      var %word = $str($chr(42),$len($decode($pget(mot),m)))
      xadd %table try 0
      xadd %table word %word
      aline %win Une nouvelle partie vien d'etre lancée: %word
    }
    else aline %win Erreur: Une partie est deja en cours, impossible d'en demarer une nouvelle, faites $wcolor(stop) pour arreter la partie en cour puis recomencez. 
  }
  elseif ($1 == stop) {
    if ($pget(partie)) {
      pclean %table
      aline %win Partie annulée.
    }
    else aline %win Erreur: Aucune partie en cours.
  }
  elseif ($1 == regles) {
    aline %win les regles sonts les suivantes:
    aline %win - Une seulle letre à la fois
    aline %win - Au bout de %max éssais vous êtes disqualifiées
    aline %win - Pour soumetre une letre il vous suffit de la tapper pendent une partie
  }
  elseif ($1 == word) {
    if ($pget(partie)) aline %win Mot: $pget(word)
    else aline %win Erreur: Aucune partie en cour.
  }
  elseif ($1 == clear) pendu
  elseif ($1 == quit) pendu close
  elseif ($1 == help) pendu.help %win
  elseif ($1 == liste) {
    if (!$2) {
      aline %win La commande list vous permet d'éditer la liste des mots du pendu les options disponibles sonts les suivantes:
      aline %win - read : vous permet de consulter la liste des mots (cela peu etre long sur de grandes listes)
      aline %win - add : Ajoute un mot fournis en parametre
      aline %win - edit : edite la liste avec le programe associé pour le type .txt
      aline %win - del : supprime le mot fournis en parametre de la liste
      aline %win syntaxe: $1 option parametre
      return
    }
    if ($2 == read) {
      .fopen pendu %file
      while ($fread(pendu)) aline %win $ifmatch
      .fclose pendu
    }
    elseif ($2 == edit) {
      if (!$exists(%file)) {
        aline %win Erreur: le fichier %file est introuvable
        return
      }
      aline %win Runing %file
      run %file
    }
    elseif ($2 == del) {
      if (!$3) aline %win Erreur: Vous devez spécifier un mot à supprimer: $1-2 mot
      elseif ($4) aline %%win Erreur: vous ne pouvez pas spécifier plus d'un mot, pour supprimez une phrase utilisez: $1-2 edit
      else {
        write -ds [ $+ [ $3 ] ] %file
        aline %win Le mot $3 à bien été supprimé.
      }
    }
    elseif ($2 == add) {
      if (!$3) aline %win Erreur: il manque un parametre: $1-2 mot
      else {
        write %file $3-
        aline %win le mot $3- à bien été ajouté
      }
    }
  }  
  elseif ($len($1-) == 1) {
    if ($pget(partie)) {
      if ($1 !isin $decode($pget(mot),m)) {
        hinc %table try
        if ($pget(try) == %max) {
          aline %win Vous avez échoué !
          aline %win La solution était: $decode($pget(mot),m)
          pclean %table
          return
        }
        aline %win La lettre $+(",$1,") N'est pas dans le mot mystere.
        aline %win Essais: $pget(try)
        aline %win Restants: $calc(%max - $pget(try))
      }
      else {
        hinc %table times
        aline %win La letre $+(",$1,") est dans le mot mystere:
        var %word = $pget(word) , %real = $decode($pget(mot),m) , %n = $count(%real,$1)
        aline %win Il y à %n $1 dans le mot
        while (%n > 0) {
          var %word = $repchar(%word,$pos(%real,$1,%n),$1)
          dec %n
        }
        xadd %table word %word
        aline %win Mot: %word
        if (%word == %real) {
          aline %win Félicitation vous avez trouvé le mot !!!
          aline %win Il s'agissai bien de %real
          if ($pget(try)) aline %win Vous avez fait $pget(try) erreure(s) en le cherchant !
          else aline %win Vous n'avez meme pas fait d'erreur en voulant le trouver !!! auriez vous triché ? ....
          pclean %table
          aline %win Faites $wcolor(new) pour demarer une nouvelle partie.
        }
      }
    }
    else aline %win Aucune partie en cour, tappez $wcolor(help) pour plus de rensseignements
  }
  else aline %win Erreur: Commande inconue
}

on *:input:@pendu:{
  pendu.eval $1-
}

on *:exit:/if ($hget(wbs.pendu)) hfree wbs.pendu

Conclusion :


voila je sais que je ne réinvente pas l'eau chaude la mais on me l'avais demandé :) et je voulais voir comment j'aurais fais ca :p

A voir également

Ajouter un commentaire

Commentaires

Messages postés
14
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
24 mars 2009

Voilà, pour ceux que ça interresse , j'ai mis une liste de mot que j'ai trouvé et non pas faite, en téléchargement direct sur :

http://perso.wanadoo.fr/Zen-Garden/download/dico.pour.pendu.zip

Good Game Giova'06

ps : Je cherche un dictionnaire en txt, ou si kelk1 sait comment remplir ma liste, de définitions sans ce taper des heures de copier coller sur un dico en ligne, je suis preneur.
Messages postés
266
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2009

Remote useless <<< en francais ?

pour le manque d'imagination sache que je ne pretents pas réinventer le jeu du pendu, juste que j'en ai fais ma version, je la partage ici en tant que present plutot que de la garder pour moi seul, si elle ne te conviens pas libre a toi de ne pas la prendre, cepdendent je te serais reconaisan de faire des commentaires plus constructifs a l'avenir, meme remarque pour l'autre source
d'avance merci
Messages postés
19
Date d'inscription
dimanche 12 juin 2005
Statut
Membre
Dernière intervention
23 novembre 2006

Note : 1
Remote useless, manque d'imagination ...
Messages postés
266
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2009

regarde la ligne 38 ;)
je vais l'utiliser a la place d'une table suplémentaire
au debut j'utilisai 0 et 1 pour faire mes comparaison mais la je fais: 0/$null ou $ctime ce qui évite de faire une table en plus
pour le chrono je ne sais pas encore su je vais l'integrer au debut je voulais metre un truc pour dire "vous avez mis tant de temp" genre $duration($calc($ctime - $pget(partie))) mais apres réflexion l'utilitée était bien faible...
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1
J'pense que la table avec le ctime servais a faire un crono et j'pense aussi que ne pas avoir continué l'idée est un tort
Afficher les 13 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.