SFML -Debug -Asertion fehl
Posted: 11 Apr 2025, 11:27
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
und der Fehler tritt nur auf
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.
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;
}
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();
}
}
Ich habe versucht, die Werte des Gitters, der Fliesen usw. zu ändern, aber es funktioniert immer noch nicht.