SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › ребят кто на виндовс сидит запутите пожалуйста .
В этой теме 4 ответа, 2 участника, последнее обновление totalGreen 8 года/лет, 4 мес. назад.
-
АвторСообщения
-
проверить работает ли? спраит должен при новедении закраситься в зеленый.
C++1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677#include <SFML/Graphics.hpp>#include <iostream>#include <typeinfo>using namespace sf;using namespace std;int main(){//ool testbool;RenderWindow window(sf::VideoMode(640, 480), "smart strategy");Image map_image;//объект изображения для картыmap_image.loadFromFile("1.png");//загружаем файл для картыImage new_image;new_image.loadFromFile("2.png");Texture new_map;new_map.loadFromImage(new_image);Texture map;//текстура картыmap.loadFromImage(map_image);//заряжаем текстуру картинкойSprite s_map;//создаём спрайт для картыs_map.setTexture(map);//заливаем текстуру спрайтомSprite test[9];Vector2i pixelPos = Mouse::getPosition(window);//забираем коорд курсораVector2f pos = window.mapPixelToCoords(pixelPos);//переводим их в игровые (уходим от коорд окна)while (window.isOpen()){////////////////////////////////////////////////////////////////sf::Event event;while (window.pollEvent(event)){if (event.type == sf::Event::Closed)window.close();for( int i = 0; i<9; i++){if (test[i].getGlobalBounds().contains(pos.x, pos.y)) {test[i].setColor(Color::Green);}}cout << pos.x<< endl;cout << pos.y<< endl;}window.clear();for (int i = 0; i < 9; i++){test[i].setTexture(map);test[i].setPosition(0, i * 50);//test[i].setColor(Color::Green);//if (test[i].getGlobalBounds().contains(pos.x, pos.y)) {test[i].setColor(Color::Green);}window.draw(test[i]);//cout << typeid(test[i]).name()<< endl;}//Sprite.update();//window.draw(test[i]);window.display();}//////////////////////////////////////////////////////////////////return 0;}Вложения:
You must be logged in to view attached files.называй темы по сути проблемы, то есть ” перекрасить в другой цвет фигуру/тайл по наведению мыши”
в одном из уроков мы делали такое, где то 15-17 посмотри. по клику мыши красили
добавил в этот же код ,кнопку и получил … нажимаю в любую часть окна и и один понт считывается нажатие по спрайту.
C++12if (event.type == Event::MouseButtonPressed)//если нажата клавиша мышиif (event.key.code == Mouse::Left){if (testbutton.getGlobalBounds().contains(pos.x, pos.y)){testbutton.setColor(Color::Green);cout<<"pressed sprite";testbutton.setPosition(250, 350);}}где накосячил ?
по моему предыдущий код мешает, попробуй его закомментить
методом научного тыка понял что он реагирует на код
if (sf::Mouse::isButtonPressed(sf::Mouse::Left)){if (!testbutton.getGlobalBounds().contains(pos.x, pos.y)){testbool = true;cout<<“true”<<endl;}}
а без ! куда бы не тыкал . не возвращает true. походу я кординаты не правильносчитываю. -
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.