Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Jay en 3 Octubre 2018, 05:28 am



Título: Ayuda con codigo de juego TAREA
Publicado por: Jay en 3 Octubre 2018, 05:28 am
Hola buenas noches tengo el problema con mi codigo
ME TRABE EN EL PUNTO 2 POR QUE UNA VEZ QUE LO METO EN EL IF YA NO ME PIDE QUE INGRESE EL NOMBRE
EN EL PUNTO 7 QUE SE LLEVARAN 3 CONTADORES TAMPOCO PUDE HACERLO
EL PUNTO 9 DE VALIDAR LAS OPCIONES DEL JUEGO
Y EL PUNTO 10 Y 11 AYUDA

Se pide que:
1. El programa inicia con un menu de dos opciones, Iniciar juego o Salir.
2. El juego iniciara preguntando al jugador su nombre, el cual debe admitir nombres conformados
por una o mas palabras.
3. Despues de que se capture el nombre, se preguntara al jugador que nivel desea jugar:
Normal. Solo utiliza piedra, papel y tijera.
Avanzado. Utiliza piedra, papel, tijera, lagarto y Spock.
4. El usuario podra elegir la opcion que utilizara para su jugada, dependiendo del nivel que seleccion.
5. Se generar´a de manera aleatoria la opcion con la que “jugar´a” la computadora.
6. Considerando la opcion ingresada por el usuario y la generada por la computadora se evaluara
si el usuario gano, perdio o empato.
7. Se llevaran 3 contadores, uno para cada caso (ganar, perder, empatar), y se incrementara el contador correspondiente.
8. El usuario podra repetir el juego cuantas veces quiera.
9. Es importante validar que:
La opcion ingresada exista.
Al solicitar que ingrese un numero no se ingrese una letra.
10. Al terminar de jugar se deberan desplegar en pantalla los contadores de juegos ganados, perdidos
y empatados.
11. Tambien se debera llevar el historial de resultados del juego, para poder saber que juegos gano,
perdio o empato. Se recomienda utilizar un arreglo para este punto.

