elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Lights Out 2
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Lights Out 2  (Leído 389 veces)
TickTack


Desconectado Desconectado

Mensajes: 325


mantenetecuerdo


Ver Perfil
Lights Out 2
« en: 19 Octubre 2019, 10:50 am »

Hola a todos,

del usuario "totalmente automático" viene esta versión del juego Lights Out.

El objetivo del juego es que también aquí se clickee los campos de tal manera que al final no quede ningún gancho más.

En contraste con la otra versión del juego, aquí existe ahora la posibilidad de poner los campos aleatoriamente al principio. Además se integro una vía de solución que les muestra cómo resolver la constelación actual en el juego.

Con vía de solución solamente se tiene la mitad de la diversión pero ella muestra que no es imposible resolver la tarea  ;). Que se diviertan con eso!

Código:
Código:
<!DOCTYPE html>
<html>
<head>
  <title>Ejemplo de javascript</title>
  <meta charset="UTF-8">
</head>
<body>
<!-- präsentiert von kostenlose-javascripts.de -->
<script type='text/javascript'>
<!--
// (C)opyright by Vollautomatisch June 4 2007

    function arrayShuffle()
  {
    var tmp, borde;
    for(var i =0; i < this.length; i++)
    {
      borde = Math.floor(Math.random() * this.length);
      tmp = this[i];
      this[i] = this[borde];
      this[borde] =tmp;
    }
  }
  Array.prototype.shuffle = arrayShuffle;

  function validate (uno, dos, tres, cuatro)
  {
    if (document.getElementById('campo_' + uno).checked == true)
    {
      if (document.getElementById('campo_' + dos).checked == true)
      {
        if (document.getElementById('campo_' + tres).checked == true)
        {
          if (document.getElementById('campo_' + cuatro).checked == true)
          {
            return true;
          }
        }
      }
    }
    return false;
  }

  function solve ()
  {
    var viejo = new Array();
    for (var i = 1; i < 26; i++)
    {
      viejo[i-1] = document.getElementById('campo_' + i).checked == true;
    }
    var draws = new Array();
    var numero = 0;
    for (var i = 1; i < 21; i++)
    {
      if (document.getElementById('campo_' + i).checked == true)  { draws[numero] = (i + 5); numero++; cambia(i + 5); lightsOut(i + 5); }
    }
    if (document.getElementById('campo_21').checked == true)  { draws[numero] = 4; numero++; cambia(4); lightsOut(4); draws[numero] = 5; numero++; cambia(5); lightsOut(5); }
    if (document.getElementById('campo_22').checked == true)  { draws[numero] = 2; cambia(2); lightsOut(2); numero++; draws[numero] = 5; numero++; cambia(5); lightsOut(5); }
    if (document.getElementById('campo_23').checked == true)  { draws[numero] = 4; numero++; cambia(4); lightsOut(4); }
    for (var i = 1; i < 21; i++)
    {
      if (document.getElementById('campo_' + i).checked == true)  { draws[numero] = (i + 5); numero++; cambia(i + 5); lightsOut(i + 5); }
    }

    if (validate(16, 16, 21, 22) == true)  { draws[numero] = 21; numero++; cambia(21); lightsOut(21); }
    else if (validate(20, 20, 24, 25) == true)  { draws[numero] = 25; numero++; cambia(25); lightsOut(25); }
    else if (validate(17, 21, 22, 23) == true)  { draws[numero] = 22; numero++; cambia(22); lightsOut(22); }
    else if (validate(18, 22, 23, 24) == true)  { draws[numero] = 23; numero++; cambia(23); lightsOut(23); }
    else if (validate(19, 23, 24, 25) == true)  { draws[numero] = 24; numero++; cambia(24); lightsOut(24); }
    else if (validate(17, 17, 21, 22) == true && validate(19, 19, 24, 25) == true)  { draws[numero] = 22; numero++; cambia(22); lightsOut(22); draws[numero] = 24; numero++; cambia(24); lightsOut(24); }

    for (var i = 1; i < 26; i++)
    {
      if (viejo[i-1] == true)  { document.getElementById('campo_' + i).checked = true; }
      if (viejo[i-1] == false)  { document.getElementById('campo_' + i).checked = false; }
    }

    var copy = new Array();
    for (var i = 0; i < draws.length; i++)
    {
    cut = draws[i];
      if (cut == 1)  { copy[i] = 'A1'; }
      else if (cut == 2)  { copy[i] = 'B1'; }
      else if (cut == 3)  { copy[i] = 'C1'; }
      else if (cut == 4)  { copy[i] = 'D1'; }
      else if (cut == 5)  { copy[i] = 'E1'; }
      else if (cut == 6)  { copy[i] = 'A2'; }
      else if (cut == 7)  { copy[i] = 'B2'; }
      else if (cut == 8)  { copy[i] = 'C2'; }
      else if (cut == 9)  { copy[i] = 'D2'; }
      else if (cut == 10)  { copy[i] = 'E2'; }
      else if (cut == 11)  { copy[i] = 'A3'; }
      else if (cut == 12)  { copy[i] = 'B3'; }
      else if (cut == 13)  { copy[i] = 'C3'; }
      else if (cut == 14)  { copy[i] = 'D3'; }
      else if (cut == 15)  { copy[i] = 'E3'; }
      else if (cut == 16)  { copy[i] = 'A4'; }
      else if (cut == 17)  { copy[i] = 'B4'; }
      else if (cut == 18)  { copy[i] = 'C4'; }
      else if (cut == 19)  { copy[i] = 'D4'; }
      else if (cut == 20)  { copy[i] = 'E4'; }
      else if (cut == 21)  { copy[i] = 'A5'; }
      else if (cut == 22)  { copy[i] = 'B5'; }
      else if (cut == 23)  { copy[i] = 'C5'; }
      else if (cut == 24)  { copy[i] = 'D5'; }
      else if (cut == 25)  { copy[i] = 'E5'; }
    }

    for (var j = 0; j < copy.length; j++)
    {
      for (var i = 0; i < copy.length; i++)
      {
        if ( (copy[i] == copy[j]) && (copy[i] != "") && (i != j) )  { copy[i] = ""; copy[j] = ""; }
      }
    }

    var salida = new Array();
    var numero = 0;

    for (var i = 0; i < copy.length; i++)
    {
      if (copy[i] != "")  { salida[numero] = copy[i]; numero++; }
    }

    salida.shuffle();
    document.getElementById('solven').value = salida.join(" -> ") + "... Done!!!";
  }

  function random ()
  {
    var numero = parseInt(Math.random() * 10 + 25);
    for (var i = 0; i < numero; i++)
    {
      var campo = parseInt(Math.random() * 25 + 1);
      cambia(campo);
      lightsOut(campo);
    }
  }

  function cambia ( campo )
  {
    campo = parseInt(campo);
    if (document.getElementById('campo_' + campo).checked == true)  { document.getElementById('campo_' + campo).checked = false; }
    else if (document.getElementById('campo_' + campo).checked == false)  { document.getElementById('campo_' + campo).checked = true; }
  }

  function lightsOut (campo)
  {
    campo = parseInt(campo);  
    if ( (campo > 6) && (campo < 10) || (campo > 11) && (campo < 15) || (campo > 16) && (campo < 20))
    {
      var campos = new Array(-5, -1, 1, 5);
      if (document.getElementById('campo_' + (campo-5)).checked == true)  { document.getElementById('campo_' + (campo-5)).checked = false; }
      else if (document.getElementById('campo_' + (campo-5)).checked == false)  { document.getElementById('campo_' + (campo-5)).checked = true; }

      if (document.getElementById('campo_' + (campo-1)).checked == true)  { document.getElementById('campo_' + (campo-1)).checked = false; }
      else if (document.getElementById('campo_' + (campo-1)).checked == false)  { document.getElementById('campo_' + (campo-1)).checked = true; }

      if (document.getElementById('campo_' + (campo+1)).checked == true)  { document.getElementById('campo_' + (campo+1)).checked = false; }
      else if (document.getElementById('campo_' + (campo+1)).checked == false)  { document.getElementById('campo_' + (campo+1)).checked = true; }
 
      if (document.getElementById('campo_' + (campo+5)).checked == true)  { document.getElementById('campo_' + (campo+5)).checked = false; }
      else if (document.getElementById('campo_' + (campo+5)).checked == false)  { document.getElementById('campo_' + (campo+5)).checked = true; }
    }
    else
    {
      switch (campo)
      {
        case 1: cambia(2); cambia(6); break;
        case 2: cambia(1); cambia(3); cambia(7); break;
        case 3: cambia(2); cambia(4); cambia(8); break;
        case 4: cambia(3); cambia(5); cambia(9); break;
        case 5: cambia(4); cambia(10); break;
        case 6: cambia(1); cambia(7); cambia(11); break;
        case 10: cambia(5); cambia(9); cambia(15); break;
        case 11: cambia(6); cambia(12); cambia(16); break;
        case 15: cambia(10); cambia(14); cambia(20); break;
        case 16: cambia(11); cambia(17); cambia(21); break;
        case 20: cambia(15); cambia(19); cambia(25); break;
        case 21: cambia(16); cambia(22); break;
        case 22: cambia(17); cambia(21); cambia(23); break;
        case 23: cambia(18); cambia(22); cambia(24); break;
        case 24: cambia(19); cambia(23); cambia(25); break;
        case 25: cambia(20); cambia(24); break;
        }
      }
    }
