Programando un Craps en C...

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

0 Miembros y 2 Visitantes están viendo este tema.

Principios en C

Hola...

Estoy programando un craps en C, creo que la base del juego ya me quedo... pero aun me falta incluir al juego apuestas!! :-\ y aqui es cuando me atoré...

No sé como hacer para que se apueste minimo $5 cada vez que lanzen una tirada y pueda retirarse del juego o ganar el doble. Debo poner un limite de credito a la banca, por ejemplo $2000.

Pero ya no me surgen ideas, podrian ayudarme con esto?
Por favor!!!!! :rolleyes:


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int lanzadado(void);

main(){
      int estadojuego, suma, mispuntos, avanza; /*Sección de declaraciones*/
      printf("\n\n%s\n\n","< Una función para un juego de dados >");
      srand(time(NULL));
      suma = lanzadado();
     
      switch(suma){
                   case 7: case 11: estadojuego =1;
                   break;
                   
                   case 2: case 3: case 12: estadojuego = 2;
                   break;
                   
                   default:
                            estadojuego = 0;
                            mispuntos = suma;
                            printf("Mis puntos son: %d\n", mispuntos);
                            break;
                            }
                           
                            while (estadojuego == 0){
                                 
                                  suma = lanzadado();
                                  if(suma == mispuntos)
                                  estadojuego = 1;
                                  else
                                  if(suma == 7)
                                  estadojuego = 1;
                                  }
                                 
                                  if(estadojuego == 1)
                                  printf("Ya gano!!\n");
                                  else
                                  printf("Lo siento perdio!\n");
                                  scanf("%d", &avanza);
                                  return 0;
                                  }
                                 
                                  int lanzadado(void){
                                     
                                      int dadouno, dadodos, sumatirada;
                                      dadouno = 1 + (rand()%6);
                                      dadodos = 1 + (rand()%6);
                                      sumatirada = dadouno + dadodos;
                                      printf("Lanzamiento de los dados %d+%d=%d\n",dadouno,dadodos, sumatirada);
                                      return sumatirada;
                                      }

Alien-Z

#1
CitarNo sé como hacer para que se apueste minimo $5 cada vez que lanzen una tirada y pueda retirarse del juego o ganar el doble. Debo poner un limite de credito a la banca, por ejemplo $2000.

No entiendo muy bien la duda, te basta con ir poniendo bucles y condiciones, por ejemplo para la apuesta mínima puedes hacer algo asi:

apuesta = 0;
while (apuesta < 5)
{
printf("La apuesta minima es de 5 dolares. ¿Cuánto quiere apostar?: ");
scanf ("%d", &apuesta);
}


Para retirarse del juego pon después de la tirada una pregunta y sus correspondientes acciones, por ejemplo:

printf ("1- Doble o nada.\n2-Retirarse.\nElija su opción: ")
scanf ("%d", &opcion);
if (opcion == 1)
{
apuesta *= 2;
}
if (opcion == 2)
{
//Que termine la partida o lo que quieras hacer
}


No sé si es eso lo que buscas, sino comenta y te diré cómo sería, el problema es que como no has puesto un code para las apuestas pues no sé muy bien de qué va tu juego; pero si tu pregunta era generalizada entonces con los bucles y condiciones podrás hacerlo.

Saludos.

Principios en C

Gracias por responder.... la verdad apenas probare lo que mencionas, pero se trata de un juego que lanza dos dados y si la suma de los puntos es 7 u 11 ganas, y en caso de ser 2, 3 u 12 pierdes.... entonces por cada vez que se lanzen los dados debo preguntar me imagino que si desea apostar y las condciones de la apuesta ya las mencione.

Alien-Z

#3
Cita de: Principios en C en  9 Septiembre 2011, 01:42 AM
Gracias por responder.... la verdad apenas probare lo que mencionas, pero se trata de un juego que lanza dos dados y si la suma de los puntos es 7 u 11 ganas, y en caso de ser 2, 3 u 12 pierdes.... entonces por cada vez que se lanzen los dados debo preguntar me imagino que si desea apostar y las condciones de la apuesta ya las mencione.

Entiendo, pero para eso te basta con analizar los números; no se pueden hacer los ejercicios (no es muy ético) pero con los esquemas que te he dejado puedes guiarte y hacer el code específico para tu juego; si te atrancas o te da algún error pregunta de nuevo.

Saludos.

Principios en C

