Las 21

Dificultad: (2/4) (Medio-Fácil)1100 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:

Y por último la clase Main que contiene la lógica del juego:
Codigo fuente @JAVA
  1. package ampliacion1;
  2. public class Main {
  3. public Main() {
  4. }
  5. public static void main(String[] args) {
  6. // ** Instancio objetos y declaro variables ** \
  7. Crupier c;
  8. Jugador j;
  9. Baraja b;
  10. String s,s0;
  11. int apuesta, actual, valor;
  12. boolean bj_sw;
  13. System.out.println("Dime tu nombre");
  14. s = Lector.leerString();
  15. j = new Jugador(s);
  16. c = new Crupier();
  17. do {
  18. b = new Baraja();
  19. valor = 0;
  20. // ** Reparto 2 cartas al jugador y 2 al crupier (ocultas) ** \
  21. j.cartasjugadas[0] = b.daCarta();
  22. j.cartasjugadas[1] = b.daCarta();
  23.  
  24. c.cartasjugadas[0] = b.daCarta();
  25. c.cartasjugadas[1] = b.daCarta();
  26. // ** Leo la apuesta ** \
  27. do {
  28. System.out.println("¿Cuanto apuestas?");
  29. apuesta = Lector.leerInt();
  30. }while(apuesta < 1);
  31. j.apuesta(apuesta);
  32. c.setApuestas(apuesta);
  33. bj_sw = false;
  34. //
  35. // ** Juega el jugador **
  36. //
  37. do {
  38. actual = 0;
  39. // ** Saco el valor de las cartas que ya tiene el usuario** \
  40. for (int i=0 ; i<j.cartasjugadas.length ; i++){
  41. if (j.cartasjugadas[i] == null)
  42. break;
  43. if (j.cartasjugadas[i].getNumero() == 1 && j.cartasjugadas[i].isPuestovalor() == false){
  44. j.muestraEstado();
  45. do {
  46. System.out.println("Ha salido un AS puede poner el valor de 1 / 11 elija el valor: ");
  47. valor = Lector.leerInt();
  48. }while(valor != 1 && valor != 11);
  49. j.cartasjugadas[i].setValor(valor);
  50. j.cartasjugadas[i].setPuestovalor(true);
  51. valor = 0;
  52. }
  53. actual = actual + j.cartasjugadas[i].getValor();
  54. }
  55. j.setPuntosactuales(actual);
  56. // ** Compruebo si hay blackjack ** \
  57. if (j.puntosactuales == 21 && j.cartasjugadas[2] == null){
  58. System.out.println("BlackJack! de "+j.getNombre());
  59. bj_sw = true;
  60. break;
  61. }
  62. // ** Imprimo el estado del jugador ** \
  63. j.muestraEstado();
  64. // ** Pregunto por otra carta ** \
  65. if (j.puntosactuales < 21) {
  66. System.out.println("¿Quieres otra carta?");
  67. s = Lector.leerString();
  68. if (s.charAt(0) == 's'){
  69. for (int i=0 ; i<j.cartasjugadas.length ; i++) {
  70. if (j.cartasjugadas[i] == null){
  71. j.cartasjugadas[i] = b.daCarta();
  72. break;
  73. }
  74. }
  75. }
  76. }
  77. }while(s.charAt(0) == 's' && j.puntosactuales < 21);
  78. // ** El crupier solo juega en caso de que ** \
  79. if (j.puntosactuales <= 21 && bj_sw == false) {
  80. //
  81. // ** Juega el crupier **
  82. //
  83. do {
  84. actual = 0;
  85. // ** Saco el valor de las cartas que ya tiene el usuario** \
  86. for (int i=0 ; i<c.cartasjugadas.length ; i++){
  87. if (c.cartasjugadas[i] == null)
  88. break;
  89. if (c.cartasjugadas[i].getNumero() == 1 && c.cartasjugadas[i].isPuestovalor() == false){
  90. if (c.puntosactuales <= 10)
  91. valor = 11;
  92. else
  93. valor = 1;
  94. c.cartasjugadas[i].setValor(valor);
  95. c.cartasjugadas[i].setPuestovalor(true);
  96. valor = 0;
  97. }
  98. actual = actual + c.cartasjugadas[i].getValor();
  99. }
  100. c.setPuntosactuales(actual);
  101.  
  102. // ** Compruebo si hay blackjack ** \
  103. if (c.puntosactuales == 21 && bj_sw == false){
  104. System.out.println("BlackJack! de "+c.getNombre());
  105. break;
  106. }
  107. // ** Comprobacion para la 2º vuelta en adelante ** \
  108. if (c.puntosactuales >= 17 && c.cartasjugadas[2] != null)
  109. break;
  110. // ** Imprimo el estado del crupier ** \
  111. c.muestraEstado();
  112. // ** Si tiene menos de 17 puntos y va perdiento tira otra vez! ** \
  113. if (c.puntosactuales < 17 && c.puntosactuales < j.puntosactuales) {
  114. for (int i=0 ; i<c.cartasjugadas.length ; i++) {
  115. if (c.cartasjugadas[i] == null){
  116. c.cartasjugadas[i] = b.daCarta();
  117. break;
  118. }
  119. }
  120. }
  121. }while(actual < 17);
  122. System.out.println("Jugador: "+j.puntosactuales+" Crupier: "+c.puntosactuales);
  123. }
  124. // ** Reconocimiendo de quien ha ganado ** \
  125. if (j.puntosactuales != c.puntosactuales){
  126. if (j.puntosactuales > c.puntosactuales) {
  127. if (j.puntosactuales > 21)
  128. System.out.println(j.getNombre()+" pierde");
  129. else{
  130. if (bj_sw == true){
  131. System.out.println(j.getNombre()+ " gana");
  132. j.sumaBlackjack();
  133. }else{
  134. System.out.println(j.getNombre()+" gana");
  135. j.sumaApuesta();
  136. }
  137. }
  138. }else{
  139. if (c.puntosactuales > 21) {
  140. if (bj_sw == true){
  141. System.out.println(j.getNombre()+ " gana");
  142. j.sumaBlackjack();
  143. }else{
  144. System.out.println(j.getNombre()+ " gana");
  145. j.sumaApuesta();
  146. }
  147. }else
  148. System.out.println(j.getNombre()+ " pierde");
  149. }
  150. } else
  151. System.out.println("Empate");
  152. System.out.println("¿Quiere segir apostando?");
  153. s0 = Lector.leerString();
  154. c.clear();
  155. j.clear();
  156. }while(s0.charAt(0) == 's' && j.getDinero() > 0);
  157. }
  158.  
  159. }
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: Java

Bookmark and Share
Puntuado 2.3/5 (46.09%) (23 Votos)
Escribe un comentario

No hay comentarios

Escribe tu comentario

Imagen Anti-Spam

Últimos tutoriales

Últimos scripts

Enlaces

Nube de tags

  bank4droid     xhtml     moviles     java     android     mac     css     overclocking     htc diamond     htc magic     cbrutonoti     herramientas     cperdidas     windows     jtuenti     seo     messenger     modding     php  

El contenido de esta página requiere una versión más reciente de Adobe Flash Player.

Obtener Adobe Flash Player



Generado desde cero con PHP y MySQL. Valid XHTML/CSS/RSS   
Technology Top Blogs DigNow.net Technology blogs & blog posts

Quantcast