Hola buenas a todos.
Tengo un pequeño problema con este ejercicio de C++.
Debo crear el juego de piedra, papel o tijeras utilizando funciones.
Estoy cometiendo un error en la función correspondiente a determinar el ganador (char f_determina_ganador") y es que todos los valores de la variable p_pc marcan error y Visual Studio por cada uno me avisa lo siguiente:
error:E0137 "la expresión debe ser un valor L modificable"
He intentado comprender el error con las referencias de Microsoft usando el código de error, pero no logro entender la explicación.
¿Me podrían dar alguna pista para ubicarme en donde estoy fallando?
Aquí les dejo el código.
De antemano ¡Muchas gracias!
#include <iostream>
#include <ctime>
#include <cstdlib>
#include<stdlib.h>
#include<time.h>
using namespace std;
//Prototipado de las funciones o firma de las funciones
int f_opcion_de_la_pc();
void f_muestra_opciones_menu();
char f_determina_ganador(int pp_pc, int pp_usuario);
void f_muestra_ganador(char p_ganador);
int main() {
int opcion_del_usuario;
int opcion_de_la_pc;
cout << " \t Bienvenidos al juego Piedra, papel y Tijera" << endl << endl;
f_muestra_opciones_menu();
/* Captura la opcion seleccionada por el usuario.
Valida que la opcion sea valida. Si es una entre 1 y 3, llama a la funcion
f_opcion_de_la_pc() captura el resultado y pasalo como parametro junto con la
opcion tomada por el usuario a la funcion f_determina_ganador.
Si el usuario elige la opcion 4, termina el programa.
*/
cin >> opcion_del_usuario;
while (opcion_del_usuario < 1 or opcion_del_usuario > 4)
{
cout << "Esa opcion no esta disponible, intentelo otra vez."<<endl;
f_muestra_opciones_menu();
cin >> opcion_del_usuario;
}
opcion_de_la_pc = f_opcion_de_la_pc();
cout << f_determina_ganador(opcion_de_la_pc, opcion_del_usuario);
/* En la función f_muestra_ganador captura ganador que devuelve
la funcion f_determina_ganador(int p_pc, int p_usuario)
Muestra el mensaje: "El ganador es: " + ganador.
Como un plus, pregunta si quiere seguir jugando y continua el juego
*/
}
//Definicion de las funciones
void f_muestra_opciones_menu() {
cout << "\t 1 - Piedra" << endl;
cout << "\t 2 - Papel" << endl;
cout << "\t 3 - Tijera" << endl;
cout << "\t 4 - Salir" << endl;
cout << "Elige tu opcion: ";
}
//Implementar aqui la funcion f_opcion_de_la_pc()
//Este funcion generara un numero aleatorio entre 1 y 3 y lo devolvera
int f_opcion_de_la_pc()
{
srand(time(NULL));
int num;
num = 1 + rand() % (3 + 1 - 1);
return num;
}
/* implementa aqui la funcion f_determina_ganador(int p_pc, int p_usuario)
Esta funcion debe contener la logica para determinar cual de los dos ha ganado.
Las reglas son: Piedra vence a tijera; Tijera vence a Papel; Papel vence Piedra.
Devuelve un tipo de datos char que identifica al ganador: "Computadora" o "Jugador".
*/
char f_determina_ganador(int p_pc, int p_usuario)
{
string ganador;
if (p_pc = 1 && p_usuario = 2)
ganador = "Jugador";
else if (p_pc = 1 && p_usuario = 3)
ganador = "Computadora";
else if (p_pc = 2 && p_usuario = 1)
ganador = "Computadora";
else if (p_pc = 2 && p_usuario = 3)
ganador = "Jugador";
else if (p_pc = 3 && p_usuario = 1)
ganador = "Jugador";
else if (p_pc = 3 && p_usuario = 2)
ganador = "Computadora";
else
ganador = "Empate";
}
/* Implementa aquí la función f_muestra_ganador la misma toma como parámetro un tipo de datos char
con el identificando el ganador. Debe mostrar la descripción indicando el ganador
*/