Livre d'or en hashtables, mes premieres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 624 fois - Téléchargée 27 fois

Contenu du snippet

ce livre d'or permet de poster un message, d'en voir un au hasard ou un bien précis, et de rechercher le message d'une personne

je n'ai fait ca que pour tester les hashtables, je peux y apporter des améliorations si vous me donnez des idées

Source / Exemple :


on *:connect: {                  ;à la connexion
  if (!%table) {                 ;si elle n'est pas créée
    hmake livre 100              ;on crée la table livre
    set %table ok                ;on dit qu'elle est créée
    hsave -o test livredor.txt   ;et on sauvegarde
  }
  else {                         ;sinon
    hload test livredor.txt      ;on la charge
  }
}

;ici, en fonction de la commande, on est redirigé vers une alias
on *:text:!livre*:#: {
  if ($2 == stats) notice $nick Il y a $hmatch(livre,nom*,0) message $+ $iif($hget(livre,total) > 1,s) posté $+ $iif($hget(livre,total) > 1,s) dans le livre d'or.
  elseif ($2 == post) post $nick $3-
  elseif ($2 == voir) voir $nick $3
  elseif ($2 == recherche) recherche $nick $3
else notice $nick Cette commande n'est pas reconnue
}

alias post {
  if (!$2) notice $1 Tu as oublié de préciser le message à poster.   ;s'il n'y a pas de message, on prévient
  else {
    hinc livre total                                ;on incrémente le total
    set %total $hget(livre,total)                   ;on le met dans une variable
    hadd livre nom $+ %total $1                     ;et on
    hadd livre message $+ %total $2-                ;enregistre
    hadd livre date $+ %total le $date à $time      ;les
    hadd livre $1 %total                            ;données
    hsave -o test livredor.txt                      ;puis on sauvegarde
    notice $1 Merci d'avoir posté un message dans le livre d'or. Pour le voir, tape !livre voir %total   ;on remercie
  }
}

alias voir {
  if (!$2) {   ;si on n'a pas d'idée précise de ce qu'on vaut voir
    set %hasard $rand(1, $hmatch(livre,nom*,0))   ;on nous donne un chiffre au hasard
    notice $1 Un message au hasard: $hget(livre,message $+ %hasard)                       ;qui permet de prendre
    notice $1 Il a été posté par $hget(livre,nom $+ %hasard) $hget(livre,date $+ %hasard) ;des données au hasard
  }
  else {  ;sinon
if ($2 > $hmatch(livre,nom*,0)) notice $1 Ce message n'existe pas
else {
    notice $1 Voici le message n° $+ $2 : $hget(livre,message $+ $2)             ;on donne le message que la personne
    notice $1 Il a été posté par $hget(livre,nom $+ $2) $hget(livre,date $+ $2)  ;a voulu voir en donnant le chiffre correspondant
  }
}
}

alias recherche {
if (!$2) notice $1 Tu as oublié de préciser la recherche à effectuer.  ;si il recherche rien, on lui donne rien
else {      ;sinon
notice $1 Il y a $hmatch(livre,* $+ $2 $+ *,0) résultat $+ $iif($hmatch(livre,* $+ $2 $+ *,0) > 1,s) sur la recherche: $2   ;on lui donne combien y'a de resultats
if ($hmatch(livre,* $+ $2 $+ *,0) != 0) {
notice $1 Voici le résultat le plus proche: $hmatch(livre,* $+ $2 $+ *,1)    ;puis on lui detaille le plus precis
notice $1 Son message: $hget(livre,message $+ $hmatch(livre,* $+ $2 $+ *,0)) ;vraiment détaillé
notice $1 Message posté $hget(livre,date $+ $hmatch(livre,* $+ $2 $+ *,0))   ;meme la date
}
}
}

Conclusion :


pour bien lire les commentaires allignés, voir le code avec une police uniforme (tous les caracteres de la meme taille)

soyez indulgents, c'est la premiere foi que je me sers des hashtables, et ca me plait plutot assez... je compte bien approfondir tout ca.

dossier à mettre dans les remotes
pour voir un message au hasard, taper !livre voir
pour en voir un rpecis, taper !livre voir <nombre>
pour rechercher, taper !livre recherche <recherche du pseudo>
pour poster, taper !livre post <message>

A voir également

Ajouter un commentaire Commentaires
Messages postés
137
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
22 août 2005

ben ouais je pourais en faire moins... je pourais meme en faire aucune, mais bon, quand y'a possibilité d'incrementer, de décrementer, d'ajouter, d'enlever, de voir, et tout ca dans un temps record... je vois pas pkoi j'utiliserai plus de vars et moins de hashtables!
Messages postés
136
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
23 juillet 2005

jconais tj pas les HashTables moi......Je sais juste stoké mais pas lire dans une Hash (se qui est embétant) mais il pourrait en faire moin (enfin jpense)
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1
bah attends, il débute en hash tables, laisser lui le temps de s'adapter, t'inquiètes, ds quelques temps il va gérer ;)
Messages postés
136
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
23 juillet 2005

Le princeeeeeee des varsssss est arrivéééééééééééééééé !!
Vranchement nivo vars tu peux un peut optimisé......
Messages postés
1726
Date d'inscription
vendredi 12 septembre 2003
Statut
Membre
Dernière intervention
13 juin 2009
1
parceque tu es habitué aux vars, perso j'arrive moins bien manier les variables que les hash tables donc j'ai pas ce problème lol .. :x
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.