Page 1 of 1

SFML -Debug -Asertion fehl

Posted: 11 Apr 2025, 11:27
by Anonymous
Ich bin ein Neuling von SFML und ich folge einem Tutorial, um ein Kacheln für ein 2D -Spiel zu erstellen. Wenn ich jedoch versuche, die Karte zu zeichnen

Code: Select all

#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>
Dieser ist die Fliesenklasse: < /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;
}

und der Fehler tritt nur auf

Code: Select all

#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();
}
}
Vielen Dank im Voraus für jeden Rat !!
Ich habe versucht, die Werte des Gitters, der Fliesen usw. zu ändern, aber es funktioniert immer noch nicht.