Witam wszystkich!
Próbuję napisać program, który stworzy mi jednokolorową "szachownice" (dwuwymiarowa tablica obiektów). Jej rozmiar ustawiam zmieniając wartości zmiennych: W w main.cpp i wymiar w pole.cpp. Wszystko działa pod warunkiem że ustawiane przeze mnie wartości są mniejsze od 60 (np W=50 wymiar=50, W=30, wymiar=30). Stworzenie szachownicy 70 na 70 sprawia że pomimo udanej kompilacji program się wysypuje i wyświetla mi się komunikat program.exe przestał działać. Nie wiem skąd wynika ten błąd i nie potrafię sobie z nim poradzić.
main.cpp:
#include "SFML/Graphics.hpp"
#include <iostream>
#include "pole.h"
using namespace std;
int W=60;
int main()
{
sf::RenderWindow window(sf::VideoMode(900, 900), "Program", sf::Style::Titlebar | sf::Style::Close);
Pole p[W][W];
sf::Texture texture_pole;
if (!texture_pole.loadFromFile( "x.png", sf::IntRect(0, 0, 8, 8)))
{
return EXIT_FAILURE;
}
for (int t=0; t<W; t++)
{
for(int r=0; r<W; r++)
{
p[t][r].sprite.setTexture(texture_pole);
}
}
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
{
window.close();
}
if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape)
{
window.close();
}
}
window.clear();
for(int t=0; t<W; t++)
{
for(int r=0; r<W; r++)
{
p[t][r].update();
window.draw(p[t][r].sprite);
}
}
window.display();
}
}
pole.h:
#include "SFML/Graphics.hpp"
#include <iostream>
using namespace std;
class Pole
{
public:
sf::RectangleShape rect;
sf::Sprite sprite;
Pole();
void update();
};
pole.cpp:
#include "SFML/Graphics.hpp"
#include <iostream>
#include "pole.h"
using namespace std;
Pole::Pole()
{
static int wymiar=60;
static int i=2;
static int j=2;
static int licz_i=0;
rect.setPosition(i, j);
i=i+10;
licz_i++;
if(licz_i==wymiar)
{
j=j+10;
i=2;
licz_i=0;
}
}
void Pole::update()
{
sprite.setPosition(rect.getPosition());
}