Ejemplos del operador spread (…)


<script>
let values = [22, 9, 60, 12, 4, 56];
let max = Math.max(...values);
let min = Math.min(...values);
console.log(max);
console.log(min);
let arr1 = [1, 1, 2, 3];
let arr2 = [13, 21, 34];
let copia = [...arr1]; // a copy of arr1 is created
console.log(copia);
let fibArray = [0, ...arr1, 5, 8, ...arr2]; // first 10 Fibonacci numbers
console.log(fibArray);
let [a, b, c] = [22, 9, 60];
console.log(a);
[b,c]=[c,b];
console.log(b);
// ignoring values
let [h, , i] = [13, 21, 34];       // h=13, i=34
// using with rest
let [j, k, ...l] = [2, 3, 5, 8];   // j=2, k=3, l=[5,8]
let obj = { p: 1, q: true, r: "FK" };
let { p, r } = obj;             // p=1, r="FK"
let { q: flag, r: name } = obj; // Renaming: flag=true, name="FK"
let { q, t = "India" } = obj;   // q=true; t="India"
function minAndMax1(...nums) {
    return [Math.min(...nums), Math.max(...nums)];
}
let [small1, big1] = minAndMax1(22, 9, 60, 12, 4, 56);
</script>

Ejemplos de uso de spread:
https://davidwalsh.name/spread-operator
https://codeburst.io/a-simple-guide-to-destructuring-and-es6-spread-operator-e02212af5831

Extensión ejercicio Minions

Lo primero que vamos a hacer es refactorizarlo para que el ‘estado’ del juego se guarde en localStorage y no lo perdamos cuando se cierre o refresque el navegador.

Vamos a extender el ejercicio de los minions considerando las siguientes posibilidades:

Skynet

Si llegamos a comprar 30 discos duros aparecerá (y digo aparecerá porque en ésta como en las otras opciones no se verá el botón hasta que no se cumpla la condición) una opción de ‘crear virus cloud’ con un coste de 10.000 y que nos proporciona alojamiento infinito. Si lo compramos aparecerá otro powerup que es ‘Investigar IA’ que promete duplicar las líneas cada 10 segundos pero que en realidad, cuando lo pulsamos creamos una Inteligencia artificial autoconsciente que extermina a los humanos del planeta.

El objetivo cambia. Ahora tenemos que apoderarnos de todos los recursos del planeta. Podemos crear robots clicando y cada robot recopila 1kg de material cada 10 segundos. Podemos crear factorías que cuestan 1000kg de material y nos crean un robot. Los robots consumen 1kw cada 10 segundos. Tenemos una central de energía que produce 2kw cada 10 segundos. Comprar una central cuesta 100kg de material y los robots no pueden funcionar si no tienen energía eléctrica. Es decir, si tengo 10 robots pero sólo una central sólo estarán trabajando 2.  La tierra pesa  6,000,000,000,000,000,000,000,000 kg. Cuando se gasten has acabado el juego y has ganado. A no ser que exploremos otros planetas…

Conquer of the world

Si llegamos a tener contratados 100.000 minions nos aparece la posibilidad de contratar ‘Fidelidad a la empresa’. Si lo compramos los minions tienen tanta lealtad hacia la empresa que son capaces de dar su vida por ella. Al CEO de la empresa le da un siroco y tendremos un powerup que es ‘Entrenamiento militar’. A partir de aquí tendremos un ejército y cambian los objetivos.

Tendremos un territorio conquistado de 1km cuadrado. Nuestros minions soldados conquistan 1km cada 10 segundos y saquean ese territorio proporcionándonos 1000€. Podemos comprar una oficina de reclutamiento que cuesta 20000€ y  nos proporciona 1 minion cada 10 segundos. Podemos comprar:

Fusiles semiautomáticos (10€ por minion): Duplica el territorio conquistado por cada 10 segundos.

Tanque (1000€): conquista 2km cada 10 segundos

Bombardeo (10000€): conquista 4km cada 10 segundos

Armas nucleares (1.000.000 €) conquista 100km cada 10 segundos.

La superficie de la tierra es 510.000.000 km, si llegamos a esta cifra hemos conquistado el mundo y ganado.

Ejercicio lista de tareas

Vamos a hacer un ejercicio para almacenar una lista de tareas en nuestra web

Tendremos un formulario con los siguientes campos:

Tarea

Prioridad (Urgente, normal, pasando del tema)

Fecha vencimiento

Con un botón de agregar añadimos tareas a la lista. Debajo del formulario tenemos la lista de tareas y al lado de cada una un botón de eliminar.

Juego de 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 12, 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 12 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

dados

Ejercicio clicker empresa de software

Vamos a hacer un juego tipo clicker para manejar una empresa de software.

Tenemos un botón para escribir código. Cada vez que lo pulsamos generamos una línea de código. La venta de una línea de código nos proporciona 10 céntimos de euro. Vamos a tener un control de las líneas de código escritas y del dinero que tenemos.

Por 10€ (gasto de papeleo) podemos contratar a un minion. Cada minion escribe una línea de código cada 10 segundos.

Nuestras oficinas tienen capacidad para albergar a 50 minions.

Nuestros discos duros tienen capacidad para almacenar 10 millones de líneas de código.

Ampliar la oficina nos cuesta 1000€ y caben otros 50 minions. Comprar un disco duro nos cuesta 100 € y almacena 10 millones de líneas de código.

Podemos ir comprando estos powers up:

  • Contratar formador (1000€) Incrementa la productividad de los minions x 10
  • Comprar máquina de café (500€) Incrementa la productividad de los minions x 2
  • Incentivos (200€ * minion) Incrementa la productividad de los minions x 10 (este lo podemos ir haciendo todas las veces que queramos pero el precio se va multiplicando por 2, 400, 800…)

Cuando tengamos más de 500 minions:

  • Asesoría SCRUM (10000€) Incrementa la productividad de los minions x4
  • Contratar CTO de Amazon (100000€) Incrementa la productividad de los minions x50

Y también:

  • Contratar comercial (1000€) Incrementa el precio del código x 2
  • Contratar campaña medios (2000€) Incrementa el precio del código x 2
  • Contratar agencia (5000€) Incrementa el precio del código x 2

Para almacenamiento:

  • Comprar sistema de compresión (1000€) Duplica la capacidad de nuestros discos duros

 

Ejercicio Reloj

Vamos a construir un cronómetro de la siguiente manera:

Segundos

Minutos:

Horas:

Las cajas se van llenando hasta llegar a 60, cuando llegan a 60 se borra todo el div y se añade una caja a la siguiente. Cuando las horas lleguen a 24 se borra todo y se empieza de nuevo.

Ejercicio JS DOM

ejercicio

En la página anterior realizar un js que nos permita:

Ver todos los elementos que están dentro de una lista

Ver todos los elementos que están dentro de un td

Poner todos los elementos que tengan una y griega dentro de su texto de color rojo (todo el elemento)

Mostrar un listado de todos los id’s

Mostrar un listado de todas las clases