@Gotenks

Не пойму в чём ошибка в коде?

Код:
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/System.hpp>

int main()
{
	    sf::Vector2i m;
	
		sf::RenderWindow window(sf::VideoMode(1920, 1080), "ПИРИВАДЧИК!!!!");
		sf::Texture OneWindow;
		OneWindow.loadFromFile("OneWindow.png");
		sf::Sprite OneWindowS;
		OneWindowS.setTexture(OneWindow);
		OneWindowS.setPosition(0, 0);

		sf::Texture knopka1;
		knopka1.loadFromFile("Knopka1.png");
		sf::Sprite knopka1S;
		knopka1S.setTexture(knopka1);
		knopka1S.setPosition(75, 541);
		
		sf::Texture knopka2;
		knopka1.loadFromFile("Knopka2.png");
		sf::Sprite knopka2S;
		knopka2S.setTexture(knopka2);
		knopka2S.setPosition(75, 141);

		bool checkPos1 = false;
		bool checkPos2 = false;
	while (window.isOpen())
	{
		sf::Event event;
		while (window.pollEvent(event))
		{
			switch (event.type)
			{
			case sf::Event::Closed:
				window.close();
				break;
			case sf::Event::KeyPressed:
				if (event.key.code == sf::Keyboard::Escape)
				 	window.close();
				break;
			case sf::Event::MouseMoved:
				checkPos1 = knopka1S.getGlobalBounds().contains(event.mouseMove.x, event.mouseMove.y);
				checkPos2 = knopka2S.getGlobalBounds().contains(event.mouseMove.x, event.mouseMove.y);
				break;
			}
		}

		window.clear();
		window.draw(OneWindowS);
		if (checkPos1)
			window.draw(knopka1S);
		if (checkPos2)
		    window.draw(knopka2S);
		window.display();
	}
	return 0;
}
1 скрин - изначальное окно проги
SqTrZsE.jpg
2 скрин - навёл мышь на кнопку внизу
5pxE69u.jpg

Проблема: навожу курсор мыши на верхнюю кнопку, ничего не происходит, а согласно задумке - должно.
Где ошибка? Пожалуйста помогите понять.
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
А пробовали ли вы свой код отлаживать?
Поставьте брейк поинт на ту логику, которая должна вызываться. Посмотрите, тригеринтся ли он. Если нет, разберитесь почему. Если да, то смотрите почему логика не работает. Ну и по шагам программу отлаживайте.

Это не какой-то общий вопрос у вас. Это частный случай, который просто надо отлаживать. Не уверен, что кто-то хочет делать это за вас.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы