logoExtra: script.sudoku_blanco

Descripción: Permitimos introducir por teclado los números de un sudoku svg.


A continuación mostramos los apuntes asociados a este extra:

SVG interactivo: sudokus
Veremos como podemos resolver un sudoku introduciendo los números por teclado.
// Descripción para sindicación:
/*
    [rss]Permitimos introducir por teclado los números de un sudoku svg.[/rss]
*/
//svgns = "http://www.w3.org/2000/svg";
//xlinkns = "http://www.w3.org/1999/xlink";

poner_evento(window, "load", iniciar_sudoku_blanco);

function iniciar_sudoku_blanco()    {
    poner_evento(tag("form_sudoku"), "reset", reseteando);
    poner_evento(tag("sudoku_alternativo_1"), "click", nuevo_sudoku);
    poner_evento(tag("sudoku_alternativo_2"), "click", nuevo_sudoku);
    poner_evento(tag("sudoku_alternativo_3"), "click", nuevo_sudoku);
    poner_evento(tag("sudoku_alternativo_4"), "click", nuevo_sudoku);

    sudo = document.forms.form_sudoku.inicio.value;
    while(sudo.length < 81) sudo += "0";
    document.forms.form_sudoku.inicio.value = sudo;

    for (i = 0; i < 9; i++)    for (j = 0; j < 9; j++)    {
        tag("txt_" + i + "_" + j).appendChild(document.createTextNode(""));
        poner_evento(tag("casilla_" + i + "_" + j), "click", entrada);
    }
}

function entrada() {
    id = this.id;
    coleta = id.substr(8);
    xy = coleta.split("_");
    n_actual = tag("txt_" + coleta).firstChild.data;
    n = prompt("nuevo valor para la casilla [" + xy + "] : ", n_actual)[0];
    if ("123456789".indexOf(n) != -1)    {
        sudoku = document.forms.form_sudoku.inicio.value;
        valores = sudoku.split("");
        posi = parseInt(xy[0]) * 9 + parseInt(xy[1]);
        valores[posi] = n;
        document.forms.form_sudoku.inicio.value = valores.join("");
        tag("txt_" + coleta).replaceChild(document.createTextNode(n), tag("txt_" + coleta).firstChild);
    }
}

function reseteo()    {
    sudo = document.forms.form_sudoku.inicio.value;
    while(sudo.length < 81) sudo += "0";
    document.forms.form_sudoku.inicio.value = sudo;
}

function reseteando()    {
    setTimeout(reseteo, 100);
    for (i = 0; i < 9; i++)    for (j = 0; j < 9; j++)
        tag("txt_" + i + "_" + j).replaceChild(document.createTextNode(""),
            tag("txt_" + i + "_" + j).firstChild);
}

function nuevo_sudoku()    {
    sudo = this.src.split("=")[2];
    document.forms.form_sudoku.inicio.value = sudo;
    sudos = sudo.split("");
    for (i = 0; i < 9; i++)    for (j = 0; j < 9; j++)    {
        n = sudos.shift();
        poner = ("123456789".indexOf(n) == -1) ? " ": n;
        tag("txt_" + i + "_" + j).replaceChild(document.createTextNode(poner),
            tag("txt_" + i + "_" + j).firstChild);
    }
}

Este código ha sido leído en 62 ocasiones.

Zona de comentarios

Esta extra aún no tiene comentarios.

Evaluación

Valoración de esta página: (extra.script.sudoku_blanco) valor

Valoración evaluar evaluar evaluar evaluar evaluar evaluar evaluar evaluar evaluar evaluar

Respuesta: Zona de mensajes (proceso de evaluación)

Listados: imágenes, categorías, etiquetas, extras | Anuarios: 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 | Otros enlaces: buscador