function initFields() {
  document.write('<table cellspacing="0">');
  document.write('<tr>');
    document.write('<th></th>');
    document.write('<th>A</th>');
    document.write('<th>B</th>');
    document.write('<th>C</th>');
    document.write('<th>D</th>');
    document.write('<th>E</th>');
  document.write('</tr>');
  document.write('<tr>');
    for ( var i = -5; i < 32; i++ )
    {
      if (i == 1)  { document.write('</tr><tr><td>1</td>'); }
      if ( (i > 0) && (i < 26) )  { document.write('<td><input type="checkbox" name="campo" id="campo_' + i + '" onClick="lightsOut( ' + i + ' )" style="background-color: #ffffff;" /></td>'); }
      if ( (i <= 0) || (i >= 26) )  { document.write('<td><input type="checkbox" name="campo" id="campo_' + i + '" style="visibility: hidden;" /></td>'); }

      if ( (i %5 == 0) && (i > 0))  { document.write('</tr><tr>'); }
      if ( (i > 0) && (i < 25) && (i %5 == 0) )  { document.write('<td>' + (i /5 + 1) + '</td>'); }
    }
  document.write('</tr>');
  document.write('</table>');
}

//-->
</script>
<button onclick="random()">Aleatorio</button>
    
<button onclick="solve()">Resolver</button>
  <br />
  <br />
<textarea name="solven" id="solven" id="solven" rows="5" cols="40" style="overflow: auto;" readonly="readonly"></textarea>
<script type="text/javascript">initFields();</script>
<!-- Presentado por javascripts-gratis.de -->
</body>
</html>

Página web: https://drive.google.com/open?id=1h4K2om6vBVk-bIAHV98zx91aQQDLKYYt

Autor: totalmente automático


Saludos


En línea

mantenetecuerdo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines