Poker

parent 0d2ad44a
package roshka.bootcamp.poker;
import java.util.ArrayList;
public class Carta {
private static final String[] palos = {"S", "C", "H", "D"};
private static final String[] valores = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
private String palo;
private String valor;
private String name;
private int numericValue;
public Carta(String palo, String valor, int numericValue) {
this.palo = palo;
this.valor = valor;
this.numericValue = numericValue;
this.name = valor+palo;
}
public String getPalo() {
return palo;
}
public String getValor() {
return valor;
}
public static ArrayList<Carta> crearMazo(){
ArrayList<Carta> mazo = new ArrayList<Carta>();
for(int i=0;i<palos.length;i++){
for(int j=0;j<valores.length;j++){
mazo.add(new Carta(palos[i], valores[j], j+2));
}
}
return mazo;
}
public int getNumericValue() {
return numericValue;
}
}
package roshka.bootcamp.poker;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class PokerJuego {
private Carta[] mano;
public static void main(String[] args){
System.out.println("POKER HAND GENERATOR\nSe ha generado una mano" +
"\n\tHa conseguido las siguientes combinaciones: ");
PokerJuego pokerJuego = new PokerJuego();
pokerJuego.cartaAlta();
pokerJuego.doble();
pokerJuego.dobleDoble();
pokerJuego.trio();
pokerJuego.escalera();
pokerJuego.color();
pokerJuego.full();
pokerJuego.poker();
pokerJuego.escaleraColor();
}
public PokerJuego(){
this.mano = this.repartirCincoCartas();
// this.mano = new Carta[]{
// new Carta("H", "A", 14),
// new Carta("H", "2", 2),
// new Carta("H", "3", 3),
// new Carta("H", "4", 4),
// new Carta("H", "5", 5)};
// Arrays.sort(mano, Comparator.comparing(Carta::getNumericValue).reversed());
// if(mano[1].getValor().equals("2") && mano[4].getValor().equals("A")){
// Carta temp = mano[0];
// mano[0] = mano[4];
// mano[4] = temp;
// }
}
public Carta[] repartirCincoCartas(){
ArrayList<Carta> mazo = Carta.crearMazo();
Carta[] mano = new Carta[5];
int[] choices = new int[]{-1, -1, -1, -1, -1};
boolean repeatedChoice = false;
Scanner in = new Scanner(System.in);
int i=0;
for(i=0;i<5;i++){
repeatedChoice = false;
int choice = (int)(Math.random()*(52));
for(int temp: choices){
if(temp == choice){
i--;
repeatedChoice = true;
}
}
if(repeatedChoice) continue;
choices[i] = choice;
mano[i] = mazo.get(choice);
}
Arrays.sort(mano, Comparator.comparing(Carta::getNumericValue).reversed());
if(mano[1].getValor().equals("2") && mano[4].getValor().equals("A")){
Carta temp = mano[0];
mano[0] = mano[4];
mano[4] = temp;
}
return mano;
}
public void cartaAlta(){
System.out.print("\nCarta Alta: *");
for(Carta carta: mano){
System.out.print("|"+carta.getValor()+""+carta.getPalo()+"|-");
}
}
public void doble(){
String[] act = new String[5];
boolean exist = false;
for(int i=0;i<mano.length-1;i++){
if(mano[i].getValor().equals(mano[i + 1].getValor())){
act[i] = "*";
act[i+1] = "*";
exist = true;
break;
}
}
if(exist){
System.out.print("\nDoble: ");
for(int i=0;i<mano.length;i++){
if(act[i]!=null) System.out.print(act[i]);
System.out.print("|"+mano[i].getValor()+""+mano[i].getPalo()+"|-");
}
}
}
public void dobleDoble(){
String[] act = new String[5];
String firstDoble = null;
boolean exist = false;
int dobleCount = 0;
for(int i=0;i<mano.length-1;i++){
if(mano[i].getValor().equals(mano[i + 1].getValor())){
if(firstDoble==null){
act[i] = "*";
act[i+1] = "*";
firstDoble = mano[i].getValor();
}else if(!mano[i].getValor().equals(firstDoble)){
act[i] = "*";
act[i+1] = "*";
exist = true;
}
}
}
if(exist){
System.out.print("\nDoble Doble: ");
for(int i=0;i<mano.length;i++){
if(act[i]!=null) System.out.print(act[i]);
System.out.print("|"+mano[i].getValor()+""+mano[i].getPalo()+"|-");
}
}
}
public void trio(){
String[] act = new String[5];
boolean exist = false;
for(int i=0;i<mano.length-2;i++){
if(mano[i].getValor().equals(mano[i + 1].getValor()) && mano[i].getValor().equals(mano[i+2].getValor())){
act[i] = "*";
act[i+1] = "*";
act[i+2] = "*";
exist = true;
break;
}
}
if(exist){
System.out.print("\nTrio: ");
for(int i=0;i<mano.length;i++){
if(act[i]!=null) System.out.print(act[i]);
System.out.print("|"+mano[i].getValor()+""+mano[i].getPalo()+"|-");
}
}
}
public void escalera(){
String[] act = new String[]{"*","*","*","*","*"};
boolean exist = true;
for(int i=0;i<mano.length-1;i++){
if(mano[i].getValor().equals(mano[i + 1].getValor()) ||
mano[i].getNumericValue() - mano[i+1].getNumericValue() > 1){
exist = false;
break;
}
}
if(exist){
System.out.print("\nEscalera: ");
for(int i=0;i<mano.length;i++){
if(act[i]!=null) System.out.print(act[i]);
System.out.print("|"+mano[i].getValor()+""+mano[i].getPalo()+"|-");
}
}
}
public void color(){
int paloCounterA = 1;
String[] act = new String[5];
int start;
if(mano[0].getPalo().equals(mano[1].getPalo()) ||
mano[1].getPalo().equals(mano[2].getPalo())){
start=0;
}else{
start=1;
}
act[start]="*";
for(int i=start+1;i<mano.length;i++){
if(mano[start].getPalo().equals(mano[i].getPalo())) {
paloCounterA++;
act[i] = "*";
}
}
if(paloCounterA == 4){
System.out.print("\nColor: ");
for(int i=0;i<mano.length;i++){
if(act[i]!=null) System.out.print(act[i]);
System.out.print("|"+mano[i].getValor()+""+mano[i].getPalo()+"|-");
}
}
}
public void full(){
String[] act = new String[]{"*","*","*","*","*"};
boolean exist = false;
if(mano[0].getValor().equals(mano[1].getValor()) &&
mano[0].getValor().equals(mano[2].getValor()) &&
mano[3].getValor().equals(mano[4].getValor())){
exist = true;
}else if(mano[2].getValor().equals(mano[3].getValor()) &&
mano[2].getValor().equals(mano[4].getValor()) &&
mano[0].getValor().equals(mano[1].getValor())){
exist = true;
}
if(exist){
System.out.print("\nFull House: ");
for(int i=0;i<mano.length;i++){
if(act[i]!=null) System.out.print(act[i]);
System.out.print("|"+mano[i].getValor()+""+mano[i].getPalo()+"|-");
}
}
}
public void poker(){
String[] act;
boolean exist = false;
if(mano[0].getValor().equals(mano[1].getValor()) &&
mano[0].getValor().equals(mano[2].getValor()) &&
mano[0].getValor().equals(mano[3].getValor())){
exist = true;
act = new String[]{"*","*","*","*",null};
}else if(mano[1].getValor().equals(mano[2].getValor()) &&
mano[1].getValor().equals(mano[3].getValor()) &&
mano[1].getValor().equals(mano[4].getValor())){
exist = true;
act = new String[]{null, "*","*","*","*"};
}else{
act = new String[5];
}
if(exist){
System.out.print("\nPoker: ");
for(int i=0;i<mano.length;i++){
if(act[i]!=null) System.out.print(act[i]);
System.out.print("|"+mano[i].getValor()+""+mano[i].getPalo()+"|-");
}
}
}
public void escaleraColor(){
String[] act = new String[]{"*","*","*","*","*"};
boolean exist = true;
for(int i=0;i<mano.length-1;i++){
if(mano[i].getValor().equals(mano[i + 1].getValor()) ||
mano[i].getNumericValue() - mano[i+1].getNumericValue() > 1 ||
!(mano[0].getPalo().equals(mano[i + 1].getPalo()))){
exist = false;
break;
}
}
if(exist){
System.out.print("\nEscalera Color: ");
for(int i=0;i<mano.length;i++){
if(act[i]!=null) System.out.print(act[i]);
System.out.print("|"+mano[i].getValor()+""+mano[i].getPalo()+"|-");
}
}
}
public Carta[] getMano() {
return mano;
}
}
Parte de 2 Del Ejercicio de Poker
_Responder a las siguientes preguntas_
Numero de Convinaciones de 5 cartas de poker: nCr = 52C5 = 2598960
- Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener una escalera de color?
Escalera de Color: 40 Combinaciones Posibles
Probabilidad: 40 / 2598960 = 0.001539%
- Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener un poker?
Poker: 624 Combinaciones Posibles
Probabilidad: 624 / 2598960 = 0.024%
- Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener un full house?
Full House: 3744 Combinaciones Posibles
Probabilidad: 3744 / 2598960 = 0.1441%
- Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener una escalera?
Escalera: 10200 Combinaciones Posibles
Probabilidad: 10200 / 2598960 = 0.39246%
- Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener un trio?
Trio: 54912 Combinaciones Posibles
Probabilidad: 54912 / 2598960 = 2.112845%
- Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener un par doble?
Par Doble: 123552 Combinaciones Posibles
Probabilidad: 123552 / 2598960 = 4.7539%
- Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de obtener un par?
Par: 1098240 Combinaciones Posibles
Probabilidad: 1098240 / 2598960 = 42.2569%
- Si se mezclan y reparten cartas al azar: Cuál es la probabilidad de no obtener ninguna de las jugadas anteriores?
(Nro de Combinaciones Total - (Nro Total de Combinaciones Tratadas Anteriores))/(Nro Total de Combinaciones)
( 2598960 - ( 1098240 + 123552 + 54912 + 10200 + 3744 + 624 + 40 ) ) / 2598960 =
50.315%
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment