jueves, 15 de noviembre de 2012

Juego de craps y rojo - amarillo - verde código en lenguaje cpp

JUEGO 1: ROJO – AMARILLO – VERDE:
Escriba un programa que juegue al ROJO – AMARILLO – VERDE. El programa genera
tres dígitos aleatoriamente entre 0 y 9. A estos dígitos se le asigna la posición 1, 2, 3. El
objetivo del juego es adivinar los dígitos así como sus posiciones correctas con el menor
número de intentos posibles. Para cada intento, el jugador proporciona tres dígitos para
las posiciones 1, 2, 3. El programa responde con una pista que consta  de rojo, amarillo y
verde. Si un dígito está en la posición correcta, la respuesta es verde. Si el dígito
adivinado está en la posición incorrecta, la respuesta es amarillo. Si el dígito para una
posición dada no coincide con ninguno de los tres dígitos, la respuesta es roja. A
continuación se muestra un ejemplo de respuestas para los dígitos: 6, 5 y 8 en las
opciones 1, 2, 3, respectivamente:

INTENTOS                              PISTAS
1  2  5                ROJO               ROJO       AMARILLO
8  5  3                AMARILLO    VERDE    ROJO
8  5  6                AMARILLO    VERDE    AMARILLO
6  5  8                VERDE            VERDE    VERDE

JUEGO 2: CRAPS.
Un juego de azar muy popular es el juego de dados conocido como “crasp”, el cual
consiste en:
Un jugador lanza dos dados. Cada dado tiene seis caras. Estas caras contienen 1, 2, 3, 4, 5
y 6 puntos. Una vez que los dados caen, se calcula la suma de los puntos de las caras
superiores de ambos dados. Si la suma es 7 u 11 en el primer tiro, el jugador gana. Si la
suma es 2, 3 o 12 en el primer tiro (llamado crasp), el jugador pierde (es decir, la casa
gana). Se la suma es 4, 5, 6, 8, 9 o 10 en el primer tiro, entonces ésta se convierte en
“puntos” del jugador. Para ganar, usted debe continuar tirando los dados hasta que
“haga su punto”. El jugador pierde si tira 7 antes de hacer su punto.


#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<time.h>
using namespace std;
enum estado{CONTINUA, GANA, PIERDE};

