SFML и C++ Уроки \ Разработка игр › Форумы › SFML готовые решения (сниппеты) и советы › простой таймер на SFML › Ответ в теме: простой таймер на SFML
Сделал c 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 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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
#include<SFML\Audio.hpp> #include <iostream> #include <sstream> #include <string> using namespace sf; using namespace std; string intToString(int a)// преобразовывает число в строку { std::ostringstream ost; ost << a; std::string s_num = ost.str(); return s_num; } void timer(int &hour, int &min, int &sec)// отнимает секунды/минуты/часы { if (sec > 0) { sec–; } else if (sec == 0 && min>0){ sec = 59; min–; } else if (sec == 0 && min == 0 && hour > 0) { sec = 59; min = 59; hour–; } else if (sec == 0 && min == 0 && hour == 0) { return; } } int main() { RenderWindow window(VideoMode(620, 450), “AKYL”);// Font font;// создаю шрифт font.loadFromFile(“fonts/8427182.ttf”);// загружаю в него скачанный шрифт Music a; a.openFromFile(“music/muzon.ogg”); a.play();// музыка . просто так const int size = 40;//размер шрифта int hour=0; int min=2; int sec=15; Text hourText(“”, font, size); Text minText(“”, font, size); Text secText(“”, font, size);//тексты для часы/минуты/секунды Text text1(“:”, font, size); text1.setColor(Color::Green);//двоеточие между цифрами hourText.setColor(Color::Green); minText.setColor(Color::Green); secText.setColor(Color::Green);//цвет цифр hourText.setPosition(100, 200); minText.setPosition(200, 200); secText.setPosition(300, 200);//координаты появления цифр Clock clock;// запустить измерение времени while (window.isOpen()) { Event event; while (window.pollEvent(event)) { if (event.type == Event::Closed) window.close(); } /////////////////////////////// if (clock.getElapsedTime().asMilliseconds() >= 999)// если прошла секунда, отнимаем 1 секунду у таймера { timer(hour, min, sec); clock.restart(); // начинаем измерять заново } hourText.setString(intToString(hour)); minText.setString(intToString(min)); secText.setString(intToString(sec));// из int в string из string в Text //////////// вывод на экран///////////////////// window.clear(); text1.setPosition(150, 200); window.draw(text1);//двоеточие window.draw(hourText); //рисуем часы text1.setPosition(250, 200); window.draw(text1);//двоеточие window.draw(minText); //рисуем минуты window.draw(secText);// и секунды window.display();// все вывести на экран } } |