Ejercicio Cartas


package com.trifulcas.cartas;

public abstract class Carta {
	private String palo;

	private int numero;

	
	public Carta(String palo, int numero) {
		this.palo = palo;
		this.numero = numero;
	}

	protected String getPalo() {
		return palo;
	}

	protected void setPalo(String palo) {
		this.palo = palo;
	}

	public int getNumero() {
		return numero;
	}

	protected void setNumero(int numero) {
		this.numero = numero;
	}
	
	public abstract int getValor();

	@Override
	public String toString() {
		return getNumero()+" de "+getPalo();
	}
	
}


package com.trifulcas.cartas;

public class Espanyola extends Carta {

	
	public Espanyola(String palo, int numero) {
		super(palo, numero);
		// TODO Auto-generated constructor stub
	}

	@Override
	public int getValor() {
		return getNumero()<10?getNumero():10;
	}

}


package com.trifulcas.cartas;

public class Francesa extends Carta {

	
	public Francesa(String palo, int numero) {
		super(palo, numero);
		// TODO Auto-generated constructor stub
	}

	@Override
	public int getValor() {
		// TODO Auto-generated method stub
		return getNumero();
	}

}

package com.trifulcas.cartas;

import java.util.ArrayList;
import java.util.Collections;

public abstract class Baraja {
	protected ArrayList<Carta> baraja = new ArrayList<>();
	
	public Baraja() {
		/*
		baraja.add(new Espanyola("oros",1));
		baraja.add(new Espanyola("oros",2));
		baraja.add(new Espanyola("oros",3));
		baraja.add(new Espanyola("oros",4));
		baraja.add(new Espanyola("copas",7));
		*/
	}
	public void desordenar() {
		Collections.shuffle(baraja);
	}

	public Carta repartir() {
		if (baraja.isEmpty()) {
			return null;
		} else {
			return baraja.removeFirst();
		}
	}
	@Override
	public String toString() {
		return "Baraja [baraja=" + baraja + "]";
	}

	public abstract void crearMazo();
}

package com.trifulcas.cartas;

import java.util.ArrayList;
import java.util.Arrays;

public class BarajaEspanyola extends Baraja {
	
	@Override
	public void crearMazo() {
		ArrayList<Integer> numeros=new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,10,11,12));
		ArrayList<String> palos=new ArrayList<>(Arrays.asList("Oros","Copas","Espadas","Bastos"));
		
		baraja.clear();
		for(int numero: numeros) {
			for(String palo: palos) {
				baraja.add(new Espanyola(palo,numero));
			}
		}
		
	}

}

package com.trifulcas.cartas;

import java.util.ArrayList;
import java.util.Arrays;

public class BarajaFrancesa extends Baraja {
	
	@Override
	public void crearMazo() {
		ArrayList<Integer> numeros=new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9,10,11,12,13));
		ArrayList<String> palos=new ArrayList<>(Arrays.asList("Picas","Tréboles","Corazones","Diamantes"));
		
		baraja.clear();
		for(int numero: numeros) {
			for(String palo: palos) {
				baraja.add(new Francesa(palo,numero));
			}
		}
		
	}

}


package com.trifulcas.cartas;

import java.util.ArrayList;

public class Jugador {
	private String nombre;
	private ArrayList<Carta> mano;
	public Jugador(String nombre) {
		super();
		this.nombre = nombre;
		mano=new ArrayList<>();
	}
	protected String getNombre() {
		return nombre;
	}
	protected void setNombre(String nombre) {
		this.nombre = nombre;
	}
	protected ArrayList<Carta> getMano() {
		return mano;
	}
	protected void setMano(ArrayList<Carta> mano) {
		this.mano = mano;
	}
	protected void setMano(Carta carta) {
		this.mano.add(carta);
	}
	@Override
	public String toString() {
		return "Jugador [nombre=" + nombre + ", mano=" + mano + "]";
	}
	
	
	
}

package com.trifulcas.cartas;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

public class Poquer {
	ArrayList<Jugador> jugadores;
	BarajaFrancesa baraja;
	
	public Poquer(ArrayList<Jugador> jugadores) throws Exception {
		if (jugadores.size()>10 || jugadores.size()<2) {
			throw new Exception("Número de jugadores incorrecto");
		}
		this.jugadores=jugadores;
		baraja=new BarajaFrancesa();
		baraja.crearMazo();
	}
	
