Как вращать рисунок и опрашивать клавиатуру?

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
MaxmaD
Сообщения: 23
Зарегистрирован: 07 авг 2004, 13:38

Хотел сделать леталку, сделал фон, караблик впринципе остаётся дело за главным:
1) Ввести опрос клавиатуры (такое можно было делать в турбо паскале (шло считывание, нажата ли клавиша и какая). Когда нажата клавиша (например, вперёд) то совершается действие. Когда клавиша отпускается, то действие прекращается.
2) Рисовать 8 поз звездолёта несерьёзно. Я думаю есть процедура, которая вращает, допустим, файл .bmp (заранее заданный и описанный). Т.е. когда мы нажимаем клавишу вперёд - звездолёт летит прямо (пока мы держим эту клавишу), а когда мы нажимаем влево, звездолёт медленно поворачивается на 90 градусов.

Заранее извиняюсь, что вопросы могут для кого-то оказаться пустяковыми, а кому-то нет, но в книге что я купил об этом умалчивается :(
Грязь под ногами бродяг, чище чем фальшь сладких слов. (с) Ария. "Улица роз".
drmist
Сообщения: 33
Зарегистрирован: 03 авг 2004, 22:34

Про вращение смотри
тут.
Нажатие клавиш отлавливается событиями OnKeyPress, OnKeyDown и тп.
MaxmaD
Сообщения: 23
Зарегистрирован: 07 авг 2004, 13:38

drmist, :) Хм... Речь идёт о рисунке, а не о линиях. Или я чего-то не понимаю? :)
Грязь под ногами бродяг, чище чем фальшь сладких слов. (с) Ария. "Улица роз".
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Если звездолёт задан битмапкой - рисуй восемь положений звездолёта... иначе никак. Если звездолёт задан набором прямых и плоскостей (это было бы очень круто, но на порядок сложнее реализовать), то для вращения такого рода объектов достаточно воспользоваться элементарными формулами из ангема (если не знаешь их, то я выпишу).

И ещё один совет. Если хочешь написать что-то серьёзное - то сразу используй OpenGL или DirectX. Тогда и для вращения кораблика (в любой плоскости) не придётся вспоминать элементарную математику, не придётся заботится о скорости отрисовки... да и солидней всё будет выглядеть, если освоишь всевозможные спецэффекты.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
MaxmaD
Сообщения: 23
Зарегистрирован: 07 авг 2004, 13:38

Romeo, Где можно узнать о программировании OpenGL или Директе, извиняюсь, что спрашиваю о ссылке, но в форуме дают советы, само же программирование требует документации.
Спасибо за предложение насчёт формул (о таких я ещё не слышал), если у вас будет время, то напишите пожалуйста.
Ещё раз благодарен.
Грязь под ногами бродяг, чище чем фальшь сладких слов. (с) Ария. "Улица роз".
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Вот, что на мой первый взгляд, самое удобоваримое из того, что даёт Google на запрос "Программирование под OpenGL":

http://opengl.gamedev.ru/
http://dgmlist.r2.ru/

Поискови - это сила, если знать, как с ними обращаться, господин MaxmaD :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить