class Tile : public sf::RectangleShape {
public:
Tile();
Tile(float);
~Tile();
void highlightTile();
bool isTileHighlighted() const;
void turnOffHighlight();
private:
sf::RectangleShape m_tile;
bool m_isHighlighted;
};
Tile::Tile()
{
}
Tile::Tile(float squareDim) : m_tile(sf::Vector2f(squareDim, squareDim)), m_isHighlighted(false) {
}
bool Tile::isTileHighlighted() const {
return (m_tile.getOutlineColor() == sf::Color::Yellow);
}
void Tile::turnOffHighlight(){
m_tile.setOutlineThickness(0);
}
void Tile::highlightTile() {
m_tile.setOutlineThickness(5);
m_tile.setOutlineColor(sf::Color::Yellow);
}
Tile::~Tile(){
}
Grid::Grid(float squareDim)
{
Tile tilePiece(squareDim);
sf::Vector2f position(0, 0);
int counter = 0; //counter for whether the column is even or odd
int counter1 = 0; //counter for whether we are on an even or odd row
for (int row = 0; row < 8; row++) {
for (int column = 0; column < 8; column++) {
if (counter1 % 2 == 0 && counter % 2 == 0 || counter1 % 2 != 0 && counter % 2 != 0) {
tilePiece.setFillColor(sf::Color::Red);
}
else {
tilePiece.setFillColor(sf::Color::White);
}
tilePiece.setPosition(position);
m_tileSet[row][column] = tilePiece; //correct coordinates
m_gridMap[row][column] = sf::Vector2f(tilePiece.getPosition().x + squareDim / 2, tilePiece.getPosition().y + squareDim / 2);
position.x += squareDim;
counter++;
}
position.y += squareDim;
position.x = 0;
counter = 0;
counter1++;
}
}
瓷砖无法渲染。我不确定这个问题,或者我是否对这里的继承做错了,我是否应该使用m_tile,这是有道理的。
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
答案 0 :(得分:0)
您正在尝试绘制Tile
对象(我想是这样,因为您没有向我们展示绘制的代码)。但是你从来没有设定它的尺寸,这就是为什么你看不到它。您要做的是设置成员变量(m_tile(sf::Vector2f(squareDim, squareDim))
)的维度,如果您像这样绘制Tiles,则不使用该维度:window.draw(tile)
。
您必须选择:从RectangleShape公开继承或包含成员对象RectangleShape,而不是两者。