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

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

Восстановить пароль Регистрация
 
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
10.10.2013, 11:11     SDL Отображение текста на экране #1
Вывожу на экран текст формата *.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);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 11:20     SDL Отображение текста на экране #2
Цитата Сообщение от dimakozyr Посмотреть сообщение
как вывести значение переменной?
Перевести int в string.

Не по теме:

dimakozyr, а как же Java?

dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
10.10.2013, 11:29  [ТС]     SDL Отображение текста на экране #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
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 11:58     SDL Отображение текста на экране #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
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
10.10.2013, 12:03  [ТС]     SDL Отображение текста на экране #5
C++
1
2
3
4
int currentScore = 8;
std::stringstream s;
s << "Score: " << currentScore;
std::string str = s.str();
Под "s" пишет, что недопустимый непоплный тип
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 12:11     SDL Отображение текста на экране #6
Код в 4 посте.

Добавлено через 5 минут
Цитата Сообщение от dimakozyr Посмотреть сообщение
Под "s" пишет, что недопустимый непоплный тип
C++
1
#include <sstream>
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
10.10.2013, 12:33  [ТС]     SDL Отображение текста на экране #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
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 12:39     SDL Отображение текста на экране #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();
В один поток загоняете?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2013, 12:41     SDL Отображение текста на экране
Еще ссылки по теме:

C++ Установка SDL 2
C++ SDL C++
SDL mouse C++

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

Или воспользуйтесь поиском по форуму:
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
10.10.2013, 12:41  [ТС]     SDL Отображение текста на экране #9
Цитата Сообщение от alsav22 Посмотреть сообщение
В один поток загоняете?
Точно, теперь все в порядке, можно двигаться дальше
Yandex
Объявления
10.10.2013, 12:41     SDL Отображение текста на экране
Ответ Создать тему
Опции темы

Текущее время: 06:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru