Advertisement
Fhernd

app.js

Nov 16th, 2017
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var alternarColor = true;
  2. var continuar;
  3. var puntaje;
  4. var idRealizarMovimientosInterval;
  5. var movimientos;
  6.  
  7. $(function () {
  8.     setInterval(function () {
  9.         alternarColor ? $(".main-titulo").css('color', 'white') : $(".main-titulo").css('color', 'yellow');
  10.         alternarColor = !alternarColor;
  11.     }, 1000);
  12.  
  13.     $('.col-1').droppable({
  14.         accept: ".col-2"
  15.     });
  16.     $('.col-2').droppable({
  17.         accept: ".col-1, .col-3"
  18.     });
  19.     $('.col-3').droppable({
  20.         accept: ".col-2, .col-4"
  21.     });
  22.     $('.col-4').droppable({
  23.         accept: ".col-3, .col-5"
  24.     });
  25.     $('.col-5').droppable({
  26.         accept: ".col-4, .col-6"
  27.     });
  28.     $('.col-6').droppable({
  29.         accept: ".col-5, .col-7",
  30.         drop: function (event, ui) {
  31.             console.log($(this).attr("src"));
  32.         }
  33.     });
  34.     $('.col-7').droppable({
  35.         accept: ".col-6"
  36.     });
  37.  
  38.     $('.btn-reinicio').click(function () {
  39.         if ($('.btn-reinicio').text() === 'Iniciar') {
  40.             if ($(".panel-tablero").css('display') === 'none') {
  41.                 $(".panel-tablero").css('display', 'flex');
  42.                 $(".panel-tablero").css('width', '70%');
  43.                 $(".panel-tablero").css('height', '700px');
  44.                 $(".panel-score").css('display', 'flex');
  45.                 $(".panel-score").css('width', '25%');
  46.                 $(".panel-score").css('height', '700px');
  47.                 $(".time").css('display', 'block');
  48.                 $(".time").css('width', '100%');
  49.                 $(".time").css('height', '23%');
  50.                 $(".time").css('opacity', '1.0');
  51.             }
  52.  
  53.             $('.main-titulo-juego-terminado').css("display", "none");
  54.  
  55.             removerElementos();
  56.             rellenarTablero();
  57.             puntaje = 0;
  58.             movimientos = 0;
  59.             iniciarJuego();
  60.             $(this).text('Reiniciar');
  61.         }
  62.         else {
  63.             clearInterval(idRealizarMovimientosInterval);
  64.             $('#countdowntimer').countdowntimer({
  65.                 minutes: 0,
  66.                 seconds: 0
  67.             });
  68.             $(this).text('Iniciar');
  69.             $('#score-text').text('0');
  70.         }
  71.     });
  72. })
  73. ;
  74.  
  75. function removerElementos() {
  76.     for (var col = 1; col <= 7; ++col) {
  77.         $('.col-' + col).empty();
  78.     }
  79. }
  80.  
  81. function rellenarTablero() {
  82.     for (var col = 1; col <= 7; ++col) {
  83.         for (var fila = 1; fila <= 7; ++fila) {
  84.             var nuevaImagen = $('<img>',
  85.                 {"src": "image/" + (1 + Math.floor(Math.random() * 4)) + ".png", "class": "elemento"}
  86.             );
  87.             $(nuevaImagen).draggable();
  88.             $('.col-' + col).append(nuevaImagen);
  89.         }
  90.     }
  91. }
  92.  
  93. function iniciarJuego() {
  94.     continuar = true;
  95.  
  96.     droppableDraggable();
  97.  
  98.     $('#countdowntimer').countdowntimer({
  99.         minutes: 2,
  100.         seconds: 0,
  101.         timeUp: function () {
  102.             continuar = false;
  103.             clearInterval(realizarMovimientos());
  104.  
  105.             var anchoPanelTablero = $('.panel-tablero').css('width');
  106.  
  107.             $(".panel-tablero").animate({
  108.                 height: "0",
  109.                 width: "0"
  110.             }, 4100, function () {
  111.                 $(".panel-tablero").css('display', 'none');
  112.             });
  113.  
  114.             $('.panel-score').animate({
  115.                 width: anchoPanelTablero
  116.             }, 3000);
  117.  
  118.             $('.time').animate({
  119.                 opacity: 0.0
  120.             }, 2000);
  121.  
  122.             $('.btn-reinicio').text('Iniciar');
  123.  
  124.             $('.main-titulo-juego-terminado').css("display", "block")
  125.         }
  126.     });
  127.  
  128.     idRealizarMovimientosInterval = setInterval(realizarMovimientos, 1500);
  129. }
  130.  
  131. function actualiarNumeroMovimientos() {
  132.     movimientos += 1;
  133.  
  134.     $('#movimientos-text').text(movimientos);
  135. }
  136.  
  137. function intercambiarElementos(elm1, elm2) {
  138.     var parent1, next1,
  139.         parent2, next2;
  140.  
  141.     parent1 = elm1.parentNode;
  142.     next1 = elm1.nextSibling;
  143.     parent2 = elm2.parentNode;
  144.     next2 = elm2.nextSibling;
  145.  
  146.     parent1.insertBefore(elm2, next1);
  147.     parent2.insertBefore(elm1, next2);
  148. }
  149.  
  150. function realizarMovimientos() {
  151.  
  152.     var contador;
  153.     var nombreImagen;
  154.     var nombreImagenSgte;
  155.     var figurasMarcadas = inicializarFigurasMarcadas();
  156.     var huboCambios = false;
  157.  
  158.     for (var row = 0; row < 7; ++row) {
  159.         for (var col = 0; col < 7; ++col) {
  160.             if ((7 - col) > 2) {
  161.                 nombreImagen = $('.col-' + (col + 1)).children()[row];
  162.                 nombreImagen = $(nombreImagen).prop('src').substring($(nombreImagen).prop('src').length - 5);
  163.  
  164.                 contador = 1;
  165.  
  166.                 while ((7 - col) >= 3 && contador < (7 - col)) {
  167.                     nombreImagenSgte = $('.col-' + (col + contador + 1)).children()[row];
  168.                     nombreImagenSgte = $(nombreImagenSgte).prop('src').substring($(nombreImagenSgte).prop('src').length - 5);
  169.  
  170.                     if (nombreImagen !== nombreImagenSgte) {
  171.                         break;
  172.                     }
  173.  
  174.                     ++contador;
  175.                 }
  176.  
  177.                 if (contador >= 3) {
  178.                     huboCambios = true;
  179.                     for (var i = 0; i < contador; ++i) {
  180.                         figurasMarcadas[row][col + i] = true;
  181.                     }
  182.                 }
  183.             }
  184.  
  185.             if ((7 - row) > 2) {
  186.                 nombreImagen = $('.col-' + (col + 1)).children()[row];
  187.                 nombreImagen = $(nombreImagen).prop('src').substring($(nombreImagen).prop('src').length - 5);
  188.  
  189.                 contador = 1;
  190.  
  191.                 while ((7 - row) >= 3 && contador < (7 - row)) {
  192.                     nombreImagenSgte = $('.col-' + (col + 1)).children()[row + contador];
  193.                     nombreImagenSgte = $(nombreImagenSgte).prop('src').substring($(nombreImagenSgte).prop('src').length - 5);
  194.  
  195.                     if (nombreImagen !== nombreImagenSgte) {
  196.                         break;
  197.                     }
  198.  
  199.                     ++contador;
  200.                 }
  201.  
  202.                 if (contador >= 3) {
  203.                     huboCambios = true;
  204.                     for (var i = 0; i < contador; ++i) {
  205.                         figurasMarcadas[row + i][col] = true;
  206.                     }
  207.                 }
  208.             }
  209.         }
  210.     }
  211.  
  212.     if (huboCambios) {
  213.         actualizarTablero(figurasMarcadas);
  214.     } else {
  215.         clearInterval(idRealizarMovimientosInterval);
  216.     }
  217. }
  218.  
  219.  
  220. function inicializarFigurasMarcadas() {
  221.     var figurasMarcadas = [];
  222.  
  223.     for (var row = 0; row < 7; ++row) {
  224.         figurasMarcadas[row] = new Array(7);
  225.         for (var col = 0; col < 7; ++col) {
  226.             figurasMarcadas[row][col] = false;
  227.         }
  228.     }
  229.  
  230.     return figurasMarcadas;
  231. }
  232.  
  233. function actualizarTablero(figurasMarcadas) {
  234.     var puntaje = 0;
  235.     for (var col = 0; col < 7; ++col) {
  236.         for (var fila = 0; fila < 7; ++fila) {
  237.             if (figurasMarcadas[fila][col]) {
  238.                 $($('.col-' + (col + 1)).children()[fila]).addClass('remover');
  239.                 puntaje += 10;
  240.             }
  241.         }
  242.     }
  243.  
  244.     if ($('.remover').length > 0) {
  245.         $('.remover').fadeIn(400).fadeOut(400).fadeIn(400).fadeOut(300, function () {
  246.             $(this).remove();
  247.  
  248.             actualizarPuntaje(puntaje);
  249.             crearDulces();
  250.         });
  251.     }
  252. }
  253.  
  254. function crearDulces() {
  255.     for (var col = 0; col < 7; ++col) {
  256.         if ($('.col-' + (col + 1)).children().length < 7) {
  257.             var numeroDulces = 7 - $('.col-' + (col + 1)).children().length;
  258.  
  259.             for (var i = 1; i <= numeroDulces; ++i) {
  260.                 var nuevoDulce = $('<img>',
  261.                     {"src": "image/" + (1 + Math.floor(Math.random() * 4)) + ".png", "class": "elemento"});
  262.                 $('.col-' + (col + 1)).prepend(nuevoDulce);
  263.             }
  264.         }
  265.     }
  266.  
  267.     droppableDraggable();
  268. }
  269.  
  270. function actualizarPuntaje(masPuntaje) {
  271.     puntaje += masPuntaje;
  272.  
  273.     $('#score-text').text(puntaje);
  274. }
  275.  
  276. function droppableDraggable() {
  277.     $(".elemento").draggable({
  278.         disabled: false,
  279.         cursor: "move",
  280.         containment: ".panel-tablero",
  281.         revert: true,
  282.         revertDuration: 500,
  283.         snap: ".elemento",
  284.         snapMode: "inner",
  285.         snapTolerance: 40,
  286.         stop: function (event, ui) {
  287.  
  288.             actualiarNumeroMovimientos();
  289.         }
  290.     });
  291.     $(".elemento").droppable({
  292.         drop: function (event, ui) {
  293.             if (idRealizarMovimientosInterval !== 0) {
  294.                 var dropped = ui.draggable;
  295.                 var droppedOn = this;
  296.  
  297.                 var colDropped = Number($($(dropped).parent()).attr("class").substring(4, 5));
  298.                 var colDroppedOn = Number($($(droppedOn).parent()).attr("class").substring(4, 5));
  299.  
  300.                 if ((Math.abs(colDropped - colDroppedOn) === 1) || colDroppedOn === colDropped) {
  301.                     intercambiarElementos(dropped[0], droppedOn);
  302.                     idRealizarMovimientosInterval = setInterval(realizarMovimientos, 1500);
  303.                 }
  304.             }
  305.         }
  306.     });
  307. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement