Código
#include <stdio.h> #include <stdlib.h> int dados (void); int main () { int estadojuego, mispuntos, puntosbanca, apuesta, opcion; printf ("---------\n| Craps |\n---------\n\n\n"); while (opcion != 10) { mispuntos = 1000; puntosbanca = 20000; printf ("La apuesta minima es de 5 dolares. ¿Cuanto quieres apostar?: "); scanf ("%d", &apuesta); etiqueta: estadojuego = dados (); switch (estadojuego) { case 1: { printf ("\nHas ganado."); mispuntos += apuesta; puntosbanca -= apuesta; printf ("\nTus puntos actuales son %d", mispuntos); break; } case 2: { printf ("\nHas perdido.\n"); mispuntos -= apuesta; puntosbanca -= apuesta; printf ("\nTus puntos actuales son %d ", mispuntos); break; } case 0: { printf ("\nNo gana nadie."); break; } } printf ("\n1.- Apostar el triple.\n2.- Empezar nueva partida.\n3.- Finalizar partida.\n\nElija su opcion: "); scanf ("%d", &opcion); switch (opcion) { case 1: { apuesta *= 3; goto etiqueta; break; } case 2: { break; } case 3: { opcion = 10; break; } } } return 0; } int dados(void) { unsigned short int dado1, dado2, tirada, estadojuego; dado1 = 1 + (rand()%6); dado2 = 1 + (rand()%6); tirada = dado1 + dado2; printf("Lanzamiento de los dados %d + %d = %d\n", dado1, dado2, tirada); switch(tirada) { case 7: { estadojuego = 1; break; } case 11: { estadojuego = 1; break; } case 2: { estadojuego = 2; break; } case 3: { estadojuego = 2; break; } case 12: { estadojuego = 2; break; } default: { estadojuego = 0; break; } } return estadojuego; }
Unas cosas con las que alomejor te lias:
-Se le asigna el valor de 1000 a "mispuntos" porque es con lo que empieza el usuario mientras que la banca comienza con 20000.
-Cuando el jugador elige finalizar la partida se cambia el valor de "opcion" a 10, lo cual hace que ya no se cumpla la condición del while (opcion != 10), asi que acaba el programa.
-Cuando elige la opción "Apostar el triple" se va a "etiqueta" para que el bucle no comience desde el principio con lo cual conseguimos que se mantengan los puntos obtenidos hasta ahora. La función "goto" está desaconsejada, pero la he usado para hacer el code sencillo y no liarte con bucles anidados.
-También falta implementar un par de condiciones para que cuando el jugador llegue a 0 puntos se acabe la partida (ya que no puede apostar más), pero viendo que eso no venía incluido en tu primer code dejaré que lo hagas por ti mismo.
Cualquier duda que tengas pregunta. Saludos.