Jeu de la devinette

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 118 fois - Téléchargée 27 fois

Contenu du snippet

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

A voir également

Ajouter un commentaire

Commentaires

cs_wims
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1 -
Pas mal, bien présenté, propre, mais un peu chiant
La fourchette par défaut est un peu grande j'pense
Niveau code, utilise $+() :)
Panthouffle
Messages postés
281
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
14 avril 2008
-
lol classique comme jeu, ça me rappel des souvenirs x]

petit truc pour avoir la bonne soluce en 1 essai :

setmax 1
new
1

xD

ps: tu as oublié la commande quit (c'est pas très grave mais bon) xD

bon petit jeu bien scripté
hisoka2501
Messages postés
266
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2009
-
je vais la metre d'ici peu la je me suis penché sur un mode deux joueurs, et jenvisage meme un mode de jeu en reseau a deux joueurs
étant donnée que ca reste faisable :)

et vi je sais que c'est classique mais c'est dans les vieux pots qu'on fait la bonne soupe non ?
qui n'a jammais joué a ce genre de jeu dans ses grands moments de solitude ? :)
cs_wims
Messages postés
2466
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
1 août 2010
1 -
Pourquoi ne pas proposé d'autre jeu comme celui ci genre un pendu et d'autres
hisoka2501
Messages postés
266
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2009
-
ca jusqu'a ce que tu me le suggere je n'avais pas eut l'idée d'un pendu, pour cela deja je pensse qu'il faudra que je me munise d'un dictionaire au format .txt (fascillement trouvable)

hum
c fascilement faisable en fait meme :)
je vais me pencher la dessus cette semaine :)

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.