lancer un script dans un quiz

lancer un script dans un quiz - C - Programmation

Marsh Posté le 01-11-2012 à 10:43:58    

bonjour je ne sais pas si je post on bonne endroit  
voici mon probleme j ai un fichier .txt qui gere un quiz je cherche a ajouter une ligne de sorte que quand il repond bravo suite a la bonne reponse il lance >C:\Users\jp2\Desktop\toto .ahk
 tout ca se trouve sur le meme pc sous windows  
voici le fichier txt
 
// script de Quizz
 
var count, tick, state, reponse$, question$, question_nr, points, no_rep;
 
var jeu_score[50], jeu_pseudo$[50]; // tableau de scores
 var limite_semaine$;
 
 
proc compute_new_limite ()
 {
 var wd;
 wd = weekday(now$());
 limite_semaine$ = add_date$ (left$(now$(),11) + "05:00:00", (8-wd) * 86400 );
 store ("quizz-semaine", limite_semaine$);
 }
 
 
// charger scores dans le tableau
 
proc charger_scores ()
 {
 var i;
 for (i=0; i<=50; i++)
 {
 jeu_score[i] = val("0" + fetch$ ("quizz-score" + str$(i)));
 jeu_pseudo$[i] = fetch$ ("quizz-pseud" + str$(i));
 }
 limite_semaine$ = fetch$ ("quizz-semaine" );
 if (len(limite_semaine$) == 0)
 compute_new_limite ();
 }
 
 
// enregistrer un score dans la database */
 
proc stocker_score (i, score, pseudo$)
 {
 store ("quizz-score" + str$(i), str$(score));
 store ("quizz-pseud" + str$(i), pseudo$);
 }
 
 
// effacer les scores
 
proc effacer_scores ()
 {
 var i;
 for (i=0; i<=50; i++)
 {
 jeu_score[i] = 0;
 jeu_pseudo$[i] = "";
 stocker_score (i, 0, "" );
 }
 }
 
 
 
// ajoute un score
 
proc ajoute_points (score, userid$)
 {
 var i, j, u$;
 
// cherche le userid$ dans le tableau jeu_pseudo$[]
 // ou bien cherche une case vide dans le tableau
 
for (i=0; i<50; i++)
 {
 if (jeu_pseudo$[i] == userid$ || jeu_pseudo$[i] == "" )
 break;
 }
 
 
// remplir la case et augmenter le score
 
if (jeu_pseudo$[i] == userid$)
 {
 jeu_score[i] += score;
 }
 else
 {
 jeu_score[i] = score;
 jeu_pseudo$[i] = userid$;
 }
 
stocker_score (i, jeu_score[i], jeu_pseudo$[i]);
// remonter le joueur dans le tableau des scores
 // s'il a dépassé des joueurs avant lui
 
while (i > 0 && jeu_score[i] > jeu_score[i-1])
 {
 j = jeu_score[i];
 jeu_score[i] = jeu_score[i-1];
 jeu_score[i-1] = j;
 
u$ = jeu_pseudo$[i];
 jeu_pseudo$[i] = jeu_pseudo$[i-1];
 jeu_pseudo$[i-1] = u$;
 
stocker_score (i, jeu_score[i], jeu_pseudo$[i]);
 stocker_score (i-1, jeu_score[i-1], jeu_pseudo$[i-1]);
 
i--;
 }
 }
 
//=====================================================================================================
 // couleurs de Sophie
 
func fs$ ()
 {
 return chr$(1,200,0,128) // couleur des scores :bleue claire (voir chapitre macros)
 + chr$(2,5,4,0); // font "Courier New", style gras
 }
 
func fm$ ()
 {
 return chr$(1,200,0,128) // couleur des mots "Question/Indice" : bleue claire (voir chapitre macros)
 + chr$(2,5,4,0); // font "Courier New", style gras
 }
 
func fq$ ()
 {
 return chr$(1,200,0,128) // couleur des questions : bleue claire (voir chapitre macros)
 + chr$(2,5,4,0); // font "Courier New", style gras
 }  
//=====================================================================================================
 
