Ayuda con codigo de juego TAREA

Iniciado por Jay, 3 Octubre 2018, 05:28 AM

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

Jay

#include <iostream>
#include <cctype>
#include <cstdlib>
#include <ctime>
#include <string.h>

using namespace std;

string Usuario();
string Usuario1();
string Maquina();
string Maquina1();
void DeterminaGanador(string, string string);
void DeterminaGanador1(string, string, string, string, string);

string Usuario(){

    int eleccion;


    do{
        cout<< "Porfavor presiona 1=Papel, 2=Piedra, 3=Tijeras: ";
        cin>>eleccion;


    }while(eleccion < 1 || eleccion > 3);


    if(eleccion == 1)
        return "Papel";
    else if(eleccion == 2)
        return "Piedra";
    else
        return "Tijeras";

}

string Usuario1(){

    int eleccion;

    do{

            cout<< "Porfavor presiona 1=Papel, 2=Piedra, 3=Tijeras, 4=Spock, 5=Lagarto: ";
            cin>>eleccion;

    }while(eleccion < 1 || eleccion > 5);

    if(eleccion == 1)
        return "Papel";

    else if(eleccion == 2)
        return "Piedra";
    else if(eleccion == 3)
        return "Tijeras";
    else if(eleccion == 4)
        return "Spock";

    else
        return "Lagarto";





}

string Maquina(){
    int numero;

    numero = (rand()%3)+1;

    if(numero ==1)
        return "Papel";
    else if(numero == 2)
        return "Piedra";
    else
        return "Tijeras";

}

string Maquina1(){
    int numero;

    numero = (rand()%5)+1;

    if(numero ==1)
        return "Papel";
    else if(numero == 2)
        return "Piedra";
    else if(numero == 3)
        return "Tijeras";
    else if(numero == 4)
        return "Spock";
    else
        return "Lagarto";

}

int *DeterminaGanador(string nombre, string Jugador, string Maquina){
        static int empate;
        static int ganar;
        static int perder;

    if(Jugador == Maquina){
         cout<< "Empate" << endl;
         empate++;
         return &empate;

    } else
            if((Jugador == "Piedra" && Maquina == "Tijeras") ||
                (Jugador == "Papel" && Maquina == "Piedra") ||
                (Jugador == "Tijeras" && Maquina == "Papel") ){

                   cout << "Resultado: "<< nombre<< " Eres el Ganador"<< endl;
                   ganar++;
                   return &ganar;
                }

        else
            cout << "Resultado: La Maquina Gana"<<endl;
            perder++;
            return &perder;

}

int *DeterminaGanador1(string nombre, string Jugador, string Maquina){

    int ganar, perder, empatar;
    if(Jugador == Maquina)
        cout<< "Empate" << endl;

    else if((Jugador == "Piedra" && Maquina == "Tijeras") ||
                (Jugador == "Papel" && Maquina == "Piedra") ||
                (Jugador == "Tijeras" && Maquina == "Papel") ||
                (Jugador == "Piedra" && Maquina == "Lagarto") ||
                (Jugador == "Lagarto" && Maquina == "Spock") ||
                (Jugador == "Spock" && Maquina == "Tijeras") ||
                (Jugador == "Tijeras" && Maquina == "Lagarto") ||
                (Jugador == "Lagarto" && Maquina == "Papel") ||
                (Jugador == "Papel" && Maquina == "Spock") ||
                (Jugador == "Spock" && Maquina == "Piedra") )

            cout << "Resultado: "<< nombre<<"Eres el Ganador" << endl;

    else
        cout << "Resultado: La Maquina Gana" << endl;


}


