Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2010, 21:56   #1
Plobzik
Пользователь
 
Регистрация: 11.04.2010
Сообщений: 13
По умолчанию SDL, текст

Я тут новенький, помогите пожалуйста, пишу игрушку на Си, довольно таки примитивная пока что, просто пингвин бегает по льду и умеет врезаться в гору, которая по середине карты, ну да неважно. Меня интересует, как можно текст отгородить от стирания, чтобы допустим когда пробегал пингвин по месту, где расположен текст он его не стирал? Допустим я вот сделаю счетчик кол-ва собранных объктов пингвином, отображу его, но когда он пройдет, он же его сотрет. И на будущее, а как можно сделать текст по центру экрана? Заранее спасибо за помощь.

Последний раз редактировалось Plobzik; 18.04.2010 в 22:11.
Plobzik вне форума Ответить с цитированием
Старый 19.04.2010, 06:26   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
Допустим я вот сделаю счетчик кол-ва собранных объктов пингвином, отображу его, но когда он пройдет, он же его сотрет.
Просто перерисовывайте каждый раз эту надпись, когда происходит какое-то движение в игре.
В более общем виде структура игры обычно выглядит так: имеется главный игровой цикл, обычно основанный на срабатываниях таймера, в котором происходит основное действие. При каждой итерации цикла игра реагирует на действия пользователя (на нажатие/отпускание клавиш, кнопок мыши и т.д.), в соответствии с ними и со своими внутренними законами (AI, физика и т.п.) изменяя состояние игрового мира.
Затем в каждой же итерации игрового цикла происходит и отрисовка всего чего нужно. Часто это включает в себя рисование фона, различных игровых объектов, элементов интерфейса (в т.ч. счетчика очков) и все это обычно рисуется как элементы общей картинки, которая и выводится на экран.
Если у вас пока из всех объектов только пингвин, гора и счетчик очков, то можно ограничиться перерисовкой каждого из них по отдельности в тот момент, когда они друг друга перекрывают. Если будет более масштабное рисование, то имеет смысл при каждом, например, срабатывании таймера заново собирать всю картинку вместе с такими элементами как счетчик очков в буфер и выводить его на экран.
Вообще с подобными общими игровыми вопросами, если дело не касается конкретных языковых средств и конкретного кода, можете обращаться в раздел "Создание и обсуждение игр" данного форума.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 19.04.2010, 12:33   #3
Plobzik
Пользователь
 
Регистрация: 11.04.2010
Сообщений: 13
По умолчанию

Спасибо большое, все отлично работает, только вот еще один вопрос, как можно текст к середине экрана приделать? Ну не измерять же это постоянно по пикселям, вдруг текст будет меняться.
Plobzik вне форума Ответить с цитированием
Старый 19.04.2010, 13:10   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вообще то для измерения ширины текста по пикселям как раз функциями рассчитывается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.04.2010, 13:21   #5
Plobzik
Пользователь
 
Регистрация: 11.04.2010
Сообщений: 13
По умолчанию

скажите какая функция, пожалуйста
Plobzik вне форума Ответить с цитированием
Старый 19.04.2010, 13:25   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В Win API есть GetTextExtentPoint
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.04.2010, 14:00   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

смотря как рисуешь текст. если с использованием либы sdl_ttf - то TTF_SizeText
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 19.04.2010, 14:07   #8
Plobzik
Пользователь
 
Регистрация: 11.04.2010
Сообщений: 13
По умолчанию

pproger
спасибо, sdl пользуюсь, должно подойти
Plobzik вне форума Ответить с цитированием
Старый 19.04.2010, 14:10   #9
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Plobzik
sdl сама по себе не умеет рисовать текст (как и opengl). поэтому нужно либо рендерить самому (т.е частично самому, используя какой нить freetype), либо использовать либу sdl_ttf. то, что ты используешь sdl я понял
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 23.04.2010, 23:11   #10
Plobzik
Пользователь
 
Регистрация: 11.04.2010
Сообщений: 13
По умолчанию

pproger
да я библиотеку sdl_ttf использую, все вышло, спасибо большое
Plobzik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++. Текст bpystep Помощь студентам 4 15.03.2010 14:41
Текст Olalya da Silva Паскаль, Turbo Pascal, PascalABC.NET 7 15.01.2009 19:11
Как узнать какой текст выделен в текст поле mogul82 JavaScript, Ajax 2 02.11.2008 16:32
Текст Sanek_ntsk Паскаль, Turbo Pascal, PascalABC.NET 3 10.03.2008 15:23
Текст [Smarik] Паскаль, Turbo Pascal, PascalABC.NET 6 19.02.2008 18:26