int main()
{
    int opcion, apuesta, balance_banco=1000, dado1, dado2, sum_dados, ptos; //variables
    int adv_num1, num1, adv_num2, num2, adv_num3, num3, intentos=0;
    char pista_num1 [10], pista_num2 [10], pista_num3 [10], respuesta;
    enum estado estado_juego; //puede contener los estados del juego GANA, PIERDE o CONTINUA

    system("COLOR 1F"); //cambia el color de fondo y de las letras
    srand(time(NULL)); //evita que los numeros aleatorios se repitan

    do{
        cout<<endl<<"\t\t\t ***** Menu Principal *****"<<endl;

        cout<<endl<<endl<<"\t     ########                   ###                  ##     ## "<<endl;
                    cout<<"\t     ##     ##                 ## ##                 ##     ## "<<endl;
                    cout<<"\t     ##     ##                ##   ##                ##     ## "<<endl;
                    cout<<"\t 1.- ########     #######    ##     ##    #######    ##     ## "<<endl;
                    cout<<"\t     ##   ##                 #########                ##   ##  "<<endl;
                    cout<<"\t     ##    ##                ##     ##                 ## ##   "<<endl;
                    cout<<"\t     ##     ##               ##     ##                  ###    "<<endl<<endl;

                    cout<<"\t      ######  ########     ###    ########   ######  "<<endl;
                    cout<<"\t     ##    ## ##     ##   ## ##   ##     ## ##    ## "<<endl;
                    cout<<"\t     ##       ##     ##  ##   ##  ##     ## ##       "<<endl;
                    cout<<"\t 2.- ##       ########  ##     ## ########   ######  "<<endl;
                    cout<<"\t     ##       ##   ##   ######### ##              ## "<<endl;
                    cout<<"\t     ##    ## ##    ##  ##     ## ##        ##    ## "<<endl;
                    cout<<"\t      ######  ##     ## ##     ## ##         ######  "<<endl<<endl;

        cout<<"\t 3.- Salir del Programa"<<endl;
        cout<<"\t Indique la opcion seleccionada: ";
        cin>>opcion;
        cout<<endl;

        system("cls"); //borra la pantalla del menu principal

        switch (opcion)
        {
            case 1:
            {
                do{
                    cout<<endl<<endl<<"\t ########                   ###                  ##     ## "<<endl;
                                cout<<"\t ##     ##                 ## ##                 ##     ## "<<endl;
                                cout<<"\t ##     ##                ##   ##                ##     ## "<<endl;
                                cout<<"\t ########     #######    ##     ##    #######    ##     ## "<<endl;
                                cout<<"\t ##   ##                 #########                ##   ##  "<<endl;
                                cout<<"\t ##    ##                ##     ##                 ## ##   "<<endl;
                                cout<<"\t ##     ##               ##     ##                  ###    "<<endl;

                    cout<<endl<<"\t\t ***** Menu *****"<<endl;
                    cout<<"\t 1.- Juego Nvo."<<endl;
                    cout<<"\t 2.- Regresar al menu principal"<<endl;
                    cout<<"\t 3.- Salir del Programa"<<endl;
                    cout<<"\t Indique la opcion seleccionada: ";
                    cin>>opcion;

                    system("cls"); //borra la pantalla de menu del juego

                    switch(opcion)
                    {
                        case 1:
                        {
                            do{
                                adv_num1=rand()%10; //genera numeros aleatorios del 0 al 9
                                adv_num2=rand()%10;
                                adv_num3=rand()%10;

                                do{
                                    cout<<endl<<endl<<"\t Indique el primer numero: ";
                                    cin>>num1;
                                    cout<<"\t Indique el segundo numero: ";
                                    cin>>num2;
                                    cout<<"\t Indique el tercer numero: ";
                                    cin>>num3;

                                    if(num1==adv_num1)
                                    {
                                        strcpy(pista_num1,"VERDE");
                                    }
                                    else
                                        {
                                            if((num1!=adv_num1)&&(num1!=adv_num2)&&(num1!=adv_num3))
                                            {
                                                strcpy(pista_num1,"ROJO");
                                            }
                                            else
                                                {
                                                    if((num1==adv_num2)||(num1==adv_num3))
                                                    {
                                                        strcpy(pista_num1,"AMARILLO");
                                                    }
                                                }
                                            }

                                    if(num2==adv_num2)
                                    {
                                        strcpy(pista_num2,"VERDE");
                                    }
                                    else
                                        {
                                            if((num2!=adv_num1)&&(num2!=adv_num2)&&(num2!=adv_num3))
                                            {
                                                strcpy(pista_num2,"ROJO");
                                            }
                                            else
                                                {
                                                    if((num2==adv_num1)||(num2==adv_num3))
                                                    {
                                                        strcpy(pista_num2,"AMARILLO");
                                                    }
                                                }
                                            }

                                    if(num3==adv_num3)
                                    {
                                        strcpy(pista_num3,"VERDE");
                                    }
                                    else
                                        {
                                            if((num3!=adv_num1)&&(num3!=adv_num2)&&(num3!=adv_num3))
                                            {
                                                strcpy(pista_num3,"ROJO");
                                            }
                                            else
                                                {
                                                    if((num3==adv_num1)||(num3==adv_num2))
                                                    {
                                                        strcpy(pista_num3,"AMARILLO");
                                                    }
                                                }
                                        }

                                    intentos+=1; //cuenta el numero de intentos

                                    cout<<endl<<"\t INTENTOS "<<"\t\t PISTAS"<<"\t\t OPORTUNIDAD: "<<intentos<<"/3"<<endl;
                                    cout<<"\t  "<<num1<<" "<<num2<<" "<<num3<<"\t\t "<<pista_num1<<"  "<<pista_num2<<"  "<<pista_num3<<endl;

                                }while(((strcmp(pista_num1,"VERDE")!=0)||(strcmp(pista_num2,"VERDE")!=0)||(strcmp(pista_num3,"VERDE")!=0))&&(intentos!=3)); //verifica el valor de la pista dada y termuna el turno si falla 3 veces

                                intentos=0; //reinicia el contador de intentos

                                do{ //valida la continuacion el juego
                                    cout<<endl<<"\t Desea continuar con el juego (S) o (N): ";
                                    cin>>respuesta;

                                    if((respuesta!='n')&&(respuesta!='N')&&(respuesta!='s')&&(respuesta!='S'))
                                    {
                                    cout<<endl<<endl<<"\t Opcion invalida intentelo de nuevo"<<endl<<endl;
                                    }
                                }while((respuesta!='n')&&(respuesta!='N')&&(respuesta!='s')&&(respuesta!='S'));

                                system("cls"); //borra la pantalla luego de cada jugada

                            }while((respuesta!='n')&&(respuesta!='N'));
                            break;
                        }

                        case 2:
                        {
                            break;
                        }

                        case 3:
                        {
                            exit(0);
                            break;
                        }

                        default:
                        {
                            cout<<endl<<"\t opcion invalida"<<endl<<endl;
                            break;
                        }
                    }
                }while((opcion!=2)&&(opcion!=3));
                break;
            }

            case 2:
            { //inico opcion 2
                do{
                    cout<<endl<<endl<<"\t  ######  ########     ###    ########   ######  "<<endl;
                                cout<<"\t ##    ## ##     ##   ## ##   ##     ## ##    ## "<<endl;
                                cout<<"\t ##       ##     ##  ##   ##  ##     ## ##       "<<endl;
                                cout<<"\t ##       ########  ##     ## ########   ######  "<<endl;
                                cout<<"\t ##       ##   ##   ######### ##              ## "<<endl;
                                cout<<"\t ##    ## ##    ##  ##     ## ##        ##    ## "<<endl;
                                cout<<"\t  ######  ##     ## ##     ## ##         ######  "<<endl;

                    cout<<endl<<endl<<"\t\t ***** Menu *****"<<endl;
                    cout<<"\t 1.- Juego Nvo."<<endl;
                    cout<<"\t 2.- Regresar al menu principal"<<endl;
                    cout<<"\t 3.- Salir del Programa"<<endl;
                    cout<<"\t Indique la opcion seleccionada: ";
                    cin>>opcion;
                    cout<<endl;

                    system("cls"); //borra la pantalla de menu del juego

                    switch(opcion)
                    {
                        case 1:
                        {//inicio craps
                            do{
                                cout<<endl<<endl<<"\t Balance del banco Bs. "<<balance_banco<<endl<<endl;

                                do{
                                    cout<<"\t Jugador apuesta Bs: ";
                                    cin>>apuesta;

                                    if(apuesta<0)
                                    {
                                        cout<<endl<<"\t Monto invalido"<<endl<<endl;
                                    }
                                    else
                                        {
                                            if(apuesta<50)
                                            {
                                                cout<<endl<<"\t El monto minimo para apostar es de 50 Bs."<<endl<<endl;
                                            }
                                            else
                                                {
                                                    if(apuesta>500)
                                                    {
                                                        cout<<endl<<"\t El monto de la apuesta no puede ser mayor de 500 Bs."<<endl<<endl;
                                                    }
                                                }
                                            }
                                }while((apuesta<0)||(apuesta<50)||(apuesta>500)); //valida el monto de la apuesta

                                if(apuesta<=balance_banco) //valida que el monto de la apuesta no sea mayor que el balance del banco
                                {
                                    cout<<endl<<"\t El jugador esta lanzando los dados"<<endl;

                                    dado1=1+(rand()%6); //genera la cara del dado 1 aleatoriamente
                                    dado2=1+(rand()%6); //genera la cara del dado 2 aleatoriamente
                                    sum_dados=dado1+dado2; //suma de los dados

                                    cout <<"\t El jugador lanzo: "<< dado1<<" + "<<dado2<<" = "<<sum_dados<<endl; //muestra el resultado de este lanzamiento

                                    if((sum_dados==7)||(sum_dados==11)) //el jugador gana en el primer intento
                                    {
                                        estado_juego=GANA;
                                    }
                                    else
                                        {
                                            if((sum_dados==2)||(sum_dados==3)||(sum_dados==12)) //el jugador pierde en el primer intento
                                            {
                                                estado_juego=PIERDE;
                                            }
                                            else //el juego continua
                                                {
                                                    estado_juego=CONTINUA;
                                                    ptos=sum_dados;
                                                    cout<<endl<<"\t Puntos: "<<ptos<<endl;
                                                }
                                        }

                                    while(estado_juego==CONTINUA)
                                    {
                                        cout<<endl<<"\t El jugador esta lanzando los dados"<<endl;

                                        dado1=1+(rand()%6); //genera la cara del dado 1 aleatoriamente
                                        dado2=1+(rand()%6); //genera la cara del dado 2 aleatoriamente
                                        sum_dados=dado1+dado2; //suma de los dados

                                        cout <<"\t El jugador lanzo: "<< dado1<<" + "<<dado2<<" = "<<sum_dados<<endl; //muestra el resultado de
                                        cout<<endl<<"\t Puntos: "<<sum_dados<<endl;

                                        if(sum_dados==ptos) //el jugador gana por punto
                                        {
                                            estado_juego=GANA;
                                        }
                                        else
                                            {
                                                if(sum_dados==7) //el jugador pierde por punto
                                                {
                                                    estado_juego=PIERDE;
                                                }
                                            }
                                    }

                                    if(estado_juego==GANA)
                                    {
                                        balance_banco+=apuesta; //se suma el monto de la apuesta
                                        cout<<endl<<"\t El jugador gana, el nuevo balance es: "<<balance_banco<<endl;
                                    }
                                    else
                                        {
                                            if(estado_juego==PIERDE)
                                            {
                                                balance_banco-=apuesta; //se resta el monto de la apuesta
                                                cout<<endl<<"\t Craps! El jugador pierde"<<endl;
                                                cout <<"\t El jugador tiene Bs. "<<balance_banco<<endl;
                                            }
                                        }

                                    if(balance_banco==0) //si el monto del banco es cero el juego finaliza
                                    {
                                        system("cls");
                                        cout<<endl<<"\t Disculpe, ya no tiene suficiente dinero"<<endl;
                                        break; //rompe el ciclo
                                    }
                                }
                                 else
                                    {
                                        cout<<endl<<"\t La apuesta no puede ser mayor que el balance del banco"<<endl;
                                        cout<<endl<<"\t Intente con otro monto"<<endl<<endl;
                                    }

                                do{ //valida la continuacion el juego
                                    cout<<endl<<"\t Desea continuar con la apuesta actual (S) o terminar el juego (N): ";
                                    cin>>respuesta;

                                    if((respuesta!='n')&&(respuesta!='N')&&(respuesta!='s')&&(respuesta!='S'))
                                    {
                                        cout<<endl<<endl<<"\t Opcion invalida intentelo de nuevo"<<endl<<endl;
                                    }
                                }while((respuesta!='n')&&(respuesta!='N')&&(respuesta!='s')&&(respuesta!='S'));

                                system("cls"); //borra la pantalla luego de cada jugada

                            }while((respuesta!='n')&&(respuesta!='N'));

                            balance_banco=1000; //al finalizar el juego reinicia el monto del banco

                            break;
                        } //fin craps

                        case 2: //vuelve al menu principal
                        {
                            break;
                        }

                        case 3:
                        {
                            exit(0); //cierra el programa
                            break;
                        }

                        default: //valida las opciones del menu del juego
                        {
                            cout<<endl<<"\t Opcion invalida"<<endl<<endl;
                            break;
                        }
                    }
                }while((opcion!=2)&&(opcion!=3)); //continua el juego hasta que seleccione la opcion 2 o la opcion 3
                break;
            } //fin opcion 2

            case 3:
            {
                exit(0); //cierra el juego
                break;
            }

            default: ////valida las opciones del menu principal
            {
                cout<<endl<<"\t Opcion invalida"<<endl<<endl;
                break;
            }
    }
    }while(opcion!=3);

    system("pause");
    return 0;
}

Descargar Código

0 comentarios:

Publicar un comentario