Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
#1

SDL Отображение текста на экране - C++

10.10.2013, 11:11. Просмотров 370. Ответов 8
Метки нет (Все метки)

Вывожу на экран текст формата *.ttf c помощью функции TTF_Render
Эта функция может выводить только текст, а вот как вывести значение переменной?

// *.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct C_LoadImages {
    void ttfInit();
    inline void ttfQuit() {
        TTF_CloseFont(font);
        TTF_Quit();
    }
    TTF_Font* font;
    SDL_Color textColor;
 
    SDL_Surface* currentCounterSurface;
        int currentScore;
};

// *.cpp
C++
1
2
3
4
5
6
7
void C_LoadImages::ttfInit() {
    TTF_Init();
    font = TTF_OpenFont("lazy.ttf", 40);
    textColor = {255, 255, 255};
        // Как здесь вместо "0" вывести значение переменной "currentScore"?
    currentCounterSurface = TTF_RenderText_Solid(font, "Score: 0", textColor);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2013, 11:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос SDL Отображение текста на экране (C++):

SDL ввод текста с клавиатуры и запись в массив - C++
Мой код внизу он неправильный, но работает text="a",text="b" , text="c" и так весь алфавит посимвольно. Часть кода: char text; int...

Как вывести текст на экран, используя библиотеку SDL TTF для SDL 2? - C++
В официальной доке как-то скомкано написано. При инициализации SDL TTF и при загрузке шрифта ошибок нет. Но текст на экране не...

Заполнение динамического массива данными из файла и отображение на экране - C++
Добрый день. Стоит такая задача: Есть текстовый файл, необходимо считать данные из этого файла и вывести на экран. Но содержимое текста...

Выделение первого слова из введенной строки и отображение его на экране - C++
1) Написать программу выделения первого слова из введенной строки *) и отображение его на экране.

Листание текста на экране - C++
На экран выводится файл, который можно листать вперед или назад. По выведенному на экран тексту можно перемещать курсор, который при...

Алгоритмы отображения большого текста на экране - C++
Привет всем! Может быть кто знает, есть какие-нибудь алгоритмы, позволяющие быстро отображать тексты больших размеров? Дело в том, что...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 11:20 #2
Цитата Сообщение от dimakozyr Посмотреть сообщение
как вывести значение переменной?
Перевести int в string.

Не по теме:

dimakozyr, а как же Java?

dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
10.10.2013, 11:29  [ТС] #3
Так что-ли?
C++
1
2
3
4
5
6
7
8
9
void C_LoadImages::ttfInit() {
    std::string score = "5";
    TTF_Init();
    font = TTF_OpenFont("lazy.ttf", 40);
    textColor = {255, 255, 255};
        // Подчеркивает score и говорит, что не существует подходящей функции преобразования
        // из "std::string" в "const char*":
    currentCounterSurface = TTF_RenderText_Solid(font, score, textColor);
}
Цитата Сообщение от alsav22 Посмотреть сообщение
dimakozyr, а как же Java?
Решил не разбрасываться и завершить начатое
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 11:58 #4
Цитата Сообщение от dimakozyr Посмотреть сообщение
Подчеркивает score и говорит, что не существует подходящей функции преобразования
C++
1
currentCounterSurface = TTF_RenderText_Solid(font, score.c_str(), textColor);
Но я о другом писал. Где здесь преобразование int в string? Нужно было же значение int вывести?

Добавлено через 12 минут
C++
1
2
3
4
5
6
7
8
9
10
11
void C_LoadImages::ttfInit() 
{
    TTF_Init();
    font = TTF_OpenFont("lazy.ttf", 40);
    textColor = {255, 255, 255};
        // Как здесь вместо "0" вывести значение переменной "currentScore"?
    stringstream s;
    s << "Score: " << currentScore;
    string str = s.str();
    currentCounterSurface = TTF_RenderText_Solid(font, str.c_str(), textColor);
}
dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
10.10.2013, 12:03  [ТС] #5
C++
1
2
3
4
int currentScore = 8;
std::stringstream s;
s << "Score: " << currentScore;
std::string str = s.str();
Под "s" пишет, что недопустимый непоплный тип
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 12:11 #6
Код в 4 посте.

Добавлено через 5 минут
Цитата Сообщение от dimakozyr Посмотреть сообщение
Под "s" пишет, что недопустимый непоплный тип
C++
1
#include <sstream>
dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
10.10.2013, 12:33  [ТС] #7
Ура, заработало, спасибо

Добавлено через 11 минут
А еще такой вопрос. Вторая строка закомментирована, в ней задается цвет текста.
Сейчас он серый. Если раскомментировать, то подчеркивается открывающаяся скобка и пишет "требуется выражение"

C++
1
2
3
font = TTF_OpenFont("lazy.ttf", 40);
textColor = {255, 255, 255};
currentCounterSurface = TTF_RenderText_Solid(font, strCurrent.c_str(), textColor);
Добавлено через 9 минут
Странно. Отображаются: счет и максимальный счет.
Раньше между ними было пространство (задал координаты), а теперь они одна за другой
Приходится табуляцией отделять

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void C_LoadImages::ttfInit() {
    C_Events o_C_Events_C_LoadImages;
 
    TTF_Init();
 
    std::stringstream currentScore;
    std::stringstream totalScore;
 
    currentScore << "Score: "      << o_C_Events_C_LoadImages.getCurrentCounter();
    currentScore << "\t\t\t\t\t\t\tHigh Score: " << o_C_Events_C_LoadImages.getTotalCounter();
 
    std::string strCurrent = currentScore.str();
    std::string strTotal   = totalScore.str();
 
    font = TTF_OpenFont("lazy.ttf", 40);
    //textColor = {255, 255, 255};
    currentCounterSurface = TTF_RenderText_Solid(font, strCurrent.c_str(), textColor);
    totalCounterSurface   = TTF_RenderText_Solid(font, strTotal.c_str(),   textColor);
}
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 12:39 #8
Если так:
C++
1
2
3
textColor.r = 255;
textColor.g = 255;
textColor.b = 255;
Добавлено через 4 минуты
C++
1
2
3
 
currentScore << "Score: "      << o_C_Events_C_LoadImages.getCurrentCounter();
currentScore << "\t\t\t\t\t\t\tHigh Score: " << o_C_Events_C_LoadImages.getTotalCounter();
В один поток загоняете?
dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
10.10.2013, 12:41  [ТС] #9
Цитата Сообщение от alsav22 Посмотреть сообщение
В один поток загоняете?
Точно, теперь все в порядке, можно двигаться дальше
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2013, 12:41
Привет! Вот еще темы с ответами:

Можно ли скрыть отображение вводимого текста - C++
Здравствуйте, сегодня, при написании кода, у меня возникли вопросы, на который я не нашел ответов. Надеюсь вы сможете помочь, заранее...

Отображение содержимого на экран с возможностью прокрутки текста по страницам - C++
Срочно нужна помощь, нужно составить программу отображения содержимого на экран с возможностью прокрутки текста по страницам.

Неправильное отображение русского текста в консоли при использовании setlocale(LC_ALL, "Russian") - C++
Ребят, такая ситуация, прописал setlocale(LC_ALL, &quot;Russian&quot;);но в консоли вместо текста на русском-набор букв, в чем может быть...

C++ SDL - C++
Всем привет! Работал я значи в SDL, а потом что-то нажалось ил не нажалось и вообщем теперь, при компиляции любого(работающего,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.10.2013, 12:41
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru