Cześć. Dopiero zaczynam z programowaniem. Muszę zrobić symulator mrowiska w C++. Robię to w codeblocksie z użyciem SFML. Wywala mi takie błędy po próbie odpalenia. O co może chodzić ? Pomoże ktoś
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <ctime>
enum class AntType { Queen, Soldier, Worker };
struct Ant {
AntType type;
sf::CircleShape shape;
sf::Vector2f velocity;
};
int main() {
sf::RenderWindow window(sf::VideoMode(400, 400), "Anthill");
window.setFramerateLimit(60);
std::srand(std::time(nullptr));
AntType antTypes[] = {AntType::Queen, AntType::Soldier, AntType::Worker};
sf::Color antColors[] = {sf::Color::Red, sf::Color::Blue, sf::Color::Green};
// Dynamic list of ants.
Ant* ants = nullptr;
size_t numAnts = 0;
// Counts of each type of ant.
size_t queenCount = 0;
size_t soldierCount = 0;
size_t workerCount = 0;
// Text to display the counts.
sf::Font font;
if (!font.loadFromFile("arial.ttf")) {
return 1;
}
sf::Text queenText("", font, 16);
queenText.setPosition(10, 10);
sf::Text soldierText("", font, 16);
soldierText.setPosition(10, 30);
sf::Text workerText("", font, 16);
workerText.setPosition(10, 50);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
} else if (event.type == sf::Event::MouseButtonPressed) {
// Add a new ant at the mouse position.
AntType type = antTypes[std::rand() % 3];
Ant* newAnts = new Ant[numAnts + 1];
for (size_t i = 0; i < numAnts; ++i) {
newAnts[i] = ants[i];
}
newAnts[numAnts].type = type;
newAnts[numAnts].shape.setRadius(5);
newAnts[numAnts].shape.setFillColor(antColors[static_cast<int>(type)]);
// ... continued from above
newAnts[numAnts].shape.setPosition(event.mouseButton.x, event.mouseButton.y);
newAnts[numAnts].velocity = sf::Vector2f(std::rand() % 5 - 2.5f, std::rand() % 5 - 2.5f);
delete[] ants;
ants = newAnts;
++numAnts;
switch (type) {
case AntType::Queen:
++queenCount;
break;
case AntType::Soldier:
++soldierCount;
break;
case AntType::Worker:
++workerCount;
break;
}
}
// Update the counts.
queenText.setString("Queens: " + std::to_string(queenCount));
soldierText.setString("Soldiers: " + std::to_string(soldierCount));
workerText.setString("Workers: " + std::to_string(workerCount));
// Update the positions of the ants.
for (size_t i = 0; i < numAnts; ++i) {
ants[i].shape.move(ants[i].velocity);
if (ants[i].shape.getPosition().x < 0 || ants[i].shape.getPosition().x > window.getSize().x ||
ants[i].shape.getPosition().y < 0 || ants[i].shape.getPosition().y > window.getSize().y) {
ants[i].velocity = -ants[i].velocity;
}
}
window.clear();
// Draw the ants.
for (size_t i = 0; i < numAnts; ++i) {
window.draw(ants[i].shape);
}
// Draw the counts.
window.draw(queenText);
window.draw(soldierText);
window.draw(workerText);
window.display();
}
delete[] ants;
return 0;
}}