Форум программистов, компьютерный форум, киберфорум
SFML
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/55: Рейтинг темы: голосов - 55, средняя оценка - 4.62
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
1

Координаты мыши в SFML

18.04.2018, 19:23. Показов 10141. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишет координаты курсора только 1 раз в конце. В чем проблема ? Как сделать чтобы постоянно выводило координаты ?
Подобную тему делал с другим примером - ее никто не раскрыл =(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdafx.h"
#include <SFML/Graphics.hpp>
#include <windows.h>
#include "stdafx.h"
#include <iostream>
#include <chrono>
#include <thread>
#include <functional>
#include <conio.h>
#include <iostream>
#include <clocale>
 
using namespace ::sf;
 
 
 
 
 
void main()
{
    RenderWindow window(VideoMode(800, 600), "FULLSCREEN", Style::Fullscreen);
    window.setPosition(sf::Vector2i(0, 0));
    int a;
    Font font;//шрифт
 
    font.loadFromFile("c:/111/den/256bytes.TTF");//передаем нашему шрифту файл шрифта
    Text text("FOR EXIT PRESS DEL", font, 20);
 
 
    POINT p;
    if (GetCursorPos(&p)){}//позиция курсора: p.x  p.y
 
 
    
    {
 
        while (window.isOpen())
        {
            text.setString(std::to_string(p.x));
            text.setString(std::to_string(p.y));
            }
 
    Sleep(5000);
 
 
}
 
    window.clear();
    window.draw(text);//рисую этот текст
    window.display();
 
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2018, 19:23
Ответы с готовыми решениями:

Координаты мыши в SFML
Был пример у кучки пспример где одновременно выводит координаты при открытом окне SFML - он...

Координаты в SFML
Я делаю платформер на c++/SFMl и у меня возникли сложности с координатами. Я хочу расположить...

[SFML] Анимация взрыва после клика мыши
Всем привет, мне нужен ваш совет. Я хочу сыграть анимацию из спрайта( 64 фрейма и 40px width/height...

Вывод текста с угасанием в координаты тела в SFML
Как сделать вывод циферок из злого тела, когда его со всей дури фигачишь ? :D Ну типа как в WOW...

6
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
18.04.2018, 21:22 2
читай документацию вот:https://www.sfml-dev.org/docum... 1Mouse.php
C++
1
2
3
4
5
6
7
8
9
10
11
while (window.isOpen())
 {
             sf::Vector2i position = sf::Mouse::getPosition();
             cout<<position.x<<position.y;
 ИЛИ
            if (event.type == sf::Event::MouseMoved)
             {
                   std::cout << "new mouse x: " << event.mouseMove.x << std::endl;
                   std::cout << "new mouse y: " << event.mouseMove.y << std::endl;
              }
}
0
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
18.04.2018, 21:31  [ТС] 3
Antikl - Ты написал код для консоли, а мы говорим о SFML
cout работает только в консоли

Добавлено через 3 минуты
Вывод координат в SFML
C++
1
2
3
4
   {
            text.setString(std::to_string(p.x));
            text.setString(std::to_string(p.y));
            }
Я не знаю в какое место это вставлять чтобы обновления текста робили

Добавлено через 2 минуты
Вот я делал это для консоли - хотелось бы тоже самое но для SFML
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "stdafx.h"
#include <windows.h> 
#include <iostream>
#include <chrono>
#include <thread>
#include <functional>
 
void timer_start(std::function<void(void)> func, unsigned int interval)
{
    std::thread([func, interval]() {
        while (true)
        {
            func();
            std::this_thread::sleep_for(std::chrono::milliseconds(interval));
        }
    }).detach();
}
 
 
void do_something()
{
    POINT p;
    if (GetCursorPos(&p))
    {
        //позиция курсора: p.x  p.y
    }
 
 
    HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hStdOut, FOREGROUND_RED | FOREGROUND_INTENSITY);
 
    std::cout << "\n This position X= " <<p.x << std::endl;
    SetConsoleTextAttribute(hStdOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
    std::cout << " This position y= " <<  p.y << std::endl;
}
 
int main() {
    timer_start(do_something, 1200);
 
    while (true);}
1
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
18.04.2018, 21:35 4
https://www.sfml-dev.org/tutor... s-text.php

так выводить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <SFML/Graphics.hpp>
 
int main()
{
    sf::RenderWindow app(sf::VideoMode(800, 600), L"SFML window");
    sf::Font font ;
    if ( !font.loadFromFile("my_font.ttf") )
    {
        return EXIT_FAILURE ;
    }
    sf::Text txt ;
    txt.setPosition ( 50 , 50 ) ;
    txt.setFont ( font ) ;
    txt.setString ( L"Моя строка" ) ;
    while (app.isOpen())
    {
        sf::Event event;
        while (app.pollEvent(event))
        {
            // Close window : exit
            if (event.type == sf::Event::Closed)
                app.close();
        }
 
        app.clear();
        app.draw ( txt ) ;
        app.display();
    }
    return EXIT_SUCCESS;
}
0
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
18.04.2018, 22:06  [ТС] 5
Сам то пробовал запускать ? Черное окно без текста и его обновления, то же самое.
Ну хотя бы в ограниченный цикл бы как то это всунуть =(
0
Фрилансер
3705 / 2077 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
19.04.2018, 09:43 6
Лучший ответ Сообщение было отмечено mrden777 как решение

Решение

mrden777, осталось же только всё собрать вместе..
Не забудьте фонт свой поставить
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <SFML/Graphics.hpp>
#include <sstream>
 
int main()
{
    sf::RenderWindow app(sf::VideoMode(800, 600), L"SFML window");
    sf::Font font ;
    if ( !font.loadFromFile("/usr/share/fonts/gnu-free/FreeMono.ttf") )
    {
        return EXIT_FAILURE ;
    }
    sf::Text txt ;
    txt.setPosition ( 50 , 50 ) ;
    txt.setFont ( font ) ;
    txt.setFillColor( sf::Color::Yellow );
    
    std::stringstream str;
    
    while (app.isOpen())
    {
        sf::Event event;
        while (app.pollEvent(event))
        {
            // Close window : exit
            if (event.type == sf::Event::Closed)
                app.close();
            if (event.type == sf::Event::MouseMoved)
            {
                str.str("");
                str << "new mouse x: " << event.mouseMove.x << std::endl;
                str << "new mouse y: " << event.mouseMove.y << std::endl;
            }    
        }
 
        txt.setString ( str.str() ) ;
        app.clear();
        app.draw ( txt ) ;
        app.display();
    }
    return EXIT_SUCCESS;
}
1
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
19.04.2018, 12:08  [ТС] 7
Black Fregat , СПС огромное =) Все понял кроме закорючки L перед названием окна =)

Добавлено через 1 час 40 минут
Почему если
C++
1
2
3
4
5
{
                str.str("");
                str << "new mouse x: " << event.mouseMove.x << std::endl;
                str << "new mouse y: " << event.mouseMove.y << std::endl;
            }
перекинуть в конец - то координаты относительно окна перестает выводить ?
А в координатах относительно монитора стиль и цвет не меняется
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "stdafx.h"
#include <windows.h> 
#include <iostream>
#include <chrono>
#include <thread>
#include <functional>
#include <SFML/Graphics.hpp>
#include <sstream>
 
int main()
{
    sf::RenderWindow app(sf::VideoMode(800, 600), L"SFML window");
    sf::Font font;
    if (!font.loadFromFile("c:/111/den/256bytes.TTF"))
    {
        return EXIT_FAILURE;
    }
    sf::Text txt;
    txt.setPosition(50, 50);
    txt.setFont(font);
    txt.setFillColor(sf::Color::Yellow);
 
    sf::Text  txt2;
 
    txt2.setPosition(50,190);
    txt2.setFont(font);
    txt2.setFillColor(sf::Color::Red);
 
 
    std::stringstream str;
 
    std::stringstream str2;
 
    while (app.isOpen())
    {
        sf::Event event;
        while (app.pollEvent(event))
        {
            // Close window : exit
            if (event.type == sf::Event::Closed)
                app.close();
            
 
            if (event.type == sf::Event::MouseMoved)
            {
                str.str("");
                str << "new mouse x: " << event.mouseMove.x << std::endl;
                str << "new mouse y: " << event.mouseMove.y << std::endl;
                
                
            }
        }
        
 
        sf::Vector2i position = sf::Mouse::getPosition();
        str2.str("");
        str2 << "mouse x: " << position.x << std::endl;
        str2 << "mouse x: " << position.y<< std::endl;
        str << "new mouse x: " << event.mouseMove.x << std::endl;
        str << "new mouse y: " << event.mouseMove.y << std::endl;
        if (position.x >800) { app.close(); }
        
        
 
 
        txt.setString(str.str());
        txt.setString(str2.str());
        app.clear();
        
        app.draw(txt);
        app.draw(txt2);
        app.display();
 
        
    }
    return EXIT_SUCCESS;
}
0
19.04.2018, 12:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2018, 12:08
Помогаю со студенческими работами здесь

Как в SFML по клику мыши на определенной области (например на спрайте) выполнить какое либо действие?
Только начал изучать SFML. Скажите пожалуйста, как в SFML по клику мыши на определенной области...

Vb.net directx, slimdx преобразовать экранные координаты мыши в 3d координаты
vb.net directx, slimdx преобразовать экранные координаты мыши в 3d координаты необходимо...

Некорректные координаты мыши
int mx = 0; int my = 0; bool down = false; bool up = false; void mouse(int button, int...

Glut не принимает координаты с мыши
Доброго времени суток. Есть программа с координатной сеткой. Нужно, чтобы рисовалась линия, начало...

Преобразование координат мыши в мировые координаты
Привет всем! Начал писать 3d игру и возникла проблема: преобразование координат. Дело в том, что я...

Написать программу которая будит выводить координаты мыши
Как вывести координаты на экран???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru