SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Реализация ввода текста в SFML, это лишь идея.
В этой теме 3 ответа, 2 участника, последнее обновление Павел Букреев 7 года/лет, 9 мес. назад.
-
АвторСообщения
-
Сразу предупреждаю, я не реализовал ее до конца. Видел тут тему такую, как ввод текста в SFML, так вот подумал, что можно реализовать ввод через консоль.
Вот, что я сделал:
У меня давно уже написан класс для текста, вот он:
C++123456789101112131415161718192021222324252627282930313233343536373839404142class texts{public:float posX,posY;Text text;Font font;texts(int charSize){font.loadFromFile("Font/CyrilicOld.TTF");text.setFont(font);text.setColor(Color(0,0,0));text.setCharacterSize(charSize);}void one_text(string Stext,float pX,float pY){text.setString(Stext);text.setPosition(view.getCenter().x-pX, view.getCenter().y-pY);}void text_with_points(string SText, int classname, float pX, float pY){std::ostringstream AviableString;AviableString<<classname;text.setString(SText+AviableString.str());text.setPosition(view.getCenter().x-pX,view.getCenter().y-pY);}void text_with_points_string(string SText, string classname, float pX, float pY){std::ostringstream AviableString;AviableString<<classname;text.setString(SText+AviableString.str());text.setPosition(view.getCenter().x-pX,view.getCenter().y-pY);}void double_text_with_points(string SText, int classname, string Stext, int twoclassname, float pX, float pY){std::ostringstream AviableString, TwoAviableString;AviableString<<classname;TwoAviableString<<twoclassname;text.setString(SText+AviableString.str()+Stext+TwoAviableString.str());text.setPosition(view.getCenter().x-pX,view.getCenter().y-pY);}};добавил в int main() пременные:
C++123456texts conText(20);setlocale(LC_CTYPE, "rus");string consoleText, SFMLTEXT;//Текст, который будем вводить в кносоли, а потом передадим в окно SFMLchar textTrue[10]="write";bool checkConsoleText=false;float changeX=0,changeY=0;//Смещение текста в окне SFML по x,yПосле этого, так же до бесконечного цикла while (window.isOpen())
C++1234567//Ввод текта в sfml через консоль//cout<<"Для того, чтобы написать что-нибудь в окне SFML, введите\n""write"" (без кавычек), после чего-текст.\n";cin>>consoleText;if(consoleText==textTrue){checkConsoleText=true;}Потом после этого, но уже в цикле, после прорисовки карты пишем:
C++123456789if(checkConsoleText){cin>>SFMLTEXT;//Пишем текст, который будет передан в окно SFMLcout<<"Введите смещение от спрайта игрока по координате x и нажмите Enter, потом y.\n";cin>>changeX;cin>>changeY;conText.one_text(SFMLTEXT, changeX, changeY);//Вызов метода класса texts, который я писал на ранних уроках для личного удобстваwindow.draw(conText.text);}Идея вроде неплохая, но до конца я ее реализовать не смог, так как, окно SFML не прорисовывается до того, как мы напишем в консоле “write”, потом в консоле не удается ничего написать, так как ввод с клавиатуры принимает окно SFML, а не консоль уже. Этот код с последними корректировками, были варианты, так же не законченные, где он считывал и мы могли все это вписать, но были так же недоработки.
редко когда нужна консоль в игре, и бывает, что её вобще прячут.
консолька может работать в твоем случае, если все действия не зацикливать и вызывать когда надо cin>>p.s есть кнопка вставки кода, надо её использовать)) исправлю
блин опять беда с подсветкой кода, не все символы загружаются. .
В целом тему надо перекинуть в другую ветку форума (готовые решения и советы). Попробуй создать тоже самое и вставить код при помощи кнопки “вставьте_код”.хочу посмотреть буду ли эти глюки с кодом в этом случае..
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.