Programando un Craps en C...

Iniciado por Principios en C, 8 Septiembre 2011, 21:38 PM

0 Miembros y 1 Visitante están viendo este tema.

Alien-Z

#10
Aqui te lo dejo:

Código (cpp) [Seleccionar]
#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.

Principios en C

Gracias!!!!!!!!!!!!! en verdad, oie una ultima pregunta el "goto" porque lo puedo cambiar?? porque no me dejan usarlo....

Alien-Z

Cita de: Principios en C en 11 Septiembre 2011, 23:08 PM
Gracias!!!!!!!!!!!!! en verdad, oie una ultima pregunta el "goto" porque lo puedo cambiar?? porque no me dejan usarlo....

Vale, lo puse intentando hacer el código lo más sencillo posible y evitar que te liaras, pero tienen toda la razón con no permitirte usar "goto", está totalmente desaconsejado. Para tener el mismo efecto debes crear un bucle (while o for) y cuando quieras que finalice el bucle cambias el valor de la condición; tienes un ejemplo muy claro en el mismo código:

Código (cpp) [Seleccionar]
while (opcion != 10)
   {
    ...
    case 3:
               {
               opcion = 10;
               break;
               }
   }


Ahi por ejemplo, en el caso de que el usuario ingrese "3" (finalizar la partida) el valor de "opcion" pasa a ser "10" y por tanto deja de cumplirse la condición del bucle que es: while (opcion != 10), es decir, "Siempre que opcion no valga 10".

Principios en C

ok, gracias... intentare esto de nuevo...
te agradezco en verdad!!