Carta.java 2.63 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
/*
 * En esta clase se genera las cartas. 
 * Por predeterminado genera la carta de forma aleatoria, pero se puede cargar manualmente 
 * */

package com.roshka.bootcamp004.mano;

public class Carta {
	final char valores[] = {'A','2','3','4','5','6','7','8','9','T','J','Q','K'};
	final char palos[] = {'S','C','H','D'};
	char valor;
	char palo;
	boolean otraCarta;
	
	
	public Carta(){
		//Genera la primera carta
		int temporalPosValor = (int)(13*Math.random());
		int temporalPosPalo = (int)(4*Math.random());
		int pos_valores = Integer.parseInt(""+temporalPosValor);
		int pos_palo = Integer.parseInt(""+temporalPosPalo);
		this.palo = palos[pos_palo];
		this.valor = valores[pos_valores];
	}
	
	//Este metodo sirve para cargar las cartas de forma manual
	public Carta(String completo)
    {
        this.valor = completo.charAt(0);
        this.palo = completo.charAt(1);
    }
    
	/**
	 * Se obtiene la carta en formato String
	 * @return La carta en formato String
	 */
    public String obtenerCarta(){
    	return ""+this.valor+this.palo;
    }
    
    /**
     * Comprueba si el valor de la otra carta es superior, igual o inferior al valor de
     * la carta actual
     * @param valorE El valor de la otra carta en formato 'char'.
     * @return 0: son iguales, 1: la carta es superior a la otra carta, -1: lo contrario al valor 1
     */
    //Funcion que nos permite comparar con otra carta
    public int compararValorCon(char valorE) {
    	int numValor1 = 0;
		int numValor2 = 0;
		//Buscamos en que posición está cada valor
		//Valor1
		for(int i=0;i<valores.length;i++) {
			if(this.valor == valores[i]) {
				numValor1 = i;
				break;
			}
		}
		//Valor2
		for(int i=0;i<valores.length;i++) {
			if(valorE == valores[i]) {
				numValor2 = i;
				break;
			}
		}
		//Realizamos la comparación
		if(numValor1 == numValor2) {
			return 0;
		}else if(numValor1 > numValor2) {
			return 1;
		}else {
			return -1;
		}
    }
    /**
     * Retorna un boolean si la otra carta es un paso superior a la carta actual
     * @param otraCarta La otra carta
     * @return Si es o no es cierto
     */
    public boolean esSuAnterior(Carta otraCarta) {
    	int valor1 = 0;
    	int valor2 = 0;
    	//Buscamos la posicion del valor de la otra carta
    	for(int i=0;i<valores.length;i++) {
			if(otraCarta.obtenerCarta().charAt(0) == valores[i]) {
				valor1 = i;
				break;
			}
		}
    	//Buscamos la posicion del valor de esta carta
    	for(int i=0;i<valores.length;i++) {
			if(this.valor == valores[i]) {
				valor2 = i;
				break;
			}
		}
    	//averiguamos si es el siguiente
    	if(valor2 != (valor1+1)) {
    		return false;
    	}
    	return true;
    }
    
}