IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Игра гонки
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Здравствуйте!

Появилась задумка создать подобие игры... Что-то вроде гонок. Но для начала нужно обдумать то, как будет двигаться машина в игре. В качестве машины я собираюсь брать изображение. Повернуть машину проблем не будет, но вот как её заставить ехать в сторону движения? Какие есть мысли по этому поводу? smile.gif
Я думал что можно отслеживать нахождения передней части машины и передвигать ее по координат декартовой системы. Или же математически вычислять отрезок. Посоветуйте пожалуйста =D


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


"Как заставить её ехать в сторону движения" - в сторону движения чего?)


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Ну в общем-то я имею ввиду обычное движение автомобиля. smile.gif Как голову не ломал, придумать толковое что-то не могу. Забыл сказать, что машина будет не объемная, а некоторый вид сверху.


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






x := x + speed * cos(angle);
y := y + speed * sin(angle);
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Всё настолько просто? Не может быть О_о... Как только что-то будет напишу. Спасибо!


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Не понял, а ты что ожидал?
Секретный, неизвестный тебе оператор языка, который сразу заставит всё двигаться?
Нифига такого нет. Все программы собираются, в основе, из простых средств.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Не, ну я просто думал что будет что-то посерьёзнее, чем просто синус и косинус.


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Ты геометрический смысл синуса и косинуса знаешь?
Ну и всё.
Или ты думал, что надо скачать функцию MoveForRacingGames, написанную профессионалами в 1000 строек ассемблера?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


У меня возник теперь другой вопрос, как обработать нажатие сразу двух кнопок? К примеру нажатие стрелки вверх и влево. Или можно осуществить поворот машины в движении как-то иначе?


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Для обработки двух кнопок тебе надо повеситься на 9е прерывание и смотреть в 60й порт.
Ясно?
А если серьёзно, то я когда-то модуль написал на эту тему.
Ща найду.

Прикрепленный файл  KEYS.PAS ( 1.59 килобайт ) Кол-во скачиваний: 1246


Короче при старте приложения пиши InitKeys, при закрытии - CloseKeys, чтобы узнать, нажата ли кнопка, просто пиши if Pressed(N) then...

Чтобы понять, как такое вообще работает, надо знать, что при нажатии кнопки на уровне железа происходит остановка программы и вызывается обработчик 9 го прерывания. То есть модуль заполняет массив сам, даже если программа в это время делает бесконечный цикл.

Да, номера кнопок соответствуют их расположению на класе, а не алфавиту.

Кстати, для обработки трёх кнопок уже не поможет ничего, и дело не в Паскале и не в Досе (под виндой в любой самой современной игре та же хрень), а в конструкции клавиатуры.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Вот недавно продолжил работать над игрой, сложилось парочка вопросов по разработке. Не могу правильно доработать.

У меня ситуация такая, как только у меня автомобиль разогнался (после того, как клавиша отпущена) он должен постепенно терять скорость останавливаясь. Я поставил на форму таймер, который каждые 0.02с снижает скорость. Но этот таймер работает постоянно, что в свою очередь мешает нормальному движению автомобиля (происходит "прерывание", "замедление"). Можно ли как-нибудь ограничить доступ к этому таймеру, например, пока клавиша нажата, то не обращаться туда..?

И есть еще небольшая особенность: когда автомобиль имеет определённую скорость, и я хочу ее повернуть (нажать две клавиши и вперед, и влево) у меня машина поворачивает, клавиша влево отпускается, но клавиша вперед уже не работает, хотя она зажата в этот момент. Как мне лучше это обработать, использовать приведенный код выше, или можно не заморачиваться решить проблему иным методом?

Надеюсь услышать раскрытый ответ, заранее большое спасибо!

Сообщение отредактировано: Cheburashka -


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Я поставил на форму таймер, который каждые 0.02с снижает скорость.

Во-первых, не ставь на таймер промежутки, меньшие 55 млс.
Во-вторых, на таймер тогда надо вешать ВСЮ физику вообще, а не только одно конкретное действие.
В-третьих, клавиши смотри не через WM_CHAR, а через WM_KEYDOWN.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 9:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name