	public Jugador jugar() {
		baraja.desordenar();
		for(Jugador j:jugadores) {
			for(int i=0;i<5;i++) {
				j.setMano(baraja.repartir());
			}
		}
		return getGanador();
	}
	public Jugador getGanador() {
		// poker: 4 cartas iguales 
		// full: 3 cartas iguales y dos iguales
		// trio: 3 cartas iguales
		// doble pareja: 2 y 2
		// pareja: 2 cartas iguales
		for (Jugador j:jugadores) {
			System.out.println(j);
			System.out.println(contarCartas(j.getMano()));
		}
		return jugadores.get(0);
		
	}
	public HashMap<Integer,Integer> contarCartas(ArrayList<Carta> cartas){
		HashMap<Integer,Integer> res=new HashMap<Integer,Integer>();
		
		for(Carta c:cartas) {
			res.put(c.getValor(), Collections.frequency(cartas.stream().map(Carta::getValor).toList(), c.getValor()));
		}
		
		return res;
	}
}
package com.trifulcas.cartas;

import java.util.ArrayList;

public class ProbarCartas {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		Baraja miBaraja=new BarajaFrancesa();
		miBaraja.crearMazo();
		System.out.println(miBaraja);
		Carta c=miBaraja.repartir()	;
		Jugador j=new Jugador("Ana");
		System.out.println(j);
		System.out.println(c);
		System.out.println(miBaraja);
		miBaraja.desordenar()	;
		ArrayList<Jugador> jugadores=new ArrayList<>();
		jugadores.add(j);
		jugadores.add(new Jugador("Eva"));
		try {
			Poquer test=new Poquer(jugadores);
			test.jugar();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		System.out.println(miBaraja);
	}

}


Respuestas ejercicios

"""Crea un programa que recorra una cadena de caracteres y cuente
cuántas veces aparece la letra “a” en la cadena."""

# Pensar en una manera de resolverlo
# voy letra por letra y si encuentro una a la cuento


# Si una letra es una a contar uno más

cadena=input("Introduce una cadena ")
contador=0
# recorrer las letras de una cadena -> resuelto
for letra in cadena:
    print(letra)
    # Si una letra es una a contar uno más ->resuelto
    if letra=="a":
        contador+=1
print(f"Hay {contador} aes en la cadena")

"""Desarrolla un programa que recorra un rango de números del 1 al 10
 y muestre el cuadrado de cada número en una línea separada."""

# recorrer los números del 1 al 10 ->  resuelto
# saber el cuadrado de un número -> resuelto

for numero in range(1,11):
    print(numero*numero)
    print(numero**2)


"""Crea un programa que pida números positivos al usuario
y nos diga después cual es el número mayor y el menor.
Hasta que pnga cero."""

numero=int(input("Introduce número "))
mayor=numero
menor=numero
# como hago yo un bucle hasta que el usuario me de 0 -> resuelto
while numero!=0:
    # si el numero que me dan es mayor que el que tengo lo cambio
    numero = int(input("Introduce número "))
    if numero!=0:
        if numero>mayor:
            mayor=numero
        if numero<menor:
            menor=numero

print("El numero mayor que me has dicho es el ",mayor)
print("El numero menor que me has dicho es el ",menor)

"""Crea un programa que solicite al usuario un número entero positivo
 y luego muestre una cuenta regresiva desde ese número hasta 1. Por ejemplo,
 si el usuario ingresa 5, el programa debe mostrar “5, 4, 3, 2, 1”."""

# pedir un número
# bucle desde el número hasta el 1

numero=int(input("Introduce un número "))

"""
while numero>0:
    print(numero)
    numero-=1
"""
for i in range(numero,0,-1):
    print(i)

"""Un programa que le pida al usuario un número y nos imprima su factorial
. El factorial de 5 es 5*4*3*2*1."""

numero=int(input("Introduce un número "))
factorial=1
for i in range(numero,0,-1):
    factorial*=i

print(factorial)


"""Un programa que pida al usuario
un número y nos imprima su tabla de multiplicar"""

numero=int(input("Introduce un número "))

# recorrer los numeros del 1 al 10 -> resuelto
for i in range(1,11):
    print(f"{i} x {numero} = {i*numero}")
    # print(i," x ",numero, " = ",i*numero)

