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;
}
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.
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.
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.
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
Deberías postear el nuevo code con las modificaciones que le hayas hecho, asi sabremos dónde falla.
#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....
#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....
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.
Gracias! :D
Esperare tu post.... el tiempo se me termina!!!! :-(
y mi cabezilla ya no da para mas...
me volvio loquizimo ese programa.... :¬¬
Aqui te lo dejo:
#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.
Gracias!!!!!!!!!!!!! en verdad, oie una ultima pregunta el "goto" porque lo puedo cambiar?? porque no me dejan usarlo....
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:
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".
ok, gracias... intentare esto de nuevo...
te agradezco en verdad!!