Bueno, tengo un problema y no entiendo cuál es, me podrían ayudar?
Tengo los siguientes archivos:
Personaje.h
Código C++:
Ver original#ifndef PERSONAJE_H
#define PERSONAJE_H
class Personaje
{
public:
Personaje(int = 0, int = 0, int = 0, int = 0);
int getHP();
int getATAQUE();
int getRESISTENCIA();
int getPODER();
void restarHP(int);
private:
int hp;
int ataque_fisico;
int resistencia_fisica;
int poder_ataque;
};
#endif
Personaje.cpp
Código C++:
Ver original#include "Personaje.h"
Personaje::Personaje(int h, int a, int r, int p)
: hp(h),
ataque_fisico(a),
resistencia_fisica(r),
poder_ataque(p)
{
// Constructor vacío.
}
int Personaje::getHP()
{
return hp;
}
int Personaje::getATAQUE()
{
return ataque_fisico;
}
int Personaje::getRESISTENCIA()
{
return resistencia_fisica;
}
int Personaje::getPODER()
{
return poder_ataque;
}
void Personaje::restarHP(int x)
{
hp = hp - x;
}
Simulador.h
Código C++:
Ver original#ifndef SIMULADOR_H
#define SIMULADOR_H
#include "Personaje.h"
class Simulador
{
public:
Simulador(Personaje, Personaje); // Constructor.
void pelear(); // Función para empezar una pelea.
private:
Personaje jugador;
Personaje enemigo;
};
#endif
Simulador.cpp
Código C++:
Ver original#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <cstdlib>
#include <ctime>
#include "Simulador.h"
Simulador::Simulador(Personaje a, Personaje b)
: jugador(a),
enemigo(b)
{
// Constructor vacío.
}
void Simulador::pelear()
{
int bla;
int dano;
enum estado{GANO, PERDIO, CONTINUA};
estado juego;
juego = CONTINUA;
cout << "\nBola de moco gigante ha aparecido!\nQue comience la batalla!\n" << endl;
cout << "HP del jugador: " << jugador.getHP() << endl;
cout << "\nHP del enemigo: " << enemigo.getHP() << endl;
cout << "Escribe cualquier numero (no muy grande) y aprieta enter para atacar:";
cin >> bla;
while(juego == CONTINUA)
{
cout << "HP del jugador: " << jugador.getHP() << endl;
cout << "HP del enemigo: " << enemigo.getHP() << endl;
cout << "\nEscribe un numero y aprieta enter para atacar: ";
cin >> bla;
dano
= ((jugador.
getATAQUE() / (rand() % 6 + 10)) * (jugador.
getPODER() / (rand() % 6 + 10)) - (enemigo.
getRESISTENCIA() / (rand() % 6 + 12))); cout << "Jugador ha atacado!!!" << endl;
if(dano > enemigo.getHP())
dano = enemigo.getHP();
cout << "Enemigo ha perdido " << dano << " HP" << endl;
enemigo.restarHP(dano);
if(enemigo.getHP() == 0)
{
juego = GANO;
continue;
}
dano
= ((enemigo.
getATAQUE() / (rand() % 6 + 10)) * (enemigo.
getPODER() / (rand() % 6 + 10)) - (jugador.
getRESISTENCIA() / (rand() % 6 + 12)));
cout << "El enemigo ha atacado!!!" << endl;
if(dano > jugador.getHP())
dano = jugador.getHP();
cout << "Jugador ha perdido " << dano << " HP" << endl;
jugador.restarHP(dano);
if(jugador.getHP() == 0)
{
juego = PERDIO;
}
}
if(juego == GANO)
{
cout << "El jugador ha ganado. Si que mola, se sabe sonar los mocos." << endl;
}
if(juego == PERDIO)
{
cout << "El jugador ha perdido. No rockanrolea ni se sabe sonar los mocos." << endl;
}
}
Main.cpp
Código C++:
Ver original#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include "Personaje.h"
#include "Simulador.h"
int main()
{
int opcion;
Personaje jugador;
Personaje enemigo;
Simulador simulador(jugador, enemigo);
int hp_jugador;
int ataque_jugador;
int resistencia_jugador;
int ppf_jugador;
int hp_enemigo;
int ataque_enemigo;
int resistencia_enemigo;
int ppf_enemigo;
cout << "Elija una opcion: " << endl;
cout << "1 - Jugar un juego." << endl;
cout << "2 - Salir." << endl << endl;
cin >> opcion;
while(opcion == 1)
{
cout << "Ingrese los siguientes datos: " << endl << endl;
cout << "HP del personaje: ";
cin >> hp_jugador;
cout << "Ataque del jugador: ";
cin >> ataque_jugador;
cout << "Resistencia del jugador: ";
cin >> resistencia_jugador;
cout << "Poder del ataque del jugador: ";
cin >> ppf_jugador;
cout << "\nHP del enemigo: ";
cin >> hp_enemigo;
cout << "Ataque del enemigo: ";
cin >> ataque_enemigo;
cout << "Resistencia del enemigo: ";
cin >> resistencia_enemigo;
cout << "Poder de ataque del enemigo: ";
cin >> ppf_enemigo;
jugador = new Personaje(hp_jugador, ataque_jugador, resistencia_jugador, ppf_jugador);
enemigo = new Personaje(hp_enemigo, ataque_enemigo, resistencia_enemigo, ppf_enemigo);
simulador = new Simulador(jugador, enemigo);
simulador.pelear();
}
cout << "El programa ha terminado su ejecucion con exito. Blablabla." << endl;
return 0;
}
Bueno, son todos. Los archivos Simulador.cpp y Personaje.cpp compilan perfectamente con g++ -c, pero Main.cpp me da los siguientes errores:
Código:
Main.cpp: In function ‘int main()’:
Main.cpp:54:93: error: invalid user-defined conversion from ‘Personaje*’ to ‘const Personaje&’ [-fpermissive]
In file included from Main.cpp:6:0:
Personaje.h:7:5: note: candidate is: Personaje::Personaje(int, int, int, int) <near match>
Personaje.h:7:5: note: no known conversion for argument 1 from ‘Personaje*’ to ‘int’
Main.cpp:54:93: error: invalid conversion from ‘Personaje*’ to ‘int’ [-fpermissive]
In file included from Main.cpp:6:0:
Personaje.h:7:5: error: initializing argument 1 of ‘Personaje::Personaje(int, int, int, int)’ [-fpermissive]
Main.cpp:55:93: error: invalid user-defined conversion from ‘Personaje*’ to ‘const Personaje&’ [-fpermissive]
In file included from Main.cpp:6:0:
Personaje.h:7:5: note: candidate is: Personaje::Personaje(int, int, int, int) <near match>
Personaje.h:7:5: note: no known conversion for argument 1 from ‘Personaje*’ to ‘int’
Main.cpp:55:93: error: invalid conversion from ‘Personaje*’ to ‘int’ [-fpermissive]
In file included from Main.cpp:6:0:
Personaje.h:7:5: error: initializing argument 1 of ‘Personaje::Personaje(int, int, int, int)’ [-fpermissive]
Main.cpp:57:51: error: no match for ‘operator=’ in ‘simulador = (operator new(32u), (<statement>, ((Simulador*)<anonymous>)))’
Main.cpp:57:51: note: candidate is:
In file included from Main.cpp:7:0:
Simulador.h:6:7: note: Simulador& Simulador::operator=(const Simulador&)
Simulador.h:6:7: note: no known conversion for argument 1 from ‘Simulador*’ to ‘const Simulador&’
Espero alguien pueda ayudarme, Saludos.