我如何实现我的ImageManager?

时间:2014-09-04 23:05:56

标签: c++ class instance

我无法理解图像管理器的实现。我基于this tutorial构建了一个,它本身很好用,但我不知道如何使用它。在我的tic tac toe游戏中,我有一个自我解释的引擎类,一个持有游戏板(只有一个图像)的Board类和一个Box类,它有两个可能的图像(X或O),以及然后是教程中的ImageManager类(代码如下)。我想在我的游戏引擎中只有一个我的ImageManager实例,然后其他类的实例,如我的板和盒子可以有效地从ImageManager中提取它们的图像。但是,我在Engine类中创建一个ImageManager实例并没有运气。以下是我对此的看法:

Engine.h:

#pragma once
#include "stdafx.h"
#include "SFML/Graphics.hpp"
#include "ImageManager.h"
#include "Board.h"

class Engine{
public:
    Engine();
    ~Engine();

    void Go();

    ImageManager &GetManager();
private:
    void ProcessInput();
    void Update();
    void Render();

    void FillVector();

    ImageManager imgr;

    Board board;

    sf::Sprite gameBoard;

    sf::RenderWindow window;
    sf::Event event;
};

所以现在我有了ImageManager的实例,以及一个访问器方法,以便任何其他类都可以检索它,如下所示:

Board.h

#include "Box.h"
#include "SFML/Graphics.hpp"
#include "ImageManager.h"
#include "Engine.h"

class Board{
public:
    Board();
    ~Board();

    std::vector<Box> &GetBoxes();

    sf::Sprite GetGameBoard();
private:
    sf::Sprite gameBoard;

    Engine e;

    std::vector<Box> boxes;
};

Board.cpp

#include "stdafx.h"
#include "Board.h"

Board::Board(){
    e.GetManager().AddResourceDirectory("images/");
    //error checking, images/ is indeed in the vector
    //std::cout << imgr.GetResourceDirectory()[0];

    gameBoard.setTexture(e.GetManager().GetImage("t3board.png"));
}

所以,理论上,我的引擎实例获取了我的ImageManager实例,我可以使用它,就像我在我的板级中声明它一样。但后来我得到了错误:

错误C2146:语法错误:缺少';'在标识符'e'之前

错误C4430:缺少类型说明符 - 假设为int。注意:C ++不支持default-int

错误C2146:语法错误:缺少';'在标识符'board'之前

我知道这很多,但这是我的第一场比赛,我真的迷失了,从不知道在哪里放东西。有人可以告诉我如何让这个ImageManager正常工作吗?

0 个答案:

没有答案