Buenas, estoy “haciendo” un juego como practica… Necesito pasarle por referencia un tipo de dato jugador a una funcion en la clase enemigo, no puedo agregarle directamente el “jugador.h” en el “enemy.h” ya que esta incluido en otro header, por eso necesito declararlo mediante ifndef.. aqui el codigo
#ifndef JUGADOR_H #define JUGADOR_H class Jugador; class Enemy { public: sf::Texture texturaEnemy; sf::Sprite spriteEnemy; sf::IntRect rectEnemy; sf::Clock clock, frame; sf::Time time; sf::Text vidaTexto; sf::Font vidaFuente; bool repetir = true; bool movimiento = true; int speed = 50; int orientacion = 0; int balas = 0; float x = 0; float y = 0; float delta; public: Enemy(); void Inicializar(); void EnemyMovement(Jugador &jugador); void Movement(); void EnemyDraw(sf::RenderWindow &window); void Collision(Jugador &jugador); void UpdateEnemy(sf::RenderWindow &window, Jugador &jugador); }; #endif
como podran ver use #ifndef para incluir la clase jugador, mas abajo veran los metodos de la calse enemy la cual le estoy pasando por referencia el tipo de dato jugador &jugador, y aqui es donde tengo el problema:
void Enemy::EnemyMovement(Jugador &jugador) { time = clock.restart(); delta = time.asSeconds(); int diferenciaX = spriteEnemy.getPosition().x - error; if (diferenciaX > -1 && diferenciaX < 1) { movimiento = true; } else { movimiento = false; } if (spriteEnemy.getPosition().y < error && movimiento) { rectEnemy.top = 0; spriteEnemy.setPosition(spriteEnemy.getPosition().x, spriteEnemy.getPosition().y + speed * delta); if (frame.getElapsedTime().asSeconds() > 0.2f) { Movement(); } }
a la hora de escribir jugador. no me sale las variables que tengo en la clase jugador para poder modificarlas desde este metodo… si alguien sabe por favor gracias