Код: Выделить всё
#include "GameMap.h"
void GameMap::setUpInitialState()
{
//Set up player initial state
exitPos = sf::Vector2i(1, 0);
//Playwe start at the bottom
playerPos = sf::Vector2i(gridLength - 1, gridLength - 1);
}
void GameMap::setUpEnemyPosition()
{
enemyPosition.clear(); //Clear current enemy position
enemyPosition.push_back(sf::Vector2i(0, 2)); //Enenmy 1
enemyPosition.push_back(sf::Vector2i(6, 0)); //Enenmy 2
enemyPosition.push_back(sf::Vector2i(2, 7)); //Enenmy 3
}
void GameMap::setUpTiles() //Setting up the map
{
tiles.clear();
std::vector firstRow;
firstRow.push_back(new GameTile("Pixel Crawler - Free Pack/Environment/Tilesets/Floors_Tiles.png", 0, 0, true, false));
firstRow.push_back(new GameTile("Pixel Crawler - Free Pack/Environment/Tilesets/Floors_Tiles.png", 50, 0, true, false));
firstRow.push_back(new GameTile("Pixel Crawler - Free Pack/Environment/Tilesets/Floors_Tiles.png", 100, 0, true, false));
firstRow.push_back(new GameTile("Pixel Crawler - Free Pack/Environment/Tilesets/Floors_Tiles.png", 150, 0, true, false));
firstRow.push_back(new GameTile("Pixel Crawler - Free Pack/Environment/Tilesets/Floors_Tiles.png", 200, 0, true, false));
firstRow.push_back(new GameTile("Pixel Crawler - Free Pack/Environment/Tilesets/Floors_Tiles.png", 250, 0, true, false));
firstRow.push_back(new GameTile("Pixel Crawler - Free Pack/Environment/Tilesets/Floors_Tiles.png", 300, 0, true, false));
firstRow.push_back(new GameTile("Pixel Crawler - Free Pack/Environment/Tilesets/Floors_Tiles.png", 350, 0, true, false));
tiles.push_back(firstRow);
GameMap::GameMap()
{
gridLength = 8;
setUpInitialState();
}
GameMap::~GameMap()
{
}
< /code>
Это класс плитки: < /p>
#include "GameTiles.h"
GameTile::GameTile(std::string, float x, float y, bool goThrough, bool exit) : sprite(texture)
{
position = sf::Vector2f(x, y);
sprite.setPosition(position);
CanMoveThrough = goThrough;
isExit = exit;
}
GameTile::~GameTile()
{
}
bool GameTile::setUpSprite(std::string textureName)
{
if (!texture.loadFromFile(textureName))
{
return false;
}
texture.setSmooth(true);
sprite.setTexture(texture);
sprite.setTextureRect(sf::IntRect({ 0, 0 }, { 50, 50 }));
return true;
}
Код: Выделить всё
#include "GameTiles.cpp"
int main()
{
sf::RenderWindow* window = new sf::RenderWindow(sf::VideoMode({ 400, 400 }), "SFML works!");
GameMap WorldMap = GameMap(); //Constructor set up grid length
while (window->isOpen())
{
while (const std::optional event = window->pollEvent())
{
if (event->is())
window->close();
}
window->clear();
//Displaying the world
for (int i = WorldMap.gridLength; i >= 0; i--)
{
for (int j = WorldMap.gridLength; j >= WorldMap.gridLength; j--)
{
window->draw(WorldMap.tiles[j][i]->sprite);
}
}
window->display();
}
}
Я пытался изменить значения сетки, плитки и т. Д.>
Подробнее здесь: https://stackoverflow.com/questions/795 ... of-range-c