#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <cmath>
#include <windows.h>
#include <stdio.h>
#include <cstdarg>
#include <stdlib.h>
#include <cstdlib>
#include <math.h>
#include <time.h>
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
#include <sstream>
#include <iostream>
int main()
{
sf::Vector2i mysz;
int myszX;
int myszY;
int rend[25][80];
std::string bufor2;
std::string bufor;
std::fstream plik;
plik.open( "plik.txt", std::ios::in );
for(int e=0; e!=25; e++)
{
getline(plik, bufor);
for(int f=0; f!=80; f++)
{
bufor2=bufor[f];
rend[e][f]=atoi(bufor2.c_str());
}
}
int obrazY=0;
int obrazX=0;
sf::RenderWindow Okno(sf::VideoMode( 790, 250, 32 ) ,"Test");
sf::Texture test;
test.loadFromFile("tekstury/test.BMP");
sf::Sprite obraz;
obraz.setTexture(test);
Okno.setFramerateLimit(60);
//Okno.create(sf::VideoMode( 400, 400, 32 ) ,"", sf::Style::None);
while(Okno.isOpen())
{
sf::Event zdarzenie;
while( Okno.pollEvent( zdarzenie ) )
{
if( zdarzenie.type == sf::Event::Closed )
{
Okno.close();
}
}
if(sf::Keyboard::isKeyPressed( sf::Keyboard::Left )) obrazX-=3;
if(sf::Keyboard::isKeyPressed( sf::Keyboard::Right )) obrazX+=3;
if(sf::Keyboard::isKeyPressed( sf::Keyboard::Up )) obrazY-=3;
if(sf::Keyboard::isKeyPressed( sf::Keyboard::Down )) obrazY+=3;
//=
obraz.setPosition(obrazX, obrazY);
plik.clear();
plik.seekg(0);
for(int e=0; e!=25; e++)
{
getline(plik, bufor);
for(int f=0; f!=80; f++)
{
bufor2=bufor[f];
rend[e][f]=atoi(bufor2.c_str());
}
}
if(sf::Mouse::isButtonPressed(sf::Mouse::Left))
{
mysz=sf::Mouse::getPosition(Okno);
myszX=mysz.x/10;
myszY=mysz.y/10;
//if(rend[myszY][myszX]==1) rend[myszY][myszX+1]=0;
if(rend[myszX][myszX]!=1) rend[myszY][myszX+1]=1;
}
for(int a=0; a!=25; a++)
{
for(int b=0; b!=80; b++)
{
//Sleep(100);
if(rend[a][b]==1) Okno.draw(obraz);
obraz.setPosition(b*10, a*10);
}
}
Okno.display();
Okno.clear(sf::Color(0,0,0));
}
plik.close();
return 0;
}
Problem leży w tym że aplikacja przestaje odpowiadać po kliknięciu myszką lub używaniu jej w nim przez jakiś czas. Zauważyłem że problem sprawiają linijki:
if(rend[myszY][myszX]==1) rend[myszY][myszX+1]=0;
if(rend[myszX][myszX]!=1) rend[myszY][myszX+1]=1;
Teoretycznie zmiana wartości zmiennej nie powinna w ogóle sprawiać problemu. Nie wiem co tutaj może być nie tak, ale jeśli tych dwóch linijek nie ma to wszystko działa dobrze cały czas.