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