Código
  1.  
  2. #include <iostream>
  3. #include <cctype>
  4. #include <cstdlib>
  5. #include <ctime>
  6. #include <string.h>
  7.  
  8. using namespace std;
  9.  
  10. string Usuario();
  11. string Usuario1();
  12. string Maquina();
  13. string Maquina1();
  14. void DeterminaGanador(string, string string);
  15. void DeterminaGanador1(string, string, string, string, string);
  16.  
  17. string Usuario(){
  18.  
  19. int eleccion;
  20.  
  21. do{
  22. cout<< "Porfavor presiona 1=Papel, 2=Piedra, 3=Tijeras: ";
  23. cin>>eleccion;
  24.  
  25.  
  26. }while(eleccion < 1 || eleccion > 3);
  27.  
  28.  
  29. if(eleccion == 1)
  30. return "Papel";
  31. else if(eleccion == 2)
  32. return "Piedra";
  33. else
  34. return "Tijeras";
  35.  
  36. }
  37.  
  38. string Usuario1(){
  39.  
  40. int eleccion;
  41.  
  42. do{
  43.  
  44. cout<< "Porfavor presiona 1=Papel, 2=Piedra, 3=Tijeras, 4=Spock, 5=Lagarto: ";
  45. cin>>eleccion;
  46.  
  47. }while(eleccion < 1 || eleccion > 5);
  48.  
  49. if(eleccion == 1)
  50. return "Papel";
  51.  
  52. else if(eleccion == 2)
  53. return "Piedra";
  54. else if(eleccion == 3)
  55. return "Tijeras";
  56. else if(eleccion == 4)
  57. return "Spock";
  58.  
  59. else
  60. return "Lagarto";
  61.  
  62.  
  63.  
  64.  
  65.  
  66. }
  67.  
  68. string Maquina(){
  69. int numero;
  70.  
  71. numero = (rand()%3)+1;
  72.  
  73. if(numero ==1)
  74. return "Papel";
  75. else if(numero == 2)
  76. return "Piedra";
  77. else
  78. return "Tijeras";
  79.  
  80. }
  81.  
  82. string Maquina1(){
  83. int numero;
  84.  
  85. numero = (rand()%5)+1;
  86.  
  87. if(numero ==1)
  88. return "Papel";
  89. else if(numero == 2)
  90. return "Piedra";
  91. else if(numero == 3)
  92. return "Tijeras";
  93. else if(numero == 4)
  94. return "Spock";
  95. else
  96. return "Lagarto";
  97.  
  98. }
  99.  
  100. void DeterminaGanador(string nombre, string Jugador, string Maquina){
  101. int ganar, empatar, perder;
  102. if(Jugador == Maquina)
  103. cout<< "Empate" << endl;
  104. else
  105. if((Jugador == "Piedra" && Maquina == "Tijeras") ||
  106. (Jugador == "Papel" && Maquina == "Piedra") ||
  107. (Jugador == "Tijeras" && Maquina == "Papel") )
  108.  
  109. cout << "Resultado: "<< nombre<< " Eres el Ganador"<< endl;
  110.  
  111. else
  112. cout << "Resultado: La Maquina Gana"<<endl;
  113.  
  114. }
  115.  
  116. void DeterminaGanador1(string nombre, string Jugador, string Maquina){
  117. int ganar, perder, empatar;
  118. if(Jugador == Maquina)
  119. cout<< "Empate" << endl;
  120.  
  121. else if((Jugador == "Piedra" && Maquina == "Tijeras") ||
  122. (Jugador == "Papel" && Maquina == "Piedra") ||
  123. (Jugador == "Tijeras" && Maquina == "Papel") ||
  124. (Jugador == "Piedra" && Maquina == "Lagarto") ||
  125. (Jugador == "Lagarto" && Maquina == "Spock") ||
  126. (Jugador == "Spock" && Maquina == "Tijeras") ||
  127. (Jugador == "Tijeras" && Maquina == "Lagarto") ||
  128. (Jugador == "Lagarto" && Maquina == "Papel") ||
  129. (Jugador == "Papel" && Maquina == "Spock") ||
  130. (Jugador == "Spock" && Maquina == "Piedra") )
  131.  
  132. cout << "Resultado: "<< nombre<<"Eres el Ganador" << endl;
  133.  
  134. else
  135. cout << "Resultado: La Maquina Gana" << endl;
  136.  
  137. }
  138.  
  139. struct nombreUsuario{
  140.  
  141. char nombre[20];
  142.  
  143. }nombreUsuario1;
  144.  
  145. int main()
  146. {
  147. string movimientoJugador;
  148. string OponenteMovimiento;
  149. char res;
  150. srand(time(NULL));
  151. string nombreJugador;
  152. int seleccion;
  153. int eleccion;
  154.  
  155.  
  156. cout<<"Indica el numero de tu seleccion" <<endl;
  157. cout<<"(1) Iniciar Juego"<<endl;
  158. cout<<"(2) Salir"<<endl;
  159. cin>>seleccion;
  160.  
  161.  
  162. if(seleccion==1){
  163.  
  164. cout <<"Bienvenido al Juego. Porfavor Introduce un nombre: ";
  165. cin.getline(nombreUsuario1.nombre, 20, '\n');
  166.  
  167. cout<<"Hola: "<<nombreUsuario1.nombre<<endl;
  168.  
  169. cout<<"Indica como quieres jugar"<<endl;
  170. cout<<"(1) Normal"<<endl;
  171. cout<<"(2) Avanzado"<<endl;
  172. cin>>eleccion;
  173.  
  174. if(eleccion==1){
  175.  
  176. do{
  177. movimientoJugador = Usuario();
  178. OponenteMovimiento = Maquina();
  179.  
  180. cout << "Juegas con: " << movimientoJugador << endl;
  181. cout << "La maquina juega con: " << OponenteMovimiento << endl;
  182.  
  183. DeterminaGanador(nombreJugador, movimientoJugador, OponenteMovimiento);
  184.  
  185. cout << "Quieres volver a jugar? [s/n]";
  186. cin>>res;
  187.  
  188.  
  189. }while(toupper(res) == 'S');
  190. if(toupper(res) == 'N'){
  191. cout << "Termina el juego estos son tus resultados!" <<endl;
  192. cin>>res;
  193.  
  194. }
  195.  
  196.  
  197.  
  198. }
  199.  
  200. if(eleccion==2){
  201.  
  202. do{
  203.  
  204. movimientoJugador = Usuario1();
  205. OponenteMovimiento = Maquina1();
  206.  
  207. cout << "Juegas con: " << movimientoJugador << endl;
  208. cout << "La maquina juega con: " << OponenteMovimiento << endl;
  209.  
  210. DeterminaGanador1(nombreJugador, movimientoJugador, OponenteMovimiento);
  211.  
  212. cout << "Quieres volver a jugar? [s/n]";
  213. cin>>res;
  214.  
  215.  
  216. }while(toupper(res) == 'S');
  217. if(toupper(res) == 'N'){
  218. cout << "Termina el juego estos son tus resultados!" <<endl;
  219. cin>>res;
  220.  
  221. }
  222.  
  223. }
  224.  
  225. }
  226.  
  227. if(seleccion==2){
  228. cout<<"Gracias por participar";
  229.  
  230. } else(cout<<"Opcion no valida");
  231.  
  232.  
  233.  
  234.  
  235.  
  236. }
  237.  
  238.  



