我无法理解图像管理器的实现。我基于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正常工作吗?