// imprime les 20 premiers scores du tableau
 // ainsi que le userid$ même s'il est après les 20 premiers
 
proc affiche_scores (userid$)
 {
 var i, score$;
 
print (fs$() + "QUIZZ SCORES" );
 print (fs$() + "============" );
 
for (i=0; i<50; i++)
 {
 if (jeu_pseudo$[i] == "" )
 break;
 if (i < 20 || userid$ == jeu_pseudo$[i])
 {
 score$ = str$(jeu_score[i]);
 if (len(score$) < 5)
 score$ = dup$(" ",5-len(score$)) + score$;
 print (fs$() + str$(i+1) + ". " + score$ + " " + jeu_pseudo$[i]);
 }
 }
 }
 
 
 
 
// nettoye la ligne line$ en remplaçant toutes les icones et images par des blancs,
 // en convertissant tous les mots en minuscules,
 // et en entourant tous les mots par des blancs.
 
func nettoye$ (userid$, action, line$)
 {
 var last, r$, i, c;
i = 1;
 
if (asc (line$,1) == 0)
 i += 4; // passer emoticon
 else
 i += 8; // passer image
 
i += len(userid$); // passer userid
 
if (action == 0)
 i += 3; // passer " : "
 else
 i++;
 
last = len(line$);
 
while (i <= last)
 {
 c = asc (line$,i);
 if (c <= 9) // séquence spéciale
 {
 i += 4; // passer 4 caractères
 if (c > 5)
 i += 4;
 c = 32; // remplacer par un blanc
 }
 else // caractère normal
 {
 if (c >= 65 && c <= 90) // si entre A et Z
 c += 32; // convertir en minuscules
 i++;
 }
 r$ = r$ + chr$(c);
 }
 
return r$ + " ";
 }
 
 
 
proc lancer_quizz ()
 {
 if (now$() >= limite_semaine$)
 {
 print (fs$()+"effacement des scores de la semaine ..." );
 effacer_scores ();
 compute_new_limite ();
 }
 
if (state == 0)
 {
 state = 1;
 no_rep = 0;
 }
 }
 
 
 
proc arreter_quizz ()
 {
 state = 0;
 }
 
// effacer les blancs avant et après
 
func trim$ (s$)
 {
 while (len(s$) > 0 && asc(s$,1) == 32)
 s$ = right$(s$, len(s$)-1);
 
while (len(s$) > 0 && asc(s$,len(s$)) == 32)
 s$ = left$(s$, len(s$)-1);
 
return s$;
 }
 
 
// convertir en minuscules
 
func tolower$ (s$)
 {
 var t$, len, i, c;
 
len = len(s$);
 
for (i=1; i<=len; i++)
 {
 c = asc (s$, i);
 if (c >= 65 && c <= 90) // si entre A et Z
 c += 32; // convertir en minuscules
 t$ = t$ + chr$(c);
 }
 
return t$;
 }
 
 
proc poser_question ()
 {
 var ln, line$, col;
 
for (;;)
 {
 ln = random (1, count);
 line$ = read_line$ ("quizz.txt", ln);
 col = pos (line$, ":" );
 if (col > 0)
 break;
 print (fm$() + "erreur dans quizz.txt ligne " + str$(ln));
 }
 
reponse$ = trim$ (left$(line$, col-1));
 question$ = trim$ (right$(line$, len(line$) - col));
 
question_nr++;
 
print (fm$() +"Question " + str$(question_nr) + " : " +fq$() + question$);
 }
 
 
proc reposer_question ()
 {
 if (state >= 2 && state <= 4)
 print (fm$() +"Question " + str$(question_nr) + " : " + fq$() + question$);
 }
 proc indice1 ()
 {
 var i, len, r$;
 
r$ = reponse$;
 len = len(reponse$);
 
for (i=1; i<=len; i+=3)
 {
 if (mid$(r$,i,1) != " " )
 r$ = left$(r$,i-1) + "." + right$(r$,len-i);
 }
 
for (i=2; i<=len; i+=3)
 {
 if (mid$(r$,i,1) != " " ) r$ = left$(r$,i-1) + "." + right$(r$,len-i);
 }
 
print (fm$() +"Indice 1 : " + fq$() + r$);
 }
 
 