[MOD] Para publicar código usar las etiquetas GeSHi


Título: Re: Ayuda con codigo de juego TAREA
Publicado por: OmarHack en 3 Octubre 2018, 13:13 pm
2:
Código
  1. #include<iostream>
  2. #include<string>
  3. #include<stdlib.h>
  4. #include<time.h>
  5.  
  6. string nombreDelJugador;
  7.  
  8. int main()
  9. {
  10. if (seleccion ==1)
  11. {
  12. cout << "Pon tu nombre" << endl;
  13.  
  14. cin.ignore();
  15. getline(cin,nombreDelJugador);
  16.  
  17. cout << "Hola " << nombreDelJugador << "qué dificultad elijes?" << endl;
  18. }
  19. }
  20.  




7:
Para los contadores decalara 3 variables:
int ganar = 0;
int perder = 0;
int empatar = 0;

Y al final de cada condicional usas los operadores ++

Por ejemplo:
Código
  1. if ( opcionDelJugador == opcionDeLaMaquina) {
  2. cout << "Empataste";
  3. empatar++;
  4. }
  5.  




9:
Puedes hacerlo de muchísimas formas.
Recomiendo un switch case con una variable entera.

Código
  1. int variableParaGuardarLaOpcionSeleccionada = 0;
  2. switch (variableParaGuardarLaOpcionSeleccionada)
  3. {
  4. case 1:
  5. Haz esto;
  6. break;
  7.  
  8. case 2:
  9. Haz esto otro;
  10. break;
  11. //.... Pon case seguido de todas las opciones que puede ingresar el usuario.
  12.  
  13. deafult:
  14. cout << "No has ingresado una opción correcta";
  15. }
  16.  




10:
Imprime en pantalla las variables ganar perder y empatar.
Código
  1. cout << "Has ganado " << ganar << " partidas" <<endl;
  2.  




11:
Tienes que imprimir en pantalla
N°de juego ElecciónDelJugador ElecciónDeLaMaquina Resultado
1.                  Tijera.                          Piedra.                             Perdí.
2.                  Piedra.                         Piedra.                             Empate.
......
 Usa el operador sizeof() para determinar cuantos juegos se han jugado y así poder asignarle el número de filas al array. Y ponle las 4 columnas.
Tras cada elección tienes que asignarle el resultado al array correspondiente.
Lo puedes hacer con un bucle for.
Busca ejemplos, que hay miles en google.

PD:
numero = (rand()%3)+1;
Generando los números aleatorios te recomiendo ponerlo así:
jugadaDeLaMaquina = 1+rand()%(4-1);
Así puedes ajustar el rango de números, si por ejemplo necesitas generar números del 10 al 20:
jugadaDeLaMaquina = 1+rand()%(21-10);


