le but du jeu est de deviner un nombre mystere, il se joue seul (pour le moment car lidée d'implementer un mode deux joueurs vien de me prendre !)
il se lance par: /start.play
il se deroulle dans une @window pour éviter de pourir une fenetre de serveur ou de chan ou defile votre vie sociale, heu les converses ircéenes...
Source / Exemple :
on *:start:{
if ($hget(wbs.devinete)) hfree wbs.devinete
}
alias -l wbs.devinete.show.version {
aline $1 Script devinete version: 1.2 par Adamaru alias Chr0nos
aline $1 Contact: #xiato@irc.dreams-fr.net
}
alias -l wcolor return $+($chr(3),04,$1-,$chr(15))
alias -l wbs.devinete.show.help {
var %win = $1 , %table = $2
aline %win Aide
aline %win $wcolor(new) : Commencer une nouvelle partie
aline %win $wcolor(stop) : Arreter la partie en cour
aline %win $wcolor(clear) : Efface la fenetre en cour
aline %win $wcolor(version) : Affiche la version du script
aline %win $wcolor(setmax) : Vous permet de determiner le nombre max à deviner (1000000 par defaut) $iif($hget(%table,max),[Actuel: $ifmatch $+ $chr(93))
aline %win $wcolor(solution) : Donne la solution mais met un terme à la partie en cours
aline %win $wcolor(help) : Affiche l'aide
aline %win $wcolor(quit) : fermer
if ($hget(%table,partie)) aline %win Une partie est actuelement en cours
}
alias start.play {
if ($hget(wbs.devinete)) hfree wbs.devinete
hmake wbs.devinete
var %win = @devinette
if ($window(%win)) window -c %win
window -e %win
wbs.devinete.show.help %win wbs.devinete
}
on *:input:@:{
if ($active == @devinette) {
var %win = @devinette , %table = wbs.devinete
aline %win $1-
if ($1 == new) {
if (!$hget(%table,partie)) {
var %max = $iif($hget(%table,max),$ifmatch,1000000)
aline %win Nouvelle partie.
aline %win Entrez un nombre entre 1 et %max
hadd -m %table num $encode($rand(1,%max),m)
hadd %table partie 1
hadd %table ctime $ctime
}
else aline %win Une partie est deja en cours: demande rejetée, faites " $+ $wcolor(stop) $+ " pour arreter la partie
}
elseif ($1 == stop) {
if ($hget(%table,partie)) {
hadd %table partie 0
hdel %table num
aline %win Partie annulée.
wbs.devinete.show.help %win %table
}
else aline %win Aucune partie en cours: demande rejetée
}
elseif ($1 == help) wbs.devinete.show.help %win %table
elseif ($1 == version) wbs.devinete.show.version %win
elseif ($1 == clear) {
window -c %win
window -e %win
wbs.devinete.show.help %win %table
}
elseif ($1 == solution) {
if ($hget(%table,partie)) {
aline %win La solution était: $decode($hget(%table,num),m)
aline %win Vous aviez tenté $hget(%table,try) éssai(s)
hdel %table num
hdel %table ctime
hadd %table partie 0
hadd %table try 0
aline %win Fin de la partie, tappez ' $+ $wcolor(new) $+ ' pour une nouvelle partie ou ' $+ $wcolor(help) $+ ' pour afficher l'aide
}
else {
aline %win Aucune partie en cours: demande rejetée
aline %win tappez ' $+ $wcolor(help) $+ ' pour afficher l'aide
}
}
elseif ($1 == setmax) {
if (!$2) aline %win Parametre manquant: setmax x
else {
if ($2 isnum) {
if ($hget(%table,max)) && ($hget(%table,max) == $2) {
aline %win Le nombre demandé est le même que celui actuelement parametré: rien à faire.
aline %win Demande rejetée.
aline %win tappez ' $+ $wcolor(help) $+ ' pour afficher l'aide
return
}
hadd -m %table max $2
if ($hget(%table,partie)) {
aline %win Anulation de la partie en cour
aline %win Demarage d'une nouvelle partie
hadd %table num $encode($rand(1,$2),m)
hadd %table try 0
hadd %table ctime $ctime
}
aline %win Changement OK
}
else aline %win Parametre invalide: setmax x (x doit etre un nombre entier positif)
}
}
elseif ($1- isnum) {
if ($hget(%table,partie)) {
var %num = $decode($hget(%table,num),m) , %max = $iif($hget(%table,max),$ifmatch,1000000)
if ($hget(%table,try)) hinc %table try
else hadd -m %table try 1
if ($1 > %max) aline %win Le nombre ne peut depasser %max
if ($1 < %num) aline %win Plus grand
elseif ($1 > %num) aline %win Plus petit
elseif ($1 == %num) {
aline %win Bravo $1 était effectivement le bon nombre !
aline %win tu l'a trouvé apres $hget(%table,try) éssai(s) !
aline %win Il vous à falut $duration($calc($ctime - $hget(%table,ctime))) !
hadd -m %table try 0
hadd %table partie 0
hdel %table num
hdel %table ctime
wbs.devinete.show.help %win %table
}
}
else aline %win Aucune partie en cours, faites ' $+ $wcolor(new) $+ ' pour demarer une nouvelle partie
}
else aline %win Commande ' $+ $1 $+ ' inconue: tappez ' $+ $wcolor(help) $+ ' pour la liste des commandes disponibles
}
}
on *:exit:{
if ($hget(wbs.devinete)) hfree wbs.devinete
}
Conclusion :
voila postez vos avis :) et surtout des idées d'amélioration
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.