Juego dados

Las reglas del juego de dados pueden leerse en la wikipedia: Craps

Cuando se juega en un casino contra la banca, o casa, uno o varios jugadores realizan diversas apuestas al resultado que se obtendrá en los dados que lance alguno de los jugadores, el cual es designado «tirador» o «shooter» por su nombre en inglés. Para comenzar el juego, durante lo que se conoce como «tiro de salida», el jugador necesita realizar una apuesta que se conoce como «línea de pase», en la que se busca obtener un siete (conocido como «siete natural» o «siete ganador») o un once en la combinación de dados para ganar la apuesta, que paga uno a uno. Si por el contrario obtiene un dos, tres o doce (números conocidos como «craps») pierde automáticamente su apuesta y necesitará colocar de nuevo una apuesta para seguir tirando. Si durante el primer lanzamiento no obtiene un siete u once (con que gana), o un dos, tres o doce (con que pierde), el juego entrará en una segunda etapa, en la que se marcará el «punto» en el número que se obtenga en dicho lanzamiento (cuatro, cinco, seis, ocho, nueve o diez). En esta etapa, el tirador buscará volver a obtener ese número en los dados, con lo que ganará el «roll» o «ronda», antes de obtener un siete, llamado «siete fuera» o «seven out». Si logra repetir el número del punto, el jugador ganará su apuesta y se le pagará uno a uno el monto. Si por el contrario si aparece un siete, perderá su apuesta. En ambos casos se considera que la ronda ha terminado y el juego vuelve a comenzar, aunque si la ronda culminó debido a un siete fuera se designará un nuevo tirador de entre los distintos jugadores.

Para nuestro programa tendremos, entonces, dos ramas diferentes.

Cuando el usuario le de a jugar tiramos los dados.

  • Si sale siete u once, ha ganado
  • Si sale 2, 3 o 13, ha perdido.

En cualquier otro caso tenemos que guardar la puntuación (y mostrarla en cualquier sitio). A partir de aquí tendremos otro botón de tirar en el que iremos tirando los datos hasta que:

  • Salga siete: ha perdido
  • Salga el mismo numero: ha ganado

Lo más fácil es tener dos botones, que se irán mostrando u ocultando dependiendo de como vaya el juego.

En el primer botón:

  • Realizar tirada (dos números aleatorios entre 1 y seis) Poner imagen. Estaría bien tener una función para esto.
  • Si sale siete u once, aumentamos uno al saldo y decimos que ha ganado
  • Si sale 2, 3 o 13 quitamos uno al saldo y decimos que ha perdido
  • Si sale otro número lo almacenamos en una variable, ocultamos el botón y mostramos el segundo

En el segundo botón:

  • Realizar tirada. Idem anterior

Si sale siete, ha perdido

Si sale el número, ha ganado

En cualquier otro caso, sigue jugando

 

Casino: funcionalidad general y tragaperras

Para el ejercicio de casino necesitamos tener una función que nos permita leer una cookie y otra que nos permita grabar.  En w3schools tienen unas de ejemplo, pero en internet hay muchas más.

Cuando entramos en la página del casino lo primero que tenemos que hacer es comprobar si existe una cookie que se llame 'saldo'. Si existe no hacemos nada. Si no existe la creamos con un valor de 100 y mostramos un mensaje al usuario que diga 'Bienvenido a nuestro casino. Le hemos regalado 100 €'.

La página de tragaperras dispondrá de una barra lateral donde se mostrarán la lista de premios. En la parte del contenido veremos tres imágenes y un botón de jugar. Cada vez que se presione ese botón se realizará el proceso siguiente:

  • Se restará al saldo una unidad (coste del juego)
  • Se mostrarán tres frutas aleatorias
  • Si las tres frutas son iguales avisaremos al usuario que ha ganado un premio y actualizaremos el saldo.