Título: Re: Ayuda con codigo de juego TAREA
Publicado por: Jay en 3 Octubre 2018, 14:10 pm
Hola omar el segundo punto puedo utilizar la estructura para realiadll ?

Los contadores los puedo hacer dentro de la función void determina ganador? O deben de de estar eb el main?
Igual el switch puedo hacerlo en la función usuario ?
Por que ahí es donde se pide la opcion y tendría que validar


Título: Re: Ayuda con codigo de juego TAREA
Publicado por: OmarHack en 3 Octubre 2018, 14:53 pm
realiadll? No sé a que te refieres.

Si puedes usar los contadores dentro de funciones, pero declara las variables fuera para que sean accesibles:

int ganar = 0

void loquesea();
int main()
{}

void loquesea(argumentos);
{
 ganar++;
}

Se hace así para que puedas acceder a la variable ganar desde cualquier función. Ya que si declaras la variable ganar dentro de la función:
void loquesea(argumentos);
{
int ganar;
 ganar++;
}

Esta variable ganar será una variable local, que solo existe dentro de la función. Es decir, al acabar de ejecutarse la función, la variable ganar se destruye. Por lo que no podrás usarla en el int main, ni en ninguna otra función. Ya que solo existe mientras la función (en la cual declaraste la variable) se está ejecutando.

Con el switch te pasa lo mismo, declara las variables como variables globales, fuera de todas las funciones. Ponlas debajo del include, al igual que puse yo la variable string nombreDelJugador;


Cuando declaras una variable global, es decir, fuera de todas las funciones, esas variables son inicializadas en memoria y se mantendrán en memoria hasta que el programa finalice. Por lo que podrán ser accesibles por cualquier función.

Si en cambio declaras la variable dentro de una función, esa variable es creada cuando se llama a la función, y solo existe en memoria hasta que la función deje de ejecutarse. Por lo que solo puedes acceder a ella dentro de la propia función.


Título: Re: Ayuda con codigo de juego TAREA
Publicado por: Jay en 3 Octubre 2018, 14:59 pm
Entiendo pero no puedo utilizar variables globales está prohibido , y te comentaba que si en el punto 2 podría usar una estructura para llamar al nombre ?


Título: Re: Ayuda con codigo de juego TAREA
Publicado por: OmarHack en 3 Octubre 2018, 16:11 pm
Pues si no puedes usar globales, retorna una variable que valga 1 de las funciones y se la sumas a una variable contador que Declares al principio dentro de la función main. En vez de declarar las funciones como void, declaralas como int, para poder devolver el valor 1.

Como en el ejercicio no vi nada de que no se pudiesen usar variables globales, las use para hacer el código más fácil de entender y sencillo.

Si puedes usar variables string dentro de estructuras. Pero no es necesario en este caso, ya que el nombre del jugador lo puedes imprimir entero solo con cout << nombreDelJugador;

Y para los arrais no te hace falta el nombre del jugador.



Título: Re: Ayuda con codigo de juego TAREA
Publicado por: Jay en 3 Octubre 2018, 19:29 pm
ENTIENDo y sería un contador para cada variable ósea declarar tres variables en la funcion a sean igual a 1 y después sumar uno en el main a esa variable ? Entiendo entiendo ,


Título: Re: Ayuda con codigo de juego TAREA
Publicado por: OmarHack en 3 Octubre 2018, 19:47 pm
Necesitas 3 en el main para empate ganar y perder, y minimo una en cada funcion para que te retorne 1 cada vez que se ejecute la función.


