Jeu de la devinette

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 278 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

Messages postés
266
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2009

Regression de ton niveau !? <<< non juste une lassitude

deja je ne coderais surement plus jammais de trucs en graphique , finis les dialogs, pk ? => ca prends du code pour rien rends illisible (un $did == x c pas clair )
et la vitesse d'execution, un aline est plus rapide qu'un did -a

c'est pas pour rien que sous linux tout se fais via console, je ferais la meme chose pour mes scripts
une config se vera alors bien plus rapide et je pourais faire plus de choses, combien de fois je me suis dis "je peu pas metre cette option car j'ai plus de place dans mon dialog ou ca risque de faire trop gros" ben la la question ne se posera pas, j'ai dailleur commencé à faire mon terminal

ce script a au moin l'aventage de ne pas etre codé avec les pids malgres son ortographe laborieuse certes, il est legé et efficace
Messages postés
19
Date d'inscription
dimanche 12 juin 2005
Statut
Membre
Dernière intervention
23 novembre 2006

comme ton autre remote : note : 1

Toujours useless et on la retrouve dans des scripts kikoolol.
Regression de ton niveau !?
Sinon niveau orthographe, un gros travail est attendu.
Messages postés
266
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2009

voila je vien de le finir:
http://www.ircfr.com/code.aspx?ID=40219

j'ai meme mis la commande quit ce coup la :p
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 :)
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
Afficher les 8 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.