Es decir, el comportamiento habitual de una máquina tragaperras. Vamos a desglosar el proceso general en pasos más pequeños y a dar pistas de resolución:

  • Se restará al saldo una unidad (coste del juego)
    • Obtener el saldo actual (comprobarSaldo)
    • Restar uno
  • Se mostrarán tres frutas aleatorias
    • Necesitamos siete imágenes de frutas (recomendación: fruta0.jpg, fruta1.jpg,....)
    • Obtenemos un valor aleatorio entre 0 y 9 (Math.random) para cada fruta (pos1,pos2 y pos3)
    • Cambiamos el origen de cada una de las imágenes con el valor aleatorio (Recordemos: $('#imagen').attr('src', 'img/fruta?.jpg');)
    • Podemos ponerle alguna animación (ej: slideDown)
  • Si las tres frutas son iguales (pos1==pos2==pos3)
    • Sumamos el premio al saldo
    • Guardamos el saldo en la cookie (ponSaldo)
    • Mostramos en la página el texto 'Ha ganado x €' (sugerencia:  $('#texto').html('Ha ganado...');)

Esto es todo ¡A jugar!

frutas

Ejemplo examen

function pin(){
    var res="";
    for (var i=0;i<4;i++){
        res+=Math.floor(Math.random()*10);
    }
    return res;
}
function sumaPares(tabla){
    var suma=0;
    for (var i=0;i<tabla.length;i++){
        if (tabla[i]%2===0){
            suma+=tabla[i];
        }
    }
    return suma;
}

Ejercicio parientes funcionalizado


$(function () {
    function creaBoton(clase, valor) {
        return '<input type="button" class="btn btn-success ' + clase + '" value="' + valor + '">';
    }
    function lista(elementos, valor) {
        var res = "<ul>";
        for (var i = 0; i < elementos; i++) {
            res += '<li>' + valor + '</li>';
        }
        return res + "</ul>";
    }
    function columna(ancho, elementos) {
        var columna = '<div class="col-sm-' + ancho + '">';
        columna += creaBoton('menos', '-');
        columna += creaBoton('mas', '+');
        columna += creaBoton('otros', '/\\');
        columna += creaBoton('otrosmenos', '\\/');
        columna += lista(elementos, "-");
        columna += "</div>";
        return columna;
    }
    function columnas(ncol, ancho, elementos) {

        var res = "";
        for (var i = 0; i < ncol; i++) {
            res += columna(ancho, elementos);
        }
        return res;

    }
    $('#nuevo').click(function () {

        $('#resultado').html(columnas(4, 3, 5));


        $('.menos').click(function () {

            //  $(this).siblings('ul').children().eq(0) .remove();
            //Buscamos los hermanos de tipo 'ul' y quitamos el último hijo
            $(this).siblings('ul').children().last().remove();
            //Si ya no hay más hijos deshabilitamos el botón
            if ($(this).siblings('ul').children().length === 0) {
                $(this).attr('disabled', 'disabled');
            }
        });
        $('.mas').click(function () {
            //Buscamos el hermano de tipo ul y añadimos un elemento
            $(this).siblings('ul').append('<li>-</li>');
            $(this).siblings('.menos').removeAttr('disabled');
        });
        $('.otros').click(function () {
            //Los hermanos de mi columna tienen listas 'ul' y añadimos un elemento
            $(this).parent().siblings().children('ul').append('<li>-</li>');
            $(this).parent().siblings().children('.menos').removeAttr('disabled');

        });
        $('.otrosmenos').click(function () {
            //Los hermanos de mi columna tienen listas 'ul' y añadimos un elemento
            $(this).parent().siblings().children('ul').each(function () {
                $(this).children().last().remove();
                if ($(this).children().length === 0) {
                    $(this).siblings('.menos').attr('disabled', 'disabled');
                }
            });


        });
    });
});