Título: Re: Ayuda con codigo de juego TAREA
Publicado por: Jay en 4 Octubre 2018, 06:14 am
Código
  1.  
  2.  
  3. #include <iostream>
  4. #include <cctype>
  5. #include <cstdlib>
  6. #include <ctime>
  7. #include <string.h>
  8.  
  9. using namespace std;
  10.  
  11. string Usuario();
  12. string Usuario1();
  13. string Maquina();
  14. string Maquina1();
  15. void DeterminaGanador(string, string string);
  16. void DeterminaGanador1(string, string, string, string, string);
  17.  
  18. string Usuario(){
  19.  
  20.    int eleccion;
  21.  
  22.  
  23.    do{
  24.        cout<< "Porfavor presiona 1=Papel, 2=Piedra, 3=Tijeras: ";
  25.        cin>>eleccion;
  26.  
  27.  
  28.    }while(eleccion < 1 || eleccion > 3);
  29.  
  30.  
  31.    if(eleccion == 1)
  32.        return "Papel";
  33.    else if(eleccion == 2)
  34.        return "Piedra";
  35.    else
  36.        return "Tijeras";
  37.  
  38. }
  39.  
  40. string Usuario1(){
  41.  
  42.    int eleccion;
  43.  
  44.    do{
  45.  
  46.            cout<< "Porfavor presiona 1=Papel, 2=Piedra, 3=Tijeras, 4=Spock, 5=Lagarto: ";
  47.            cin>>eleccion;
  48.  
  49.    }while(eleccion < 1 || eleccion > 5);
  50.  
  51.    if(eleccion == 1)
  52.        return "Papel";
  53.  
  54.    else if(eleccion == 2)
  55.        return "Piedra";
  56.    else if(eleccion == 3)
  57.        return "Tijeras";
  58.    else if(eleccion == 4)
  59.        return "Spock";
  60.  
  61.    else
  62.        return "Lagarto";
  63.  
  64.  
  65.  
  66.  
  67.  
  68. }
  69.  
  70. string Maquina(){
  71.    int numero;
  72.  
  73.    numero = (rand()%3)+1;
  74.  
  75.    if(numero ==1)
  76.        return "Papel";
  77.    else if(numero == 2)
  78.        return "Piedra";
  79.    else
  80.        return "Tijeras";
  81.  
  82. }
  83.  
  84. string Maquina1(){
  85.    int numero;
  86.  
  87.    numero = (rand()%5)+1;
  88.  
  89.    if(numero ==1)
  90.        return "Papel";
  91.    else if(numero == 2)
  92.        return "Piedra";
  93.    else if(numero == 3)
  94.        return "Tijeras";
  95.    else if(numero == 4)
  96.        return "Spock";
  97.    else
  98.        return "Lagarto";
  99.  
  100. }
  101.  
  102. int DeterminaGanador(string nombre, string Jugador, string Maquina){
  103.    int jugada=1;
  104.  
  105.    if(Jugador == Maquina)
  106.        cout<< "Empate" << endl;
  107.    else
  108.        if((Jugador == "Piedra" && Maquina == "Tijeras") ||
  109.                (Jugador == "Papel" && Maquina == "Piedra") ||
  110.                (Jugador == "Tijeras" && Maquina == "Papel") )
  111.  
  112.            cout << "Resultado: "<< nombre<< " Eres el Ganador"<< endl;
  113.  
  114.        else
  115.            cout << "Resultado: La Maquina Gana"<<endl;
  116.  
  117.            return jugada;
  118.  
  119. }
  120.  
  121. int DeterminaGanador1(string nombre, string Jugador, string Maquina){
  122.    int jugada1=1;
  123.    int ganar, perder, empatar;
  124.    if(Jugador == Maquina)
  125.        cout<< "Empate" << endl;
  126.  
  127.    else if((Jugador == "Piedra" && Maquina == "Tijeras") ||
  128.                (Jugador == "Papel" && Maquina == "Piedra") ||
  129.                (Jugador == "Tijeras" && Maquina == "Papel") ||
  130.                (Jugador == "Piedra" && Maquina == "Lagarto") ||
  131.                (Jugador == "Lagarto" && Maquina == "Spock") ||
  132.                (Jugador == "Spock" && Maquina == "Tijeras") ||
  133.                (Jugador == "Tijeras" && Maquina == "Lagarto") ||
  134.                (Jugador == "Lagarto" && Maquina == "Papel") ||
  135.                (Jugador == "Papel" && Maquina == "Spock") ||
  136.                (Jugador == "Spock" && Maquina == "Piedra") )
  137.  
  138.            cout << "Resultado: "<< nombre<<"Eres el Ganador" << endl;
  139.  
  140.    else
  141.        cout << "Resultado: La Maquina Gana" << endl;
  142.        return jugada1;
  143.  
  144. }
  145.  
  146.  
  147. int main()
  148. {
  149.    string movimientoJugador;
  150.    string OponenteMovimiento;
  151.    char res;
  152.    srand(time(NULL));
  153.    string nombreJugador;
  154.    int seleccion;
  155.    int eleccion;
  156.    int ganar=0, empatar=0, perder=0;
  157.  
  158.  
  159.    cout<<"Indica el numero de tu seleccion" <<endl;
  160.    cout<<"(1) Iniciar Juego"<<endl;
  161.    cout<<"(2) Salir"<<endl;
  162.    cin>>seleccion;
  163.  
  164.  
  165.    if(seleccion==1){
  166.  
  167.     cout <<"Bienvenido al Juego. Porfavor Introduce un nombre: ";
  168.     cin.ignore();
  169.     getline(cin, nombreJugador);
  170.  
  171.     cout<<"Hola: "<<nombreJugador<<endl;
  172.  
  173.        cout<<"Indica como quieres jugar"<<endl;
  174.        cout<<"(1) Normal"<<endl;
  175.        cout<<"(2) Avanzado"<<endl;
  176.        cin>>eleccion;
  177.  
  178.        if(eleccion==1){
  179.  
  180.        do{
  181.            movimientoJugador = Usuario();
  182.            OponenteMovimiento = Maquina();
  183.  
  184.            cout << "Juegas con: " << movimientoJugador << endl;
  185.            cout << "La maquina juega con: " << OponenteMovimiento << endl;
  186.  
  187.            DeterminaGanador(nombreJugador, movimientoJugador, OponenteMovimiento);
  188.  
  189.            cout << "Quieres volver a jugar? [s/n]";
  190.            cin>>res;
  191.  
  192.  
  193.        }while(toupper(res) == 'S');
  194.        if(toupper(res) == 'N'){
  195.                cout << "Termina el juego estos son tus resultados!" <<endl;
  196.                cin>>res;
  197.  
  198.            }
  199.  
  200.  
  201.        }
  202.  
  203.        if(eleccion==2){
  204.  
  205.            do{
  206.  
  207.                movimientoJugador = Usuario1();
  208.                OponenteMovimiento = Maquina1();
  209.  
  210.                cout << "Juegas con: " << movimientoJugador << endl;
  211.                cout << "La maquina juega con: " << OponenteMovimiento << endl;
  212.  
  213.                DeterminaGanador1(nombreJugador, movimientoJugador, OponenteMovimiento);
  214.  
  215.                cout << "Quieres volver a jugar? [s/n]";
  216.                cin>>res;
  217.  
  218.  
  219.            }while(toupper(res) == 'S');
  220.                if(toupper(res) == 'N'){
  221.                cout << "Termina el juego estos son tus resultados!" <<endl;
  222.                cin>>res;
  223.  
  224.                }
  225.  
  226.        }
  227.  
  228.    }
  229.  
  230.    if(seleccion==2){
  231.        cout<<"Gracias por participar";
  232.  
  233.    } else(cout<<"Opcion no valida");
  234.  
  235.  
  236.  
  237.  
  238.  
  239. }
  240.  
  241.  


