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:
<!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