"""Pedir al usuario un número y decir si es primo o no"""

# ¿Qué es un número primo: solo es divisible por el mismo y la unidad

# recorrer todos los números desde el 1 hasta el propio número -> solucionado
# y voy a ver si es divisible por alguno
# si es divisible no es primo
# Si no hay ninguno sí que es primo

numero=int(input("Numero "))
esprimo=True
for i in range(2,numero):
    if numero % i==0: # que sí que es divisible y por lo tanto NO ES PriMO
        esprimo=False
        break

if esprimo:
    print("El número es primo")
else:
    print("El número no es primo")

Soluciones if

"""Desarrolla un programa que pida al usuario un número entero y determine si es par o impar. Si es par,
muestra “Es un número par”, si es impar, muestra “Es un número impar”."""

numero=int(input("Introduce un número"))
if numero%2==0:
    print("par")
else:
    print ("impar")

"""Escribe un programa que solicite al usuario su calificación en un examen y determine si ha aprobado o reprobado. 
Si la calificación es igual o superior a 60, muestra “Aprobado”, de lo contrario, muestra “Reprobado”."""

calificacion=float(input("Introduce nota"))

if calificacion>=60:
    print("Aprobado")
else:
    print("Reprobado")

"""Desarrolla un programa que pida al usuario dos números enteros y 
determine si al menos uno de ellos es positivo y par. 
Si alguna de estas condiciones se cumple, muestra 
“Al menos uno de los números es positivo y par”, 
de lo contrario, muestra “Ninguno de los números cumple con las condiciones”."""

a=int(input("Introduce numero 1 "))
b=int(input("Introduce numero 2 "))

# NO hace falta paréntesis
if (a%2==0 and a>0) or (b%2==0 and b>0):
    print("Positivo y par")
else:
    print("No positivo y par")

Demos CSS

1. CSS Only Fire by Simon Goellner: https://codepen.io/simeydotme/pen/Poy…

2. Dripping by Amit Sheen: https://codepen.io/amit_sheen/pen/jOe…

3. 100% 3D CSS + HTML Render by Jane Ori: https://codepen.io/propjockey/pen/KKG…

4. Copypaste Apple Keyboard by Jon Kantner: https://codepen.io/jkantner/pen/ZEqKgWJ

5. CSS Rollin’ Road by Jhey Tompkins: https://codepen.io/jh3y/pen/abRxZJE

6. OnlyCSS: Low-poly Train by Yusuke Nakaya: https://codepen.io/YusukeNakaya/pen/P…

7. Flying Through Hexagons by Amit Sheen: https://codepen.io/amit_sheen/pen/OJB…

8. 3D Walkman by Ricardo Oliva Alonso: https://codepen.io/ricardoolivaalonso…

9. Gradient Art by Oscar Saharoy: https://codepen.io/oscarsaharoy/pen/B…

10. 3D CSS Wanderer above the Sea of Fog by Alvaro Montoro: https://codepen.io/alvaromontoro/pen/…

Esperar foreach

function mostrarAmbasCartas(valueLocation, valueSpecies) {
			// document.querySelector(".alert").classList.toggle("visually-hidden");
			fetch("https://rickandmortyapi.com/api/location/"+valueLocation).then((response) => response.json()).then(async (data) => {
				console.log(data);
				if (data.residents.length>0) {
					console.log("anes foreach");
					await Promise.all(data.residents.map(async (element) => {
						await fetch(element).then((respuesta) => respuesta.json()).then((results) => {
							console.log(results);

							if (results.species==valueSpecies) {
								let carta=crearCarta(results);
								document.querySelector(".cartas").appendChild(carta);
								document.querySelector(".alert").classList.add("visually-hidden");
							}
						});
					}));

					console.log("fin foreach");

				} else {
					document.querySelector(".alert").classList.toggle("visually-hidden");
				}
			})
				.catch((err) => {
					console.log("Error: ", err);
				});
		}

Nueva entidad a nuestro proyecto

Vamos a añadir a nuestro proyecto una entidad Profesor con su id, nombre y correo.

Un curso tiene un profesor pero un profesor tiene varios cursos.

Añadir un profesor y a ver qué pasa con los datos que ya tenemos.

¡Suerte!