No bro no supe como hacer los contadores, ni lo de validar la opcion por que cuando metes una letra como opcion se cicla imagino que es por el do while al pedir la seleccion, y tambien necesitos dos punteros y una estructura en el programa pero no se donde implementarla, solo logre arreglar lo de el nombre ahora si lo imprime bien pero los contadores no podrias decirme como sumarlos? ya declare las variables pero no supe como hice que me regresara 1 y declara en el main, y el de validar intente el switch pero con el do que tiene no supe que rollo, y pues lo de el puntero y estructura como lo podria implementar en este programa




[MOD] para publicar código usar las etiquetas GeSHi











Título: Re: Ayuda con codigo de juego TAREA
Publicado por: OmarHack en 4 Octubre 2018, 10:16 am
Si puedes usar punteros (pensé que no podías) usalos para hacer los contadores. Por ejemplo algo así:

Código
  1. int *funcion()
  2. {
  3. static int empateEnFuncion;
  4. static int ganarEnFuncion;
  5. static int perderEnFuncion;
  6.  
  7. if (jugadaDelUsuario == jugadaDeLaMaquina)
  8.   {
  9.   empateEnFuncion++;
  10.   return &empateEnFuncion;
  11.   }
  12. }
  13.  
  14. int main()
  15. {
  16. Bucle ()
  17. { funcion(){}}
  18.  
  19. Funcion MostrarResultadoAlAcabarLaPartida()
  20. cout << "Has empatado " << *empateEnFuncion << " número de veces";
  21. }
  22.  

