Simple quizz

Soyez le premier à donner votre avis sur cette source.

Vue 17 427 fois - Téléchargée 945 fois

Description

Systême de quizz simpliste.
Pour l'utiliser vous devez créer un txt nommé questions.txt avec les questions sous la forme:

Question ? Réponse
Exemple:
Combient vaut 2 + 2 ? 4

Car le script utilise la caractère "?" comme repère.

Néanmoins dans le zip j'ai ajouté la database de questions du célèbre Wquizz modifié pour qu'elle marche avec ce quizz.

Source / Exemple :


;Systême de quizz simple par Kentix

;Infos (si vous souhaitez modifier par la suite...)
;La variable %quizzchan contient le nom du salon
;La variable %questionsdir contient le chemin du fichier texte questions.txt
;La hash table utilisé pour les scores est quizzscores

;Commandes opérateurs
;!quizz active/désactive le quizz
;!quizz.reset Reset les scores

;Commandes pour tout le monde
;!premier affiche le meilleur score
;!myscore affiche son score

;Lors du chargement du script on cré la var %quizzchan qui contiendra donc le nom du salon où le quizz est exécuté + On initialise la hash table quizzscores
on *:LOAD:{
  set %quizzchan $input(Insérez le nom du salon où le quizz se déroulera:,oe,Nom du salon de quizz,#exemple)
  set %questionsdir $sfile(questions.txt,La database de questions)
  hmake -s quizzscores 100
}

;Lors du lancement de mirc.exe on intialise à chaque fois la hash table quizzscores
on *:START:{
  hmake -s quizzscores 100
}
;Récupération d'une question au hasard, on prend les mots avant le "?" d'une question et on stocke la question ainsi traitée dans %questionok
;On récupère ainsi aussi la réponse qui correspond à la question (sur la même ligne) qu'on stocke dans %reponse
alias quizzget {
  unset %reponse
  unset %questionok
  set %question $read(%questionsdir)
  var %b = 1, %a = $findtok(%question,?,1,32)
  while (%b <= %a) {
    var %c = $gettok(%question, %b, 32)
    set %questionok $addtok(%questionok, %c, 32)
    inc %b
  }
  inc %a
  var %d = $numtok(%question, 32)
  while (%a <= %d) {
    var %c = $gettok(%question, %a, 32)
    set %reponse $addtok(%reponse, %c, 32)
    inc %a
  }
} 

;Dis une question récupéré avec quizzget sur le salon contenu dans la var %quizzchan
alias sayquestion {
  if (%winner) {
    unset %winner
    quizzget
    msg %quizzchan %questionok (Vous avez 15 secondes pour trouver la bonne réponse)
  }
  else {
    msg %quizzchan Personne n'a trouvé ! La réponse était: %reponse
    quizzget
    .timer 1 2 msg %quizzchan %questionok (Vous avez 15 secondes pour trouver la bonne réponse)
  }
}

;départ du quizz si le $nick est opérateur du salon
on @*:TEXT:!quizz:%quizzchan:{
  if (%quizzon) {
    quizzlepremier
    timerQUIZZ off
    unset %quizzon
    msg $chan Le quizz est désormais arrêté, le premier est actuellement %quizzlepremier avec %quizzlepremierstats points.
  }
  else {
    set %winner 1
    set %quizzon 1
    msg $chan Quizz lancé première question dans 15 secondes préparez-vous...
    timerQUIZZ 0 15 sayquestion
  }
}

;réset des scores si $nick op
on @*:TEXT:!quizz.reset:%quizzchan:{
  hdel -w quizzscores *
  msg $chan Tous les scores ont été remis à 0.
}

;affiche son score
on *:text:!myscore:%quizzchan:msg $chan Tu as $iif($hget(quizzscores,$nick),$v1 points,0 point)

;on extrait le premier des scores (hash quizzscores)
alias quizzlepremier {
  unset %quizzlepremier %quizzlepremierstats
  if ($hget(quizzscores,0).item) { 
    var %h = quizzscores, %max = 0, %i = 1 
    while ($hget(%h,%i).item) { 
      var %hi = $v1 
      if ($hget(%h,%hi) > %max) { 
        var %max = $v1, %nick = %hi 
      } 
      inc %i 
    } 
    set %quizzlepremier %nick
    set %quizzlepremierstats %max 
  }
  else {
    set %quizzlepremier personne
    set %quizzlepremierstats pas de
  }
}

;afficher le premier des scores grace à quizzlepremier
on *:text:!premier:%quizzchan:{
  quizzlepremier
  msg $chan Le premier est actuellement %quizzlepremier avec %quizzlepremierstats points.
}
;détection des réponses si quizz activé
on *:TEXT:*:%quizzchan:{
  if (%quizzon) {
    if ($strip($1-,burc) == %reponse) {
      hinc quizzscores $nick
      set %winner 1
      msg $chan Félicitations $nick ( $+ $hget(quizzscores, $nick) points) tu as trouvé la bonne réponse, qui était: %reponse (On continue...)
    }
  }
}

;détection des changements de pseudo si le pseudo était un joueur alors on update son pseudo dans les quizzscores
on *:NICK:{
  if ($hget(quizzscores, $nick)) {
    hadd quizzscores $newnick $hget(quizzscores, $nick)
    hdel quizzscores $nick
  }
}

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
vendredi 25 mai 2012
Statut
Membre
Dernière intervention
25 mai 2012

Paix sur vous, je suis un étudiant et j'ai un problème je l'espère de trouver la solution (doit être de faire mon travail CODE SOURCE DE QUIZZ QetR(java)) et vous remercie mille fois
Messages postés
25
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
22 novembre 2012

Bonjour,

J'ai ajouté le quizz à mon script (à la racine du script mirc) mais quand j'allume le script, rien ne se charge. Que faut-il taper afin de charger le quizz pour le configurer ?
Merci de votre réponse.
meduse51
Messages postés
2
Date d'inscription
vendredi 25 janvier 2008
Statut
Membre
Dernière intervention
2 février 2008

pas mal
Messages postés
149
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
25 janvier 2011

pourquoi ne pas créer un nouvelles database? pour te démarquer de Wquizz.
Sinon comme l'as dit Arkanis, le code est propre, bonne continuation :)
Messages postés
4
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
27 janvier 2008

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

Du même auteur (cs_Kentix)