You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

преди 10 години
преди 10 години
преди 4 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 4 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 4 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. /*******************************************************************************
  2. Toutes les fonctions liées à la frappe, erreurs, curseurs…
  3. *******************************************************************************/
  4. la_couleur_du_curseur = "#7cfc00";
  5. //cette fonction compare le texte tapé à « le_texte »
  6. var val=""; //c'est le contenu du champ texte
  7. var val_temp=""; //le texte juste avant pour l'anti-correction
  8. var txt_frap = new Array; // on stock dans ce tableau les différentes lignes de texte que l'on vient de taper
  9. var recommencer = false;
  10. var nb_err = 0;
  11. var nb_recom = 0; // nombre de fois qu'on a recommencé la ligne
  12. var nb_tentatives_recom = 3 // nombre de tentatives par ligne avant de passer à la suivante et de repasser la ligne manquée à la fin de l'exercice
  13. function test(e)
  14. {
  15. // entrer retourne le code 13
  16. var touche = window.event ? e.keyCode : e.which;
  17. //if (touche == 32)
  18. //nb_sp++;
  19. //alert(touche)
  20. if (touche == 16 || touche == 225 || touche == 17 || touche == 18 || touche == 27 || touche == 9 || touche == 20 || touche == 91 || touche == 93 || (touche >=112 && touche <=123) ) // shift || ctrl || alt || échap || tab || caps-lock || super || menu || F1 à F12
  21. return;
  22. if (touche == 13 && recommencer == false && val.length <le_texte[l-1].length)
  23. return;
  24. if (touche == 8 && anti_correct) // anti correction
  25. {
  26. document.getElementById("txt").value = val_temp;
  27. return;
  28. }
  29. val = document.getElementById("txt").value; //le texte qu'on tape
  30. if (val.substr(val.length-1,1) != le_texte[l-1].substr(val.length-1,1) && val.substr(val.length-1,1) != le_texte_alt[l-1].substr(val.length-1,1) && val.length-1 != le_texte[l-1].length && val.length != 0)
  31. {
  32. document.getElementById("txt").style.backgroundColor = "#ffbbbb";
  33. col_cur = "red";
  34. if (recommencer == false)
  35. nb_err++;
  36. recommencer = true;
  37. document.getElementById("resultats").innerHTML = '<strong style="color:red">Faites Entrée ou terminez la ligne pour la recommencer sans faute ('+(nb_recom+1)+'/'+nb_tentatives_recom+').</strong>';
  38. }
  39. if (touche == 13 || val.length >= le_texte[l-1].length+1)
  40. {
  41. if (val.substr(val.length-1,1) == " ")
  42. val = val.substr(0,val.length-1);
  43. txt_frap[l-1] = val;
  44. document.getElementById("txt").value = "";
  45. ligne_suivante();
  46. val_temp="";
  47. return;
  48. }
  49. if(document.getElementById("val_curseur").checked == true )
  50. color_car();
  51. val_temp=val;
  52. }
  53. function next(e)
  54. {
  55. var touche = window.event ? e.keyCode : e.which;
  56. val = document.getElementById("txt").value; //le texte qu'on tape
  57. if (le_texte[l-1].substr(val.length,1) == " " && touche != 8 && touche != 13) // si c'est une espace qui est prévue et si c'est pas un retour un arrière car un cas de retour vu qu'on remet le car si c'est une esapace, ça fait qu'on passe au mot suivant
  58. color_mot("next");
  59. if (le_texte[l-1].substr(val.length-1,1) == " " && touche == 8)
  60. color_mot("prev");
  61. }
  62. function live_var()
  63. {
  64. var content = "";
  65. content = "l="+l+" ; recommencer="+recommencer+" ; nb_recom="+nb_recom+"<br/>";
  66. content += "le_texte.length="+le_texte.length+"<br/>";
  67. for (var i=0 ; i < le_texte.length ; i++)
  68. content += le_texte[i]+"<br/>";
  69. document.getElementById("resultats").innerHTML = content;
  70. }
  71. nbspace = true;
  72. function nbsp_mode()
  73. {
  74. if (nbspace == false)
  75. {
  76. return le_texte.replace("/ /"," ");
  77. }
  78. }
  79. // pour passer à la ligne suivante de la leçon
  80. var l = 0;
  81. function ligne_suivante(reload)
  82. {
  83. if(reload)
  84. l--;
  85. col_cur = la_couleur_du_curseur;
  86. document.getElementById("txt").style.backgroundColor = "inherit";
  87. if (recommencer == true && nb_recom < (nb_tentatives_recom-1))
  88. {
  89. l--;
  90. nb_recom++;
  91. }
  92. else if (recommencer == true && nb_recom >= (nb_tentatives_recom-1) )
  93. {
  94. if (le_texte[l-1])
  95. le_texte[le_texte.length] = le_texte[l-1];
  96. nb_recom = 0;
  97. }
  98. //else if (recommencer == false && nb_recom < (nb_tentatives_recom-1))
  99. else if (recommencer == false)
  100. {
  101. nb_recom = 0;
  102. }
  103. if (mode_jeu == true)
  104. {
  105. if (recommencer == true)
  106. vies--;
  107. else
  108. vies++;
  109. document.getElementById("nb_vies").innerHTML = make_heart();
  110. if (vies == 0)
  111. {
  112. document.getElementById("rd_txt").innerHTML = "";
  113. document.getElementById("resultats").innerHTML = "<strong>Game Over</strong>";
  114. return;
  115. }
  116. }
  117. document.getElementById("resultats").innerHTML = "";
  118. if (conseil[exo_en_cours] != 0)
  119. document.getElementById("resultats").innerHTML = "<strong>Conseil</strong> : "+conseils[conseil[exo_en_cours]];
  120. //alert(le_texte.length);
  121. if (l == le_texte.length)
  122. {
  123. l=0;
  124. aff_result();
  125. }
  126. else
  127. {
  128. var col_ligne = new Array("inherit","#bbbbbb","#d4d4d4","#eeeeee");
  129. var mark_ligne = new Array(">> ","   ","   ","   ");
  130. var txt="";
  131. document.getElementById("rd_txt").innerHTML = "";
  132. var ligne_tab = new Array();
  133. for (var i=0 ; i<4 ; i++)
  134. {
  135. if (l+i < le_texte.length)// il faut qu'il reste des lignes
  136. {
  137. if (i==0) // première ligne pour avoir le curseur
  138. {
  139. //on découpe le tout pour le reconstituer ensuite avec des span identifiant chaque mot (pour le curseur)
  140. var reg = new RegExp("","g");
  141. var ligne_tmp = le_texte[l+i].split(reg);
  142. for (var j=0 ; j<ligne_tmp.length ; j++)
  143. {
  144. if (ligne_tmp[j] == " ") // si c'est une espace insécable
  145. {
  146. if(nbspace == true)
  147. ligne_tmp[j] = '<span style="background-color:#aaa" id="car_'+j+'"> </span>';
  148. else
  149. ligne_tmp[j] = '<span id="car_'+j+'"> </span>';
  150. }
  151. else if (ligne_tmp[j] == " ") // si c'est une espace fine insécable
  152. {
  153. if(nbspace == true)
  154. ligne_tmp[j] = '<span style="background-color:#ccc" id="car_'+j+'"> </span>';
  155. else
  156. ligne_tmp[j] = '<span id="car_'+j+'"> </span>';
  157. }
  158. else
  159. ligne_tmp[j] = '<span id="car_'+j+'">'+ligne_tmp[j]+'</span>';
  160. }
  161. txt=ligne_tmp.join("")+'<span id="car_'+j+'"> </span>';
  162. //alert(txt);
  163. }
  164. else
  165. {
  166. txt=le_texte[l+i];
  167. }
  168. //alert(txt);
  169. ligne_tab[i] = '<span style="color:'+col_ligne[i]+'">'+mark_ligne[i]+txt+'</span><br/>';
  170. }
  171. }
  172. l++;
  173. //}
  174. document.getElementById("rd_txt").innerHTML = ligne_tab.join("");
  175. recommencer = false;
  176. if(document.getElementById("val_curseur").checked == true )
  177. color_car("init");
  178. //live_var();
  179. }
  180. //document.getElementById("resultats").innerHTML = "l="+l+"<br/>"+le_texte[l-1];
  181. }
  182. function val_curseur(a)
  183. {
  184. if(a)
  185. {
  186. col_cur = la_couleur_du_curseur;
  187. cur_checked = "checked";
  188. localStorage.setItem("cur",true);
  189. }
  190. else
  191. {
  192. col_cur = "inherit";
  193. cur_checked = "";
  194. localStorage.setItem("cur",false);
  195. }
  196. //color_mot();
  197. color_car();
  198. }
  199. var anti_correct = false;
  200. function val_anti_correct(a)
  201. {
  202. anti_correct = false;
  203. if (a == true || a == "init")
  204. anti_correct = true;
  205. if (anti_correct)
  206. document.getElementById("anti_correct").checked = "checked";
  207. else
  208. document.getElementById("anti_correct").checked = "";
  209. }
  210. var colw = 0;
  211. var col_cur = la_couleur_du_curseur; // couleur du curseur
  212. var colcarorigin=[];
  213. function color_car(a)
  214. {
  215. if (a == "init")
  216. {
  217. colw = 0;
  218. colcarorigin=[];
  219. for (var i=0 ; i<le_texte[l-1].length ; i++)
  220. {
  221. colcarorigin[i]=document.getElementById("car_"+i).style.backgroundColor;
  222. }
  223. }
  224. else
  225. {
  226. colw = document.getElementById("txt").value.length;
  227. }
  228. for (var i = 0 ; i < le_texte[l-1].length ; i++)
  229. {
  230. if (document.getElementById("car_"+i))
  231. document.getElementById("car_"+(i)).style.backgroundColor = colcarorigin[i];//"inherit";
  232. }
  233. if (document.getElementById("car_"+colw))
  234. document.getElementById("car_"+colw).style.backgroundColor = col_cur;
  235. }
  236. function aff_result() // replacer les undefined par des espaces insécables (pour l'affichage)
  237. {
  238. var txt="";
  239. if(nb_err > 5)
  240. txt = " Il semblerait que vous ne maîtrisez pas encore totalement cet exercice, vous pouvez le recommencer si vous le souhaitez.";
  241. if (nb_err == 0)
  242. document.getElementById("resultats").innerHTML = "Félicitations ! Vous n'avez fait aucune erreur !";
  243. else if (nb_err < 2)
  244. document.getElementById("resultats").innerHTML = "Vous avez fait "+nb_err+" erreur.";
  245. else
  246. document.getElementById("resultats").innerHTML = "Vous avez fait "+nb_err+" erreurs."+txt;
  247. document.getElementById("rd_txt").innerHTML = "";
  248. nb_err = 0;
  249. txt_frap = new Array(); // ré-init variable
  250. }