No sé como puedes meter una estructura aquí xD. No tendría demasiado sentido. Es como usar una estructura para un hola mundo.
Yo le añadiría algo complejo al juego una vez terminado, que me permita usar estructuras.
Usa una estructura para el historial a ver que te sale. Pero primero completa el juego por pasos e intenta ordenar un poco el código y renombrar las variables para que se entienda mejor que guarda cada cosa.
Dale algo de formato al código, pon las funciones debajo de la función main, etc. Para que el código sea interpretable a simple vista, y tu profesor no necesite ir línea por línea mirando el código.
También usa las etiquetas para C++ en el foro. Arriba a la derecha, cuando estés escribiendo el código, donde pone Código GeSHi le das y puedes seleccionar C++
Mete tus códigos dentro de las etiquetas.


Título: Re: Ayuda con codigo de juego TAREA
Publicado por: Jay en 4 Octubre 2018, 14:21 pm
#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


Título: Re: Ayuda con codigo de juego TAREA
Publicado por: MAFUS en 4 Octubre 2018, 15:39 pm
Pon tu código entre etiquetas las etiquetas [code=c++] [/code]


Título: Re: Ayuda con codigo de juego TAREA
Publicado por: OmarHack en 4 Octubre 2018, 15:57 pm
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
  1. switch (variableConUnNumeroEntero)
  2. {
  3. case 1: //esto se ejecuta si la variable variableConUnNumeroEntero
  4. //vale 1. Es exactamente lo mismo que poner:
  5. // if (variableConUnNumeroEntero == 1)
  6. //{lo que pasa si la variable vale1;}
  7. break;
  8.  
  9. case 2: // lo mismo, pero si la variable es igual a 2.
  10. //aquí pones lo que quieras que pase si la variable es == a 2.
  11. break;
  12.  
  13. default: //esto por lo general se aplicará siempre. Pero como hay un
  14. //break; en los otros casos, no se aplicará si alguno de ellos se
  15. //cumple, ya que al ejecutarse un break; el switch finaliza y deja de
  16. //comprobar si los otros case se cumplen.
  17. cout<< "Si lees esto en la salida del programa, quiere decir que la variable no valía ni 1 ni 2";
  18. 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
  1. int condicionParaDetenerElBucle = 0;
  2. int variableConUnNumeroEntero;
  3. while (condicionParaDetenerElBucle == 0)
  4. {
  5.         cout << "Introduce el número 1 para finalizar el programa"
  6.         <<endl;
  7.         cin >> variableConUnNumeroEntero;
  8.  
  9.         switch (variableConUnNumeroEntero)
  10.                      {
  11.  
  12.                       case 1:
  13.                    // Lo que quieras que pase;
  14.                      condicionParaDetenerElBucle =1;
  15.                      Break;
  16.  
  17.                       Default:
  18.                       cout <<"Tu opción no es válida, intentalo de nuevo".
  19.                       <<endl;
  20.                       break;
  21.  
  22.                      }
  23. }
  24.