var canevas, grille, interro, petit, grand, egal, gagne, tresor, nbTresors, i, temp, grandS, petitS, egalS, succesS, erreurS, titre, infoDiv, posRep, cases, j, recommencerB, sonP, sonB, infoB, question, reponse, infoVisible, modeJeu, decalX, decalY, k, m, repX, repY, col, ligne, rep;

function listsRepeat(value, n) {
  var array = [];
  for (var i = 0; i < n; i++) {
    array[i] = value;
  }
  return array;
}

/**
 * Fonction exécutée une fois, au départ
 */
function actions_initiales() {
  posRep = 800;
  cases = listsRepeat(0, 10);
  for (j = 0; j <= 9; j += abs(1)) {
    cases[j] = (listsRepeat(0, 10));
  }
  canevas=creerCanvas(742,700); canvas=canevas;
  positionnerObjetPrudent("canevas",canevas,30,70);
  recommencerB=createButton('Nouvelle partie');
  positionnerObjetPrudent("recommencerB",recommencerB,30,780);
  siClicPrudent("recommencerB",recommencerB,"initialiser",initialiser);
  stylerObjetPrudent("recommencerB",recommencerB,'taille-caractère','24pt');
  stylerObjetPrudent("recommencerB",recommencerB,'couleur-fond','#99ffff');
  sonP = true;
  sonB=createButton('Rendre muet ');
  positionnerObjetPrudent("sonB",sonB,270,780);
  siClicPrudent("sonB",sonB,"sonoriser",sonoriser);
  stylerObjetPrudent("sonB",sonB,'taille-caractère','24pt');
  stylerObjetPrudent("sonB",sonB,'couleur-fond','#99ffff');
  infoB=createButton('Mode d\'emploi');
  positionnerObjetPrudent("infoB",infoB,495,780);
  siClicPrudent("infoB",infoB,"positionInfo",positionInfo);
  stylerObjetPrudent("infoB",infoB,'taille-caractère','24pt');
  stylerObjetPrudent("infoB",infoB,'couleur-fond','#99ffff');
  question=createElement('div','Calculez 10x10 = ');
  positionnerObjetPrudent("question",question,30,posRep);
  stylerObjetPrudent("question",question,'taille-caractère','18pt');
  reponse=createInput('');
  positionnerObjetPrudent("reponse",reponse,210,posRep);
  stylerObjetPrudent("reponse",reponse,'taille-caractère','18pt');
  stylerObjetPrudent("reponse",reponse,'largeur','50px');
  siRetourPrudent("reponse",reponse,"donnerReponse",donnerReponse);
  siClicPrudent("canevas",canevas,"unClic",unClic);
  initialiser();
}

/**
 * Fonction exécutée périodiquement, de façon répétée
 */
function actions_en_boucle() {
}

/**
 * Décrire cette fonction…
 */
function preload() {
  titre = select('#'+'titre');
  infoDiv = select('#'+'explications');
  stylerObjetPrudent("infoDiv",infoDiv,'largeur','350px');
  cacherObjetPrudent("infoDiv",infoDiv);
  grille = loadImage('Ressources/Grille.png')
  ;
  interro = loadImage('Ressources/Interro.png')
  ;
  petit = loadImage('Ressources/PlusPetit.png')
  ;
  grand = loadImage('Ressources/PlusGrand.png')
  ;
  egal = loadImage('Ressources/Egal.png')
  ;
  gagne = loadImage('Ressources/Gagne.png')
  ;
  tresor = [];
  nbTresors = 13;
  for (i = 0; i <= 12; i += abs(1)) {
    temp = loadImage((['Ressources/tresor',i,'.jpg'].join('')))
    ;
    tresor[i] = temp;
  }
  grandS = eval('loadSound("Ressources/TropGrand.mp3")');
  petitS = eval('loadSound("Ressources/TropPetit.mp3")');
  egalS = eval('loadSound("Ressources/Egal.mp3")');
  succesS = eval('loadSound("Ressources/Succes.mp3")');
  erreurS = eval('loadSound("Ressources/Erreur.mp3")');
}

function mathRandomInt(a, b) {
  if (a > b) {
    // Swap a and b to ensure a is smaller.
    var c = a;
    a = b;
    b = c;
  }
  return Math.floor(Math.random() * (b - a + 1) + a);
}

/**
 * Décrire cette fonction…
 */
