Ejemplo de multihilo con node

function longRunningOperation(callback) {
// simulate a 3 second operation
setTimeout(callback, 3000);
}

function userClicked() {
console.log(‘starting a long operation’);
longRunningOperation(function () {
console.log(‘ending a long operation’);
});
}
// simulate a user action
userClicked();

 

Cada uno con su closure:

function longRunningOperation(callback) {
// simulate a 3 second operation
setTimeout(callback, 3000);
}

function webRequest(request) {
console.log(‘starting a long operation for request:’, request.id);
longRunningOperation(function () {
console.log(‘ending a long operation for request:’, request.id);
});
}
// simulate a web request
webRequest({ id: 1 });
// simulate a second web request
webRequest({ id: 2 });

IDEs para node

https://www.jetbrains.com/webstorm/

https://netbeans.org/

https://www.visualstudio.com/

https://www.slant.co/topics/46/~best-ides-for-node-js

Intercambio de datos con JSON

Página ciudades PHP:

<?php
include "bd.php";
$pais = filter_input(INPUT_GET, 'pais');
$sql = "select * from city where country_id=" . $pais;
$ciudades = getSqlRows($sql);
echo json_encode($ciudades);

Página html:

 $('#paises').change(function () {
                    $.get('ciudades.php?pais=' + $(this).val(), function (data, status) {
                        var ciudades = JSON.parse(data);

                        $("#ciudades option").remove();

                        for (var d in ciudades) {

                            $('#ciudades').append($('', {
                                value: ciudades[d].city_id,
                                text: ciudades[d].city
                            }));
                        }
                    });
                });

Necesitaré tener lo siguiente:

 <select id="paises">
 <option value="0">Seleccione un país...</option>
 <?php
 foreach ($paises as $pais) {
 ?>
 <option value="<?= $pais['country_id'] ?>"><?= $pais['country'] ?></option>
 <?php
 }
 ?>
 </select>
 <select id="ciudades"><option value="0">Seleccione un país para ver sus ciudades</option></select>

Blackjack

Para el juego del blackjack primero necesitamos conocer las reglas del juego:

BlackJack

Hay un jugador y una banca. Se reparten dos cartas a cada uno. El objetivo es sumar 21 o lo más cercano pero sin pasarse. Las figuras valen 10 y los ases 1 u 11, dependiendo de lo que nos interese. El resto de cartas su valor. Una vez repartidas las dos cartas el jugador puede plantarse o pedir carta. Si pide carta y se pasa, ha perdido. Si no, otra vez puede pedir carta o pararse. Cuando se para es el turno de la banca.

Para gestionar las decisiones de la banca puede parecer que necesitamos una inteligencia artificial, pero por suerte no es así.  Si la puntuación es menor de 16 tiene que pedir carta, si es 17 o superior tiene que plantarse.

¿Cómo lo haremos?

En primer lugar crearemos un array con las 52 cartas de la baraja. Este array lo desordenaremos y ya estaremos listos para empezar a repartir.

Se reparten dos cartas a la banca y dos al jugador. Las podemos guardar en un array. Las de la banca se oculta la primera y se muestra la segunda. Las del jugador se muestran todas.

A partir de aquí tenemos dos botones:

  • Pedir carta. Le damos otra carta al jugador. Tenemos que contar la puntuación; si se ha pasado pierde. En caso contrario no hacemos nada.
  • Plantarse. Pasamos al turno de la banca

Cuando es el turno de la banca esta tiene que hacer:

  • Si su puntuación es menor que 17, pedir carta. Si se pasa pierde.
  • Si es mayor plantarse.

Si no se ha pasado ninguno de los dos el jugador que tiene el mayor número es el que gana. Y vuelta a empezar.

baraja

Algoritmo ruleta

Botón reset-> Actualizar la página
Arrastrar fichas: en el drop guardar valores:

  var apuesta_ruleta = ['rojo', 'negro', 'par', 'impar', 'passe', 'manque'];
    var apuestas = [];
    $(".ficha").draggable();
    $(".apuesta").droppable({
        drop: function (event, ui) {
            var apuesta = $(this).attr("title");
            var cantidad = $(ui.draggable).attr("title");
            $(ui.draggable).draggable('disable');
            apuestas[apuesta] = cantidad;
            $('#info').append("Apuesta " + cantidad + " al " + apuesta_ruleta[apuesta] + "<br/>");

        }
    });

En el botón de jugar tenemos que hacer:
– Descontar del saldo el total de las apuestas:

  var total=0;
        for (var i in apuestas){
            total+=parseInt(apuestas[i]);
        }
		saldo-=total;

– Obtener un número entre 0 y 36
– Si el número es cero avisar de que ha perdido.
– Si el número es rojo y ha apostado a rojo darle de premio la apuesta
– Idem negro
– Idem par
– Idem impar
– Idem passe
– Idem manque
– Informar de número, premios, saldo, etcétera.

Ruleta

Vamos a usar una versión simplificada de la ruleta. Aunque en la ruleta original se pueden hacer muchos tipos de apuestas, aquí sólo vamos a permitir tres:

  • Rojo o Negro: si el  número es rojo o negro
  • Par o impar: si es par o impar
  • Passe o Manque: si es mayor o menor que 18

Las dos últimas las podemos averiguar fácilmente a partir del número. La primera hay que saberse la lista, que es la siguiente:

 var colorNum=[1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1,1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,1]; //1=Rojo, 2=Negro

En la página tendremos una tabla con seis elementos, para las diferentes apuestas y tres o más imágenes de fichas (aquí dejo cuatro: fichas)

Estas fichas las arrastraremos hasta la tabla y así se harán las apuestas. Si suelto la ficha de $5 en el elemento ‘rojo’ se entiende que estoy apostando 5 al rojo. Para facilitar la cosa las fichas pueden tener en el title el valor y los elementos lo mismo.

Después tendremos un botón de jugar, donde obtendremos un número aleatorio y dependiendo de lo que salga y las apuestas le daremos el premio.

Preguntas jQuery

Selectores:

  • Seleccionar los párrafos dentro de un div
  • Seleccionar el segundo tr de una tabla con id ‘datos’

Estilos

  • Poner todos los enlaces de color de fondo gris
  • Añadir a todas las cabeceras ‘h1’ la clase ‘cabecera’
  • A todos los elementos que tengan la clase ‘supercool’, quitársela.

Eventos

  • Cuando se pulse el botón con id ‘alerta’ mostrar un alert con un texto
  • Al pasar por encima de cualquier párrafo que se ponga el fondo de color rojo
  • Y cuando se salga de color blanco

Contenido

  • Añadir un elemento ‘<li>hola</li>’ a la lista con id ‘lista’
  • Vaciar el contenido de todos los span de la página
  • Obtener el valor de un input con id ‘sueldo’

Parentela:

  • Eliminar todos los hijos del elemento con id ‘contenedor’
  • Añadir al padre del elemento con id ‘lista’ la clase ‘destacado’
  • Ocultar todos los hermanos del elemento con id ‘lista’
  • Crear un duplicado de la lista con id ‘lista’

Efectos

  • Al pinchar en cualquier elemento de la página (menos el body) que se desvanezca
  • Al pinchar en cualquier elemento ‘li’ de la lista con id ‘lista’ que aparezcan/desaparezcan sus hermanos
  • Cuando se pinche en una imagen con id ‘cohete’ que suba ‘parriba’ y luego baje ‘pabajo’

jquery