sfml从另一个类中抽取

时间:2014-03-22 13:48:10

标签: c++ class sfml

我正在尝试使用sfml在c ++中进行我的第一场乒乓球比赛,但我遇到了一些问题 当我尝试调用window.draw()函数时,我认为我的代码会解释得最多。

这是我的Game.h

#pragma once
#include <SFML/Graphics.hpp>

class Game
{
public:
    Game();
    void                run();
private:
    void                processEvents();
    void                update();
    void                render();
    sf::RenderWindow    mWindow;
};

我的game.cpp

#pragma once
#include "Game.h"
#include "Paddle.h"

Game::Game()
    : mWindow(sf::VideoMode(640,480), "Pong")
{

}

void Game::run()
{
    while (mWindow.isOpen())
    {
        processEvents();
        update();
        render();
    }
}

void Game::processEvents()
{
    sf::Event event;
    while(mWindow.pollEvent(event))
    {
        if(event.type == sf::Event::Closed)
            mWindow.close();
    }
}

void Game::render()
{
    mWindow.clear();
    mWindow.draw(Paddle::player1);
    mWindow.display();
}

void Game::update()
{

}

我的Paddle.h和paddle.cpp

#pragma once
#include <SFML/Graphics.hpp>
class Paddle
{
public:
    Paddle(int width, int height);
    sf::RectangleShape player1(sf::Vector2f(int width,int height));
    sf::RectangleShape player2(sf::Vector2f(int width,int height));
private:

};

我的paddle.h

#include "Paddle.h"


Paddle::Paddle(int width,int height)
{

}

我的main.cpp

#include "Game.h"
#include "Paddle.h"
int main()
{
    Game game;
    Paddle player1(10,60);
    Paddle player2(10,60);
    game.run();
}

这就是我的所有代码。 问题是我不知道如何在Game.cpp中绘制桨 我想我应该使用某种指针或引用参数。 当我这样做时:

void Game::render()
{
    mWindow.clear();
    mWindow.draw(Paddle::player1);
    mWindow.display();
} 

我收到错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

你需要像

这样的东西
class Game
{
public:
    Game(Paddle & p1, Paddle & p2);
...
private:
...
    Paddle & mP1;
    Paddle & mP2;
};

Game::Game(Paddle & p1, Paddle & p2)
    : mWindow(sf::VideoMode(640,480), "Pong"),
      mP1(p1), mP2(p2)
{
}

void Game::render()
{
    mWindow.clear();
    mWindow.draw(mP1);
    mWindow.display();
}

int main()
{
    Paddle player1(10,60);
    Paddle player2(10,60);
    Game game(player1, player1);
    game.run();
}