function initialiser() {
  modeJeu = 0;
  decalX = 16;
  decalY = 12;
  cacherObjetPrudent("question",question);
  cacherObjetPrudent("reponse",reponse);
  couleurFondC('#ffffff');
  if (true) {image(grille,0,0)} else {image(grille,0,0,width,height)}
  for (k = 1; k <= 10; k += abs(1)) {
    for (m = 1; m <= 10; m += abs(1)) {
      if (true) {image(interro,(k * 64 - decalX),(m * 64 - decalY))} else {image(interro,(k * 64 - decalX),(m * 64 - decalY),width,height)}
    }
  }
  repX = mathRandomInt(1, 10);
  repY = mathRandomInt(1, 10);
  for (k = 0; k <= 9; k += abs(1)) {
    for (m = 0; m <= 9; m += abs(1)) {
      (cases[k])[m] = 0;
    }
  }
}

/**
 * Décrire cette fonction…
 */
function sonoriser() {
  sonP = !sonP;
  if (sonP) {
    fixeContenuPrudent("sonB",sonB,'Rendre muet ');
  } else {
    fixeContenuPrudent("sonB",sonB,'Activer la voix');
  }
}

/**
 * Décrire cette fonction…
 */
function positionInfo() {
  infoVisible = !infoVisible;
  if (infoVisible) {
    montrerObjetPrudent("infoDiv",infoDiv);
    positionnerObjetPrudent("infoDiv",infoDiv,790,50);
  } else {
    cacherObjetPrudent("infoDiv",infoDiv);
  }
}

/**
 * Décrire cette fonction…
 */
function unClic() {
  if (modeJeu > 0) {
    return null;
  }
  col = Math.floor((posXsouris() + decalX) / 64);
  ligne = Math.floor((posYsouris() + decalY) / 64);
  if (1 == (cases[(ligne - 1)])[(col - 1)]) {
    return null;
  }
  modeJeu = 1;
  fixeContenuPrudent("question",question,(['Calculez ',ligne,' x ',col].join('')));
  cacherObjetPrudent("recommencerB",recommencerB);
  cacherObjetPrudent("sonB",sonB);
  cacherObjetPrudent("infoB",infoB);
  montrerObjetPrudent("question",question);
  montrerObjetPrudent("reponse",reponse);
  eval('reponse.elt.focus()');
}

/**
 * Décrire cette fonction…
 */
function donnerReponse() {
  rep = valeurPrudent("reponse",reponse);
  modeJeu = 0;
  verifierReponse();
  cacherObjetPrudent("question",question);
  cacherObjetPrudent("reponse",reponse);
  fixeValeurPrudent("reponse",reponse,'');
  montrerObjetPrudent("recommencerB",recommencerB);
  montrerObjetPrudent("sonB",sonB);
  montrerObjetPrudent("infoB",infoB);
}

/**
 * Décrire cette fonction…
 */
function verifierReponse() {
  if (rep == ligne * col) {
    (cases[(ligne - 1)])[(col - 1)] = 1;
    if (rep < repX * repY) {
      if (sonP) {
        eval('petitS.play();');
      }
      if (true) {image(petit,(col * 64 - decalX),(ligne * 64 - decalY))} else {image(petit,(col * 64 - decalX),(ligne * 64 - decalY),width,height)}
      if (true) {
        return;
      }
    }
    if (rep > repX * repY) {
      if (sonP) {
        eval('grandS.play();');
      }
      if (true) {image(grand,(col * 64 - decalX),(ligne * 64 - decalY))} else {image(grand,(col * 64 - decalX),(ligne * 64 - decalY),width,height)}
      if (true) {
        return;
      }
    }
    if (col == repX && ligne == repY) {
      if (sonP) {
        eval('succesS.play();');
      }
      if (true) {image(gagne,(col * 64 - decalX),(ligne * 64 - decalY))} else {image(gagne,(col * 64 - decalX),(ligne * 64 - decalY),width,height)}
      couleurFondC('#ffffff');
      if (true) {image((tresor[(mathRandomInt(0, tresor.length - 1))]),0,0)} else {image((tresor[(mathRandomInt(0, tresor.length - 1))]),0,0,width,height)}
      modeJeu = 2;
      if (true) {
        return;
      }
    }
    if (sonP) {
      eval('egalS.play();');
    }
    if (true) {image(egal,(col * 64 - decalX),(ligne * 64 - decalY))} else {image(egal,(col * 64 - decalX),(ligne * 64 - decalY),width,height)}
    if (true) {
      return;
    }
  } else {
    if (sonP) {
      eval('erreurS.play();');
    }
  }
}