#4
Ya use lo que me sugeriste pero no me sale... por mas que lo pongo en varios lados.... ya sea que me imprime nada mas el menú, dice que si quieres apostar o ninguna de las dos y tan solo ya gano o perdio....   qué puedo hacer?? no pido que me lo resuelvan pero es que no me sale.... ademas yo tengo hecho la mayor parte del codigo y creanme que como principiante me costo mucho trabajo.
Ayuda!!! urge ahora si!!! Porfitas!!!! :-(
Algo en lo que si no tengo ni idea es como decir que se tiene un limite en la bolsa de apuesta por ejemplo 2000

Alien-Z

Deberías postear el nuevo code con las modificaciones que le hayas hecho, asi sabremos dónde falla.

Principios en C

#6
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int lanzadado(void);

main(){
      int estadojuego, suma, mispuntos, avanza, apuesta, opcion, i;
      apuesta = 0;
      opcion = 1;
      printf("\n\n%s\n\n","< Una función para un juego de dados >");  
      printf("La apuesta minima es de 5 pesos. ¿Cuánto quiere apostar?: ");
      scanf ("%d", &apuesta);  
      srand(time(NULL));
      suma = lanzadado();
     
      if(apuesta>=5){
     
      switch(suma){
                   case 7: case 11: estadojuego =1;
                   break;
                   
                   case 2: case 3: case 12: estadojuego = 2;
                   break;
                   
                   default:
                   estadojuego = 0;
                   mispuntos = suma;
                   printf("Mis puntos son: %d\n", mispuntos);
                   break;
                   }
                           
                   while (estadojuego == 0){
                                 
                   suma = lanzadado();
                   if(suma == mispuntos){
                   estadojuego = 1;
                   
                   }
                   else{
                   if(suma == 7){
                   estadojuego = 1;
                   }
                   }
                   }
             
                   if(estadojuego == 1){
                   printf("Ya gano!!\n");
                   printf ("1.- Apuesta el triple?\n2.- Prefiere retirarse?.\n\n Elija su opción: ");
                   scanf ("%d", &opcion);
                   if (opcion == 1){
                   apuesta *= 3;
                   }
                   if (opcion == 2){
                   getch();
                   }
                   }
                   else{
                   printf("Lo siento perdio!\n");
                   printf ("1.- Apuesta el triple?\n 2.-Prefiere retirarse?.\n\n Elija su opción: ");
                   scanf ("%d", &opcion);
                   if (opcion == 1){
                   apuesta *= 3;
                   }
                   if (opcion == 2){
                   getch();
                   }


                   }
                   scanf("%d", &avanza);
                   return 0;
                   }
                   }
                   
                   
                                 
                   int lanzadado(void){
                                     
                   int dadouno, dadodos, sumatirada;
                   dadouno = 1 + (rand()%6);
                   dadodos = 1 + (rand()%6);
                   sumatirada = dadouno + dadodos;
     printf("Lanzamiento de los dados %d+%d=%d\n",dadouno,dadodos, sumatirada);
                   return sumatirada;
                  }

Aqui ya me aparece el menu despues de que haya ganado  o perdido pero por mas que trato de hacer que despues de que elija la opcion se vuelvan a lanzar los dados no puedo o los vuelve a lanzar pero no sale el incremento de su apuesta....

Principios en C

#7

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int lanzadado(void);

main(){
       int estadojuego, suma, mispuntos, avanza, apuesta, opcion, i;
       apuesta;
       opcion = 1;
       printf("\n\n%s\n\n","< Una función para un juego de dados >"); 
       printf("La apuesta minima es de  pesos. ¿Cuánto quiere apostar?: ");
       scanf ("%d", &apuesta); 
       srand(time(NULL));
       suma = lanzadado();
       
       if(apuesta>=5){
       
       switch(suma){
                    case 7: case 11: estadojuego =1;
                    break;
                   
                    case 2: case 3: case 12: estadojuego = 2;
                    break;
                   
                    default:
                    estadojuego = 0;
                    mispuntos = suma;
                    printf("Mis puntos son: %d\n", mispuntos);
                    break;
                    }
                             
                    while (estadojuego == 0){
                                   
                    suma = lanzadado();
                    if(suma == mispuntos){
                    estadojuego = 1;
                   
                    }
                    else{
                    if(suma == 7){
                    estadojuego = 1;
                    }
                    }
                    }
             
                    if(estadojuego == 1){
                    printf("Ya gano!!\n");
                    printf ("1.- Apuesta el triple?\n2.- Prefiere retirarse?.\n\n Elija su opción: ");
                    scanf ("%d", &opcion);
                    if (opcion == 1){
                    apuesta *= 3;
                    printf("Tu apuesta ahora es de: %d\n",apuesta);
                    suma = lanzadado();
                    }
                    if (opcion == 2){
                    printf("Usted se ha retirado con la cantidad de: %d", apuesta);           
                    }
                    }
                    else{
                    printf("Lo siento perdio!\n");
                    printf ("1.- Apuesta el triple?\n 2.-Prefiere retirarse?.\n\n Elija su opción: ");
                    scanf ("%d", &opcion);
                    if (opcion == 1){
                    apuesta *= 3;
                    printf("Tu apuesta ahora es de: &d", apuesta);
                    suma = lanzadado();
                    }
                    if (opcion == 2){
                    printf("Usted se ha retirado con la cantidad de: %d", apuesta);           
                    }


                    }
                    scanf("%d", &avanza);
                    return 0;
                    }
                    }
                   
                   
                                   
                    int lanzadado(void){
                                       
                    int dadouno, dadodos, sumatirada;
                    dadouno = 1 + (rand()%6);
                    dadodos = 1 + (rand()%6);
                    sumatirada = dadouno + dadodos;
      printf("Lanzamiento de los dados %d+%d=%d\n",dadouno,dadodos, sumatirada);
                    return sumatirada;
                    }


Aqui ya me da la apuesta triple y lanza nuevamente los dados pero ya no dice si gano o perdio....

Alien-Z

#8
Se hace difícil entender el code si no respetas espacios y cambios de línea, debes separar partes del código que se refieran a diferentes cosas.

El problema de que no te diga si has ganado o has perdido es porque no llamas a esa parte en todos los casos, lo que debes hacer es crear una función que te pida las diferentes opciones (apostar el triple, retirarse, etc.) y según la respuesta del usuario que efectúe una acción u otra, y que el único valor que retorne dicha función sea el de los puntos ganados o perdidos.

Te retocaré ese par de puntos en el code para que veas como sería, ahora un rato me pongo y lo posteo.

Principios en C

#9
Gracias!  :D
Esperare tu post.... el tiempo se me termina!!!! :-(
y mi cabezilla ya no da para mas...
me volvio loquizimo ese programa....   :¬¬