proc indice2 ()
 {
 var i, len, r$;
 
r$ = reponse$;
 len = len(reponse$);
 
for (i=1; i<=len; i+=3)
 {
 if (mid$(r$,i,1) != " " )
 r$ = left$(r$,i-1) + "." + right$(r$,len-i);
 }
 
print (fm$() +"Indice 2 : " + fq$() + r$);
 }
 
 
proc donner_solution ()
 {
 print (fm$() +"Le temps est écoulé, c'était : " + fq$() + reponse$);
 no_rep++;
 
if (no_rep >= 90) // déjà la 90ème question posée sans réponse
 {
 print (fm$() +"arrêt du quizz personne repond je suis déçu ..." );
 state = 0;
 }
 else
 {
 tick = 0;
 state = 5;  
points = 0;
 }
 }
 
 
 
func full_user$ (sex$, userid$)
 {
 var emo, user$;
 
if (sex$ == "M" )
 emo = 50;
 else if (sex$ == "F" )
 emo = 51;
 else
 emo = 60;
 
return chr$(0, emo, 0, 0) + userid$;
 }
 
 
 
proc dire_bravo (sex$, userid$)
 {
 var user$;
 
user$ = full_user$ (sex$, userid$);
 
print (fm$() +"Bravo " + user$ + " : " + fq$() + "tu récoltes " + str$(points) + " points." );
 
ajoute_points (points, user$);
 
tick = 0;
 state = 5;  
points = 0;
 no_rep = 0;
 }proc timer ()
 {
 if (count == 0)
 {
 count = count_lines ("quizz.txt" );
 if (count == 0)
 {
 print (fm$() + "error:" + fq$()+ "pas trouvé le fichier quizz.txt pour le quizz" );
 return;
 }
 
charger_scores ();
 }
 
if (state == 1 && count > 0)
 {
 poser_question ();
 tick = 0;
 state = 2;
 points = 3;
 }
 
if (state == 2 && tick == 38)
 {
 indice1 ();
 tick = 0;
 state = 3;  
points = 2;
 }
 
if (state == 3 && tick == 38)
 {
 indice2 ();
 tick = 0;
 state = 4;  
points = 1;
 }
 
if (state == 4 && tick == 38)
 {
 donner_solution ();
 }
 
if (state == 5 && tick == 5)
 {
 state = 1;
 }
 
tick++;
 
set_timer (1);
 }
 
 
proc donner_indice ()
 {
 if (state == 2)
 tick = 38;
 else if (state == 3)
 tick = 38;
 }
 
 
 
proc event (session_key, userid$, sex$, has_photo, age, is_away,
 admin, cam_on, is_bot, toc_capab, signature$,
 action, is_myself, line$)
 {
 var word$;
 
if (action <= 1)
 {
 word$ = nettoye$ (userid$, action, line$);
 
if (pos (word$, " !start " ) > 0)
 lancer_quizz ();
 
if (pos (word$, " !stop " ) > 0)
 arreter_quizz ();
 
if (pos (word$, " !indice " ) > 0 || pos (word$, " !hint " ) > 0)
 donner_indice ();
 
if (pos (word$, " !quoi " ) > 0)
 reposer_question ();
 
if (pos (word$, " !score " ) > 0 || pos (word$, " !scores " ) > 0)
 affiche_scores (full_user$ (sex$, userid$));
 
if (!is_myself) // le bot ne peut répondre aux questions au cas où la réponse est dans la question ...
 {
 if (state >= 2 && state <= 4)
 {
 if (pos (word$, " " + tolower$(reponse$) + " " ) > 0)
 dire_bravo (sex$, userid$);
 }
 }
 }
 }
 
 
j ai mis en rouge la zone qui traite le bravo  
en esperant avoir une solution  
 
par avance merci  
 
 
 
 
 

Reply

Marsh Posté le 01-11-2012 à 10:43:58   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed