![]() |
![]() ![]() |
![]() |
Cheburashka |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 195 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Здравствуйте!
Появилась задумка создать подобие игры... Что-то вроде гонок. Но для начала нужно обдумать то, как будет двигаться машина в игре. В качестве машины я собираюсь брать изображение. Повернуть машину проблем не будет, но вот как её заставить ехать в сторону движения? Какие есть мысли по этому поводу? ![]() Я думал что можно отслеживать нахождения передней части машины и передвигать ее по координат декартовой системы. Или же математически вычислять отрезок. Посоветуйте пожалуйста =D -------------------- ♣♣♣
"Себя великим не считай, гордясь величьем предков, Величья не добудешь ты и золота ценою! Хоть светит на небе луна, но отраженным светом - Чужою славой не живи, не будь второй луною!!!" ♣♣♣ |
Unconnected |
![]()
Сообщение
#2
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
"Как заставить её ехать в сторону движения" - в сторону движения чего?)
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Cheburashka |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 195 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Ну в общем-то я имею ввиду обычное движение автомобиля.
![]() -------------------- ♣♣♣
"Себя великим не считай, гордясь величьем предков, Величья не добудешь ты и золота ценою! Хоть светит на небе луна, но отраженным светом - Чужою славой не живи, не будь второй луною!!!" ♣♣♣ |
-TarasBer- |
![]()
Сообщение
#4
|
Гость ![]() |
x := x + speed * cos(angle);
y := y + speed * sin(angle); |
Cheburashka |
![]()
Сообщение
#5
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 195 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Всё настолько просто? Не может быть О_о... Как только что-то будет напишу. Спасибо!
-------------------- ♣♣♣
"Себя великим не считай, гордясь величьем предков, Величья не добудешь ты и золота ценою! Хоть светит на небе луна, но отраженным светом - Чужою славой не живи, не будь второй луною!!!" ♣♣♣ |
-TarasBer- |
![]()
Сообщение
#6
|
Гость ![]() |
Не понял, а ты что ожидал?
Секретный, неизвестный тебе оператор языка, который сразу заставит всё двигаться? Нифига такого нет. Все программы собираются, в основе, из простых средств. |
Cheburashka |
![]()
Сообщение
#7
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 195 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Не, ну я просто думал что будет что-то посерьёзнее, чем просто синус и косинус.
-------------------- ♣♣♣
"Себя великим не считай, гордясь величьем предков, Величья не добудешь ты и золота ценою! Хоть светит на небе луна, но отраженным светом - Чужою славой не живи, не будь второй луною!!!" ♣♣♣ |
-TarasBer- |
![]()
Сообщение
#8
|
Гость ![]() |
Ты геометрический смысл синуса и косинуса знаешь?
Ну и всё. Или ты думал, что надо скачать функцию MoveForRacingGames, написанную профессионалами в 1000 строек ассемблера? |
Cheburashka |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 195 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
У меня возник теперь другой вопрос, как обработать нажатие сразу двух кнопок? К примеру нажатие стрелки вверх и влево. Или можно осуществить поворот машины в движении как-то иначе?
-------------------- ♣♣♣
"Себя великим не считай, гордясь величьем предков, Величья не добудешь ты и золота ценою! Хоть светит на небе луна, но отраженным светом - Чужою славой не живи, не будь второй луною!!!" ♣♣♣ |
TarasBer |
![]()
Сообщение
#10
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Для обработки двух кнопок тебе надо повеситься на 9е прерывание и смотреть в 60й порт.
Ясно? А если серьёзно, то я когда-то модуль написал на эту тему. Ща найду. ![]() Короче при старте приложения пиши InitKeys, при закрытии - CloseKeys, чтобы узнать, нажата ли кнопка, просто пиши if Pressed(N) then... Чтобы понять, как такое вообще работает, надо знать, что при нажатии кнопки на уровне железа происходит остановка программы и вызывается обработчик 9 го прерывания. То есть модуль заполняет массив сам, даже если программа в это время делает бесконечный цикл. Да, номера кнопок соответствуют их расположению на класе, а не алфавиту. Кстати, для обработки трёх кнопок уже не поможет ничего, и дело не в Паскале и не в Досе (под виндой в любой самой современной игре та же хрень), а в конструкции клавиатуры. -------------------- |
Cheburashka |
![]()
Сообщение
#11
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 195 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Вот недавно продолжил работать над игрой, сложилось парочка вопросов по разработке. Не могу правильно доработать.
У меня ситуация такая, как только у меня автомобиль разогнался (после того, как клавиша отпущена) он должен постепенно терять скорость останавливаясь. Я поставил на форму таймер, который каждые 0.02с снижает скорость. Но этот таймер работает постоянно, что в свою очередь мешает нормальному движению автомобиля (происходит "прерывание", "замедление"). Можно ли как-нибудь ограничить доступ к этому таймеру, например, пока клавиша нажата, то не обращаться туда..? И есть еще небольшая особенность: когда автомобиль имеет определённую скорость, и я хочу ее повернуть (нажать две клавиши и вперед, и влево) у меня машина поворачивает, клавиша влево отпускается, но клавиша вперед уже не работает, хотя она зажата в этот момент. Как мне лучше это обработать, использовать приведенный код выше, или можно не заморачиваться решить проблему иным методом? Надеюсь услышать раскрытый ответ, заранее большое спасибо! Сообщение отредактировано: Cheburashka - 3.02.2011 23:07 -------------------- ♣♣♣
"Себя великим не считай, гордясь величьем предков, Величья не добудешь ты и золота ценою! Хоть светит на небе луна, но отраженным светом - Чужою славой не живи, не будь второй луною!!!" ♣♣♣ |
TarasBer |
![]()
Сообщение
#12
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Я поставил на форму таймер, который каждые 0.02с снижает скорость.
Во-первых, не ставь на таймер промежутки, меньшие 55 млс. Во-вторых, на таймер тогда надо вешать ВСЮ физику вообще, а не только одно конкретное действие. В-третьих, клавиши смотри не через WM_CHAR, а через WM_KEYDOWN. -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 22.06.2025 9:49 |