int main()
{
    string movimientoJugador;
    string OponenteMovimiento;
    char res;
    srand(time(NULL));
    string nombreJugador;
    int seleccion;
    int eleccion;



    cout<<"Indica el numero de tu seleccion" <<endl;
    cout<<"(1) Iniciar Juego"<<endl;
    cout<<"(2) Salir"<<endl;
    cin>>seleccion;


    if(seleccion==1){

     cout <<"Bienvenido al Juego. Porfavor Introduce un nombre: ";
     cin.ignore();
     getline(cin, nombreJugador);

     cout<<"Hola: "<<nombreJugador<<endl;

        cout<<"Indica como quieres jugar"<<endl;
        cout<<"(1) Normal"<<endl;
        cout<<"(2) Avanzado"<<endl;
        cin>>eleccion;

        if(eleccion==1){

        do{
            movimientoJugador = Usuario();
            OponenteMovimiento = Maquina();

            cout << "Juegas con: " << movimientoJugador << endl;
            cout << "La maquina juega con: " << OponenteMovimiento << endl;

            DeterminaGanador(nombreJugador, movimientoJugador, OponenteMovimiento);

            cout << "Quieres volver a jugar? [s/n]";
            cin>>res;


        }while(toupper(res) == 'S');
        if(toupper(res) == 'N'){
                cout << "Termina el juego estos son tus resultados!" <<endl;
                cin>>res;


            }


        }

        if(eleccion==2){

            do{

                movimientoJugador = Usuario1();
                OponenteMovimiento = Maquina1();

                cout << "Juegas con: " << movimientoJugador << endl;
                cout << "La maquina juega con: " << OponenteMovimiento << endl;

                DeterminaGanador1(nombreJugador, movimientoJugador, OponenteMovimiento);

                cout << "Quieres volver a jugar? [s/n]";
                cin>>res;


            }while(toupper(res) == 'S');
                if(toupper(res) == 'N'){
                cout << "Termina el juego estos son tus resultados!" <<endl;
                cin>>res;

                }

        }

    }

    if(seleccion==2){
        cout<<"Gracias por participar";

    } else(cout<<"Opcion no valida");





}
















LO DEJE ASI , SOLO ME GUSTARIA SABER COMO PONER ESE PUNTERO EN EL MAIN? PARA EL CONTADOR Y TAMBIEN COMO HUBIERA PODIDO VALIDAR LO DE QUE SI INSERTABAS UNA LETRA ALA HORA DEESCOGER PIEDRA PAPEL O TIJERAS NO SE CICLARA OSEA VALIDARLO, DIGO PARA TENERLO EN CUENTA EN MI PROXIMO PROYECTO

MAFUS

Pon tu código entre etiquetas las etiquetas [code=c++] [/code]

OmarHack

Para sacar en pantalla el puntero simplemente usa
cout << *nombreDelPuntero;
al definir con static la variable, esta se guarda en memoria y no se destruye al acabar la función. Por lo que puedes utilizarla exactamente igual que si fuese una variable global.
Si no la declaras como static el contenido de la variable será sobrescrito en memoria por cualquier otra cosa que necesite almacenarse en memoria. Entonces cuando quisieses acceder al contenido de la variable, podrías encontrarte que en esa dirección de memoria hay otra cosa distinta. Por eso use static, para decirle que no quiero que la zona de memoria donde está alojada, no se sobreescriba y siempre me guarde el valor de la variable ahí, hasta que el programa finalice y libere la memoria.

Un puntero es lo mismo que una variable, pero le pones el * simplemente para que quien lea el código sepa que es un puntero.



Para que se haga algo, cuando el usuario introduzca un dato que tu no esperas puedes usar el switch case. Pones todos los valores que esperas que la variable argumento del switch pueda contener, y para el resto usas un solo default.

Por ejemplo:
Código (cpp) [Seleccionar]

switch (variableConUnNumeroEntero)
{
case 1: //esto se ejecuta si la variable variableConUnNumeroEntero
//vale 1. Es exactamente lo mismo que poner:
// if (variableConUnNumeroEntero == 1)
//{lo que pasa si la variable vale1;}
break;

case 2: // lo mismo, pero si la variable es igual a 2.
//aquí pones lo que quieras que pase si la variable es == a 2.
break;

default: //esto por lo general se aplicará siempre. Pero como hay un
//break; en los otros casos, no se aplicará si alguno de ellos se
//cumple, ya que al ejecutarse un break; el switch finaliza y deja de
//comprobar si los otros case se cumplen.
cout<< "Si lees esto en la salida del programa, quiere decir que la variable no valía ni 1 ni 2";
break;




Si quieres que cuando el usuario ponga un valor erróneo se vuelva a ejecutar en bucle infinitamente hasta que el usuario ponga un valor válido, mete todo el switch dentro de un while y le cambias la condición desde dentro de un case o el default.

Por ejemplo:
Código (cpp) [Seleccionar]
int condicionParaDetenerElBucle = 0;
int variableConUnNumeroEntero;
while (condicionParaDetenerElBucle == 0)
{
         cout << "Introduce el número 1 para finalizar el programa"
         <<endl;
         cin >> variableConUnNumeroEntero;

         switch (variableConUnNumeroEntero)
                      {

                       case 1:
                    // Lo que quieras que pase;
                      condicionParaDetenerElBucle =1;
                      Break;

                       Default:
                       cout <<"Tu opción no es válida, intentalo de nuevo".
                       <<endl;
                       break;

                      }
}
I like to test things.