Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Carta.java
/* Clase con la que vamos a representar cada una de las cartas de la baraja */
public class Carta {
/* Constantes enteras que definen los palos y las cartas que no tienen valor
numerico */
public final static int ESPADAS = 0,
CORAZONES = 1,
DIAMANTES = 2,
PICAS = 3;
public final static int AS = 1,
JACK = 11,
QUEEN = 12,
KING = 13;
/* Las 2 propiedades de nuestra carta seran valor y palo.
Las definimos como privadas y a continuacion definimos los metodos para
obtenerlas */
private final int palo;
private final int valor;
/* Metodo constructor */
public Carta(int val, int pal) {
valor = val;
palo = pal;
}
/* Metodos que nos devuelven valor y palo como entero y como String */
public int getPalo() {
return palo;
}
public int getValor() {
return valor;
}
public String getPaloString() {
switch ( palo ) {}
}
case ESPADAS: return "Espadas";
case CORAZONES: return "Corazones";
case DIAMANTES: return "Diamantes";
case PICAS: return "Picas";
default:
return "??";
public String getValorString() {
switch ( valor ) {
case 1: return "As";
case 2: return "2";
case 3: return "3";
case 4: return "4";
case 5: return "5";
case 6: return "6";
case 7: return "7";
case 8: return "8";
case 9: return "9";
case 10: return "10";
case 11: return "J";
case 12: return "Q";
case 13: return "K";
default: return "??";
}
}
public String toString() {
return getValorString() + " de " + getPaloString();
}
}
Baraja.java
Mano.java
/* Con esta clase vamos a representar las cartas que tiene un jugador en cierta
jugada y el dinero
que ha apostado en esa jugada */
import java.util.Vector;
public class Mano{
// Se trata de un vector y no un array porque el numero de cartas en la mano
es variable
private Vector mano;
int apuesta;
// Constructor
public Mano() {
mano = new Vector();
}
// Suelta todas las cartas
public void soltar() {
mano.removeAllElements();
}
// Aade una carta a su mano
public void cogerCarta(Carta c) {
if (c != null)
mano.addElement(c);
}
// Suelta una de sus cartas
public void dejarCarta(Carta c) {
mano.removeElement(c);
}
// Suelta la carta en la posicion marcada por pos
public void dejarCarta(int pos) {
if (pos >= 0 && pos < mano.size())
mano.removeElementAt(pos);
}
// Cuenta las cartas que tiene en la manopublic int contar() {
return mano.size();
}
// Nos dice la carta que tiene en la posicion pos
public Carta obtenerCarta(int pos) {
if (pos >= 0 && pos < mano.size())
return (Carta)mano.elementAt(pos);
else
return null;
}
// Cuenta los puntos que suman las cartas de nuestra mano
public int getBlackjackValor() {
int val;
boolean as;
int cartas;
val = 0;
as = false;
cartas = contar();
for ( int i = 0; i < cartas; i++ ) {
Carta carta;
int cartaVal;
carta = obtenerCarta(i);
cartaVal = carta.getValor();
if (cartaVal > 10) {
cartaVal = 10;
}
if (cartaVal == 1) {
as = true;
}
val = val + cartaVal;
}
/* El as en principio vale 1, pero si al cambiar su valor por 11
conseguimos un resultado
igual a 21 o menor lo cambiaremos*/
if ( as == true && val + 10 <= 21 )
val = val + 10;
}}
return val;
Blackjack.java