Dificultad: (2/4) (Medio-Fácil)


Visitas: 1
Fecha: 2009-02-06 17:57:26
Otro juego hecho en Java (consola), este juego es el archiconocido "Las 21" el cual juegas contra un crupier (banca). Necesitas llegar al numero 21 y para ello el crupier te tira cartas, contra mas cerca estes sin pasarte de 21 mas facil es ganar. Si haces 21 justas haces BlackJack y ganas el triple de lo que apostaste.
En este juego se emplearon las siguientes clases:
Codigo fuente @JAVA- package ampliacion1;
- public class Main {
- public Main() {
- }
- // ** Instancio objetos y declaro variables ** \
- Crupier c;
- Jugador j;
- Baraja b;
- String s,s0;
- int apuesta, actual, valor;
- boolean bj_sw;
- s = Lector.leerString();
- j = new Jugador(s);
- c = new Crupier();
- do {
- b = new Baraja();
- valor = 0;
- // ** Reparto 2 cartas al jugador y 2 al crupier (ocultas) ** \
- j.cartasjugadas[0] = b.daCarta();
- j.cartasjugadas[1] = b.daCarta();
-
- c.cartasjugadas[0] = b.daCarta();
- c.cartasjugadas[1] = b.daCarta();
- // ** Leo la apuesta ** \
- do {
- apuesta = Lector.leerInt();
- }while(apuesta < 1);
- j.apuesta(apuesta);
- c.setApuestas(apuesta);
- bj_sw = false;
- //
- // ** Juega el jugador **
- //
- do {
- actual = 0;
- // ** Saco el valor de las cartas que ya tiene el usuario** \
- for (int i=0 ; i<j.cartasjugadas.length ; i++){
- if (j.cartasjugadas[i] == null)
- break;
- if (j.cartasjugadas[i].getNumero() == 1 && j.cartasjugadas[i].isPuestovalor() == false){
- j.muestraEstado();
- do {
- valor = Lector.leerInt();
- }while(valor != 1 && valor != 11);
- j.cartasjugadas[i].setValor(valor);
- j.cartasjugadas[i].setPuestovalor(true);
- valor = 0;
- }
- actual = actual + j.cartasjugadas[i].getValor();
- }
- j.setPuntosactuales(actual);
- // ** Compruebo si hay blackjack ** \
- if (j.puntosactuales == 21 && j.cartasjugadas[2] == null){
- bj_sw = true;
- break;
- }
- // ** Imprimo el estado del jugador ** \
- j.muestraEstado();
- // ** Pregunto por otra carta ** \
- if (j.puntosactuales < 21) {
- s = Lector.leerString();
- if (s.charAt(0) == 's'){
- for (int i=0 ; i<j.cartasjugadas.length ; i++) {
- if (j.cartasjugadas[i] == null){
- j.cartasjugadas[i] = b.daCarta();
- break;
- }
- }
- }
- }
- }while(s.charAt(0) == 's' && j.puntosactuales < 21);
- // ** El crupier solo juega en caso de que ** \
- if (j.puntosactuales <= 21 && bj_sw == false) {
- //
- // ** Juega el crupier **
- //
- do {
- actual = 0;
- // ** Saco el valor de las cartas que ya tiene el usuario** \
- for (int i=0 ; i<c.cartasjugadas.length ; i++){
- if (c.cartasjugadas[i] == null)
- break;
- if (c.cartasjugadas[i].getNumero() == 1 && c.cartasjugadas[i].isPuestovalor() == false){
- if (c.puntosactuales <= 10)
- valor = 11;
- else
- valor = 1;
- c.cartasjugadas[i].setValor(valor);
- c.cartasjugadas[i].setPuestovalor(true);
- valor = 0;
- }
- actual = actual + c.cartasjugadas[i].getValor();
- }
- c.setPuntosactuales(actual);
-
- // ** Compruebo si hay blackjack ** \
- if (c.puntosactuales == 21 && bj_sw == false){
- break;
- }
- // ** Comprobacion para la 2º vuelta en adelante ** \
- if (c.puntosactuales >= 17 && c.cartasjugadas[2] != null)
- break;
- // ** Imprimo el estado del crupier ** \
- c.muestraEstado();
- // ** Si tiene menos de 17 puntos y va perdiento tira otra vez! ** \
- if (c.puntosactuales < 17 && c.puntosactuales < j.puntosactuales) {
- for (int i=0 ; i<c.cartasjugadas.length ; i++) {
- if (c.cartasjugadas[i] == null){
- c.cartasjugadas[i] = b.daCarta();
- break;
- }
- }
- }
- }while(actual < 17);
- }
- // ** Reconocimiendo de quien ha ganado ** \
- if (j.puntosactuales != c.puntosactuales){
- if (j.puntosactuales > c.puntosactuales) {
- if (j.puntosactuales > 21)
- else{
- if (bj_sw == true){
- j.sumaBlackjack();
- }else{
- j.sumaApuesta();
- }
- }
- }else{
- if (c.puntosactuales > 21) {
- if (bj_sw == true){
- j.sumaBlackjack();
- }else{
- j.sumaApuesta();
- }
- }else
- }
- } else
- s0 = Lector.leerString();
- c.clear();
- j.clear();
- }while(s0.charAt(0) == 's' && j.getDinero() > 0);
- }
-
- }
Programado en PaNa-S.com
A continuación procedo a explicaros la lógica. Instanciamos un juegador con el nombre que leemos de teclado, un crupier, y una baraja (recordamos que este objeto contiene todas las cartas). Se le reparten 2 cartas al crupier y otras 2 al jugador que permaneceran ocultas hasta que el jugador apueste. Una vez apostado el jguador, el programa lee el valor de las cartas que tiene hasta ahora el jugador en la mano, si tiene blackjack esta tanda se acaba ya porque ya ha ganado, pero, si no el programa le pregunta que si quiere otra carta. Esto durará hasta que el jugador se pase de 21, haga balckjack o no quiera seguir jugando. Luego se repetirá la misma situación para el crupier.
Les dejo el código para descargar haciendo clic aquí
Las 21 está en la categoría:
No hay comentarios