import [Link].
*;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
class Carta
{
private int codePoint;
public Carta(int cp)
{
[Link] = cp;
}
public int valor()
{
int resul = 0;
if (codePoint < 0x1F0AF && codePoint > 0x1F0A0) // picas
resul = codePoint - 0x1F0A0;
else if (codePoint < 0x1F0BF && codePoint > 0x1F0B0) // corazones
resul = codePoint - 0x1F0B0;
else if (codePoint < 0x1F0CF && codePoint > 0x1F0C0) // diamantes
resul = codePoint - 0x1F0C0;
else if (codePoint < 0x1F0DF && codePoint > 0x1F0D0) // tréboles
resul = codePoint - 0x1F0D0;
return resul;
}
public String palo()
{
String resul = "";
if (codePoint >= 0x1F0A1 && codePoint < 0x1F0AF)
resul = "picas";
else if (codePoint >= 0x1F0B1 && codePoint < 0x1F0BF)
resul = "corazones";
else if (codePoint >= 0x1F0C1 && codePoint < 0x1F0CF)
resul = "diamantes";
else if (codePoint >= 0x1F0D1 && codePoint < 0x1F0DF)
resul = "tréboles";
return resul;
}
public String color()
{
String resul = "";
if ((codePoint >= 0x1F0A1 && codePoint < 0x1F0AF) || (codePoint >= 0x1F0D1
&& codePoint < 0x1F0DF))
resul = "negro";
else
resul = "rojo";
return resul;
}
public int getCodePoint()
{
return codePoint;
}
public void setCodePoint(int codePoint)
{
[Link] = codePoint;
}
public void mostrar()
{
[Link]([Link](codePoint));
}
}
class Baraja
{
private Carta mazo[];
Baraja()
{
[Link]();
private void crearBarajaMinima()
{
List<Carta> baraja = new ArrayList<>();
for (int i = 0x1F0A1; i <= 0x1F0DE; i++)
{
if (esCartaDeseada(i))
{
Carta carta = new Carta(i);
[Link](carta);
}
}
[Link] = [Link](new Carta[[Link]()]);
}
private boolean esCartaDeseada(int valor)
{
int[] valoresNoDeseados = {
0x1F0A0, 0x1F0AC, 0x1F0AF,
0x1F0B0, 0x1F0BC, 0x1F0BF,
0x1F0C0, 0x1F0CC, 0x1F0CF,
0x1F0D0, 0x1F0DC, 0x1F0AF
};
for (int valorNoDeseado : valoresNoDeseados)
{
if (valor == valorNoDeseado)
{
return false;
}
}
return true;
}
public int restantes()
{
return [Link];
}
public void barajar()
{
for (int i = 0; i < 1000; i++)
{
int pos1 = (int) ([Link]() * [Link]);
int pos2 = (int) ([Link]() * [Link]);
Carta temp = [Link][pos1];
[Link][pos1] = [Link][pos2];
[Link][pos2] = temp;
}
}
public void mezclar()
{
[Link]();
}
public Carta robar()
{
Carta resul = null;
if ([Link] > 0)
{
int pos = (int) ([Link]() * [Link]);
resul = [Link][pos];
[Link][pos] = [Link][[Link] - 1];
[Link] = [Link]([Link], [Link] - 1);
}
return resul;
}
public void reinicializar()
{
[Link]();
[Link]();
}
public Carta[] getMazo()
{
return mazo;
}
public void setMazo(Carta[] mazo)
{
[Link] = mazo;
}
public void mostrarMazo()
{
for (Carta carta : [Link])
{
//[Link]([Link]());
//[Link]([Link]([Link]()) + " ");
[Link]();
}
}
}
class Puntuaciones
{
private Map<String, Integer> puntuaciones;
public Puntuaciones()
{
[Link] = new HashMap<>();
[Link]("RF", 2800);// Escalera real (Royal Flush)
[Link]("SF", 2400);// Escalera de color (straight flush)
[Link]("4K", 2000);// Póquer (four of a kind)
[Link]("FH", 1800);// Full house
[Link]("FL", 1400);// Color (flush)
[Link]("STR", 1000);// Escalera (Strait)
[Link]("3K", 800); // Trío (three of a kind)
[Link]("2PR", 400);// Dobles parejas
[Link]("1PR", 200);// Pareja
}
public int getPuntuacion(String mano)
{
return [Link](mano, 0);
}
public void setPuntuaciones(Map<String, Integer> puntuaciones)
{
[Link] = puntuaciones;
}
public Map<String, Integer> getPuntuaciones()
{
return puntuaciones;
}
class Tablero
{
private Carta[][] tablero;
private Puntuaciones puntuaciones;
public Tablero()
{
[Link] = new Carta[5][5];
[Link] = new Puntuaciones();
}
public boolean agregarCarta(Carta carta1, int columna)
{
for (int fila = 4; fila >= 0; fila--)
{
if (tablero[fila][columna] == null)
{
tablero[fila][columna] = carta1;
return true;
}
}
return false;
}
private String obtenerMano()
{
String mano = "";
// Obtener las cartas en cada columna
for (int columna = 0; columna < 5; columna++)
{
for (int fila = 0; fila < 5; fila++)
{
Carta carta = tablero[fila][columna];
if (carta != null)
{
mano += [Link]();
}
else
{
mano += "0"; // Utilizar 0 para representar una posición vacía
}
}
}
return mano;
}
public int calcularPuntuacionFinal()
{
String mano = obtenerMano();
return [Link](mano);
}
public Carta[][] getTablero()
{
return tablero;
}
public void setTablero(Carta[][] tablero)
{
[Link] = tablero;
}
public Puntuaciones getPuntuaciones()
{
return puntuaciones;
}
public void setPuntuaciones(Puntuaciones puntuaciones)
{
[Link] = puntuaciones;
}
public void mostrarTablero()
{
for (int fila = 0; fila < 5 ; fila++)
{
for (int columna = 0; columna < 5; columna++)
{
Carta carta = tablero[fila][columna];
if(carta!= null)
{
[Link]();
}
else
{
[Link]("- ");
}
[Link]("\t");// Agrega una tabulacion
}
[Link]();
}
String mano = obtenerMano();
int puntuacion = [Link](mano);
[Link]("");
[Link]("Puntuación: " + puntuacion);
}
class Juego
{
private Tablero tablero;
private Baraja baraja;
private List<Carta> cartasIniciales;
static Scanner sc = new Scanner([Link]);
public Juego()
{
this .tablero = new Tablero();
this. baraja = new Baraja();
[Link] = new ArrayList<>();
}
public void jugar()
{
[Link]();
[Link]();
while ([Link]() < 4)
{
Carta carta = [Link]();
[Link](carta);
if (carta != null)
{
[Link]();
}
}
[Link]();
int contador = 0;
while (contador < 25 && ([Link]() != null || !
[Link]()))
{
[Link]();
[Link]();
[Link]("Cartas Iniciales");
for (Carta carta : cartasIniciales)
{
[Link]();
}
[Link]();
[Link]();
[Link]();
[Link]("Ingrese el número de carta que desea colocar (1-4):
");
int numeroCarta = [Link]();
if (numeroCarta < 1 || numeroCarta > 4)
{
[Link]("No existe el número de carta.");
continue;
}
[Link]("Ingrese la columna donde desea colocar una carta:
");
int columna = [Link]();
columna--;
[Link]();
if (columna < 0 || columna > 4)
{
[Link]("Error: no existe la columna.");
continue;
}
// Se obtiene la carta seleccionada por el jugador
Carta cartaSeleccionada = [Link](numeroCarta - 1);
[Link](numeroCarta - 1, [Link]());
if (cartaSeleccionada == null) {
[Link]("No quedan cartas en la baraja.");
break;
}
if ()
{
[Link]("La columna está llena.");
continue;
}
[Link]();
[Link]();
contador++;
int puntuacionFinal = [Link]();
[Link]("Puntuación final: " + puntuacionFinal);
public Tablero getTablero()
{
return tablero;
}
public void setTablero(Tablero tablero)
{
[Link] = tablero;
}
public Baraja getBaraja()
{
return baraja;
}
public void setBaraja(Baraja baraja)
{
[Link] = baraja;
}
public List<Carta> getCartasIniciales()
{
return cartasIniciales;
}
public void setCartasIniciales(List<Carta> cartasIniciales)
{
[Link] = cartasIniciales;
}
}
public class ryukyu
{ static Scanner sc = new Scanner([Link]);
public static void main(String[] args)
{
Juego juego = new Juego();
Tablero puntuaciones = new Tablero();
boolean salir = false;
do {
[Link]("1. Jugar");
[Link]("2. Puntuacion");
[Link]("3. Salir");
[Link]("Ingrese la opción: ");
int opcion = [Link]();
switch (opcion)
{
case 1:
[Link]();
break;
case 2:
[Link]();
break;
case 3:
salir = true;
break;
default:
[Link]("Inténtalo de nuevo");
}
[Link]();
} while (!salir);