SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Проблема с выводом текста с счетчика :)
В этой теме 11 ответов, 3 участника, последнее обновление MicroSDA 7 года/лет, 6 мес. назад.
-
АвторСообщения
-
Подскажите что я написал в коде не правильно что не работает?
Суть такая:
– Выводится окно а в нем надпись “Счет: ”
– Имеется счетчик при котором через каждые 3 сек выводиться рядом с надписью “Счет: ” 1 потом 2 потом 3 и ТД.Все просто, только не работает счет ( 1 потом 2 потом 3 и ТД). Помогите
C++1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859#include <SFML/Graphics.hpp>#include <sstream>using namespace sf;using namespace std;int main(){RenderWindow window(VideoMode(800, 600), "Schet");int schet = 0; //переменная, хранящая цифры для счета (1,2,3,4...)ostringstream schetString;Clock clock;float timer = 0;Font font;font.loadFromFile("CyrilicOld.TTF");Text txt;txt.setPosition(50, 50);txt.setFont(font);schetString << schet; //заносится число счета, формирует строкуtxt.setString("Счет: " + schetString.str());while (window.isOpen()){float time = clock.getElapsedTime().asMicroseconds();clock.restart();time = time / 800;timer += time;if (timer > 3000) { schet++; timer = 0; } // таймер при 3000 записывает +1 и сбрасывается.Event event;while (window.pollEvent(event)){if (event.type == Event::Closed)window.close();}window.clear();window.draw(txt);window.display();}return 0;}Вот так
C++123456if (timer > 3000) {schet++;schetString << schet;txt.setString("Счет: " + schetString.str());timer = 0;}Спасибо) Работает
только он цифры в подряд выдает каждые 3 сек. Подумаю что не так
Вложения:
You must be logged in to view attached files.Очищай строку перед присвоением
C++1schetString.clear();Все равно по очереди выдает…
Вот тут во втором посте есть рабочий пример с выводом текста, и ещё кое-что
https://kychka-pc.ru/Forum/topic/pridayom-illyuziyu-obyomnosti-legko-i-prostoХорошо, посмотрю
Там по нажатию кнопке мыши меняется значение) а вот как правильно с счетчиком связать чтоб работало норм
C++123456789101112131415161718192021222324class Text{public:sf::Text text;sf::Font font;cText(int charSize){font.loadFromFile("Font/Font.ttf");text.setFont(font);text.setCharacterSize(charSize);text.setColor(Color(0,0,0));}void textInteger(String string, int integer, float x, float y) // Метод присваивающий тексту строка "Твой текст " + Целочисленная переменная, и позиция{text.setString(string+std::to_string((int)integer));text.setPosition(x,y);}void textStr(String string, float x, float y) // Метод присваивающий тексту строка "Твой текст ", и позиция{text.setString(string);text.setPosition(x,y);}};C++123456789101112131415161718192021222324int main(){int schet = 0;cText text(20); // 20 это размер шрифтаtext.textInteger("Score ", schet, 100, 100);while (window.isOpen()){float time = clock.getElapsedTime().asMicroseconds();clock.restart();time = time / 800;timer += time;if (timer > 3000) {schet++;text.textInteger("Score ", schet, 100, 100);timer = 0;}window.clear();window.draw(text.text);window.display();}return 0;}Не много ли кода для вывода цифр? Должен быть проще способ.
Ну вам виднее)
Ток не забудь нейм спасе сделать )) ато потом не поймешь по чему не работает )
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.