ソースを参照

Renderização

Implementação de setTimeout: não funcionou
Gustavo Grancieiro 3 年 前
コミット
7794655c58
1 ファイル変更22 行追加8 行削除
  1. 22 8
      ihanoi/js/ihanoi.js

+ 22 - 8
ihanoi/js/ihanoi.js

@@ -359,13 +359,13 @@ function movimentoFinal (haste, num) {
   var topo = pegaTopoHaste(haste);
   if (topo == nDiscos-1) { // moveu tudo!
     if (haste == 2) { // moveu para haste C
-      if (contador == potencia2(nDiscos)-1) { // moveu para haste C com minimo
+      if (contador == (2**nDiscos)-1) { // moveu para haste C com minimo
         return 4;
         }
       return 3; // moveu para haste C mas nao e' minimo
       }
     if (haste == 1) { // moveu para haste B
-      if (contador == potencia2(nDiscos)-1) { // moveu para haste B com minimo
+      if (contador == (2**nDiscos)-1) { // moveu para haste B com minimo
         return 2; // msgTeste2
         }
       return 1; // moveu para haste C mas nao e' minimo
@@ -434,7 +434,7 @@ function movaHaste (hi) {
       
     desenhaTudo();
     }
-  console.log("movaHaste(hi): final");
+  //console.log("movaHaste(hi): final");
   return 1;
   } // movaHaste(hi)
 
@@ -524,7 +524,7 @@ function desenhaDiscos () { // 'context' e' global
     i++;
     ind_disco = matHastes[2][i];
     }
-  console.log("desenhaDiscos(): final");
+  //console.log("desenhaDiscos(): final");
   } // desenhaDiscos()
 
 
@@ -542,7 +542,7 @@ function desenhaMensagem () {
 
 // Redesenha tudo
 function desenhaTudo () {
-  console.log("desenhaTudo(): inicio");
+  //console.log("desenhaTudo(): inicio");
   context.font = 'bold 20px serif';
   context.drawImage(imgFundo,   0,  0, width, height );
   context.fillStyle = "white";
@@ -563,7 +563,7 @@ function desenhaTudo () {
   context.fillText(" " + mensagem, txtMX, txtMY); // mensagens
   context.fillText(" " + mensagemNM + contador, txtNMX, txtNMY); // numero de movimentos
   desenhaDiscos();
-  console.log("desenhaTudo(): final");
+  //console.log("desenhaTudo(): final");
   } // desenhaTudo()
 
 
@@ -581,19 +581,33 @@ function resolveAutomatico (n, origem, destino, aux) {
   if (n == 1) { // O menor disco (1) se move livremente em qualquer haste
     movaHaste(origem);
     movaHaste(destino);
+    console.log("Moveu de " + origem + " para " + destino);
+    
     return;
     }
-  resolveAutomatico(n - 1, origem, aux, destino); // Retirar discos menores do caminho
+  //resolveAutomatico(n - 1, origem, aux, destino); // Retirar discos menores do caminho
+  console.log("Primeiro resolve com n = " + (n - 1));
+  setTimeout(resolveAutomatico, 100 * (potencia2(n) - 1), n - 1, origem, aux, destino);
+  sleep(100 * (potencia2(n) - 1));
+
   movaHaste(origem);
   movaHaste(destino); // Mover maior disco para o destino
-  resolveAutomatico(n - 1, aux, destino, origem); //Mover os discos menores para cima do maior novamente
+  console.log("Moveu de " + origem + " para " + destino);
+  //sleep(1000);
+  
+  //resolveAutomatico(n - 1, aux, destino, origem); //Mover os discos menores para cima do maior novamente
+  console.log("Segundo resolve com n = " + (n - 1));
+  setTimeout(resolveAutomatico, 100 * (potencia2(n) - 1), n - 1, aux, destino, origem);
+  sleep(100 * (potencia2(n) - 1));
   }
+let mov = [];
 
 // Verifica posicao dos discos e chama a funcao recursiva
 function preparaAutomatico ()
 {
   reiniciar(nDiscos); //formula nao funciona caso os discos estejam desorganizados
   resolveAutomatico(nDiscos, 0, 2 ,1);
+  console.log(mov);
   }
 // -------------------- FIM DA ATUALIZACAO --------------------