Uso correcto e incorrecto funciones

 function calcular() {
                var x = document.getElementById("num1").value;
                var y = document.getElementById("num2").value;

                var gx = x;
                var gy = y;
                var w;
                while (y != 0) {
                    w = x % y;
                    x = y;
                    y = w;
                }

                var mcm = gx * gy / x;
                document.getElementById("resultado").value = mcm;
            }
            function calcularBien() {
                var x = document.getElementById("num1").value;
                var y = document.getElementById("num2").value;
                document.getElementById("resultado").value = minimoComunMultiplo(x, y);
            }

            function minimoComunMultiplo(x, y) {
                var gx = x;
                var gy = y;
                var w;
                while (y != 0) {
                    w = x % y;
                    x = y;
                    y = w;
                }
                return gx * gy / x;
            }
            var frase="Juanito";
            console.log(alReves('Viva la Pepa'));
            function alReves(frase){
                return frase.split('').reverse().join('');
            }

Ejercicio tablas completo


$(function () {
    function celdas(){
        $('td').mouseenter(function () {
            $(this).addClass("destacado");
        });
        $('td').mouseleave(function () {
            $(this).removeClass("destacado");
        });
    }
    $('#crear').click(function () {

        var tabla = "";
        var filas = $('#filas').val();
        var columnas = $('#columnas').val();
        for (var i = 0; i < filas; i++) {
            tabla += "";
            for (var j = 0; j < columnas; j++) {
                tabla += "";
            }
            tabla += "";
        }

        tabla += "
#
"; $('#resultado').html(tabla); celdas(); }); $('#crear2').click(function () { var tabla = ""; var filas = $('#filas').val(); var columnas = $('#columnas').val(); var fila = ""; for (var i = 0; i < columnas; i++) { fila += ""; } for (var i = 0; i < filas; i++) { tabla += "" + fila + ""; } tabla += "
#
"; $('#resultado').html(tabla); }); $('#crear3').click(function () { var tabla = "
"; $('#resultado').html(tabla); var filas = $('#filas').val(); var columnas = $('#columnas').val(); for (var i = 0; i < filas; i++) { $('tbody').append(""); } for (var i = 0; i < columnas; i++) { $('tr').append("#"); } }); $('#aumentar').click(function () { $('#fila_nueva').click(); $('#col_nueva').click(); }); $('#fila_nueva').click(function () { var fila = $('tr').html(); $('table').append("" + fila + ""); celdas(); }); $('#col_nueva').click(function () { $('tr').append("#"); celdas(); }); $('#rellenar').click(function () { $('td').text($('#contenido').val()); }); $('#numerar').click(function () { var cont = 1; $('td').each(function () { $(this).text(cont); cont++; }); }); });

Ejercicio crear tablas

Bucles anidados:

$('#crear').click(function () {

        var tabla = "<table  class='table table-bordered'>";
        var filas = $('#filas').val();
        var columnas = $('#columnas').val();
        for (var i = 0; i < filas; i++) {
            tabla += "<tr>";
            for (var j = 0; j < columnas; j++) {
                tabla += "<td>#</td>";
            }
            tabla += "</tr>";
        }

        tabla += "</table>";

        $('#resultado').html(tabla);
    });

Bucles sucesivos:

 $('#crear2').click(function () {

        var tabla = "<table  class='table table-bordered'>";
        var filas = $('#filas').val();
        var columnas = $('#columnas').val();
        var fila = "";
        for (var i = 0; i < columnas; i++) {
            fila += "<td>#</td>";
        }
        for (var i = 0; i < filas; i++) {
            tabla += "<tr>"+fila+"</tr>";
        }
        tabla += "</table>";

        $('#resultado').html(tabla);
    });

Usando jquery:

    $('#crear3').click(function () {
        var tabla = "<table  class='table table-bordered'></table>";
        $('#resultado').html(tabla);
        var filas = $('#filas').val();
        var columnas = $('#columnas').val();
        for (var i = 0; i < filas; i++) {
            $('table').append("<tr></tr>");
        }
        for (var i = 0; i < columnas; i++) {
            $('tr').append("<td>#</td>");
        }
    });