![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сразу несколько вопросов по созданию игр. [Delphi, Windows]
Wish © (2004-10-30 14:08:00)Здравствуйте, я создаю игру с видом сверху как в GTA 1 или 2. Возникло несколько вопросов:
1. У меня есть переменные yspeed и xspeed для кадой пули, которые отпределяют куда полетит пуля, как мне найти эти величины из позиции игрока(x и y) и положения мышки?
2. Понимаю что вопрос глупый, но как преобразовать double в integer и наоборот.
3. Можно ли использовать в DelphiX сразу два TDXInput?
Прошу вас с пониманием отнестить ко мне с моими вопросами, я в создании игр на Delphi новичек, только прочитал пару статей и знаю основы, помогите пожалуйста.
Wish (2004-10-31 22:43:00) [1]Ок, все работает, а как сделать чтобы isup, isleft и т.д. не распространялось на мышку, а только на клаву?
Zer0 (2004-10-31 22:23:00) [2]продолжая идею Servelat:
dx=(x0-x); dy=(y0-y);
далее находим длинну вектора (dx;dy)
d=sqrt(dx*dx+dy*dy);
далее если поделить каждую из составляющих на его длинну то вертор нормализуется (его длинна будет равна 1)
значит
xspeed=dx*speed/d
yspeed=dy*speed/d
где speed - скорость пульки.
а вообще надо находить угол поворота перса, в руках у которого пушка. а потом уже синусами и косинусами напраление полета считать.
учите матчасть(c)
---
skl-4ever
Servelat (2004-10-31 21:45:00) [3]
> А как программно решить систему уровнений?
Ты реши на бумажке, а в программу только окончательную формулу сунь. Я бы мог сам тебе посчитать, но 1)тебе полезно напрягать мозги 2)мне лень :).
Kind (2004-10-31 21:29:00) [4]Учиться на примерах полезно, но надо ещё и настольное руководство иметь, для начала просто по Delphi.
var
a,b: double;
c,d: integer;
begin
c := 123;
a := 456.123;
b := c + a; // Integer c Double
d := Round(b); // Double в Integer
Wish (2004-10-31 21:11:00) [5]Блин, как выполнять действия с Integer и Double, напишите пример, мне ответили double(). Только ничего не понятно, все равно, можите пример показать?
wiz (2004-10-31 20:41:00) [6]2 Поручик: MatLab рулит!!!! ну или в крайнем случае - Excel... :)))))))
Поручик (2004-10-31 19:46:00) [7]Можно в AutoCad'е
Wish (2004-10-31 19:42:00) [8]А как программно решить систему уровнений?
Wish (2004-10-31 19:26:00) [9]2 Servelat
Спасиба, буду думать.
Servelat (2004-10-30 22:40:00) [10]Объясняю :).
Из подобия треугольников:
dx/dy=(x0-x)/(y0-y)
x,y - координаты, откуда выстрел, x0, y0 - координаты мыша.
Также тебе дана скорость пули (например 5 пикселей, то есть на сколько будет сдвигаться пуля за каждый промежуток времени, между действиями: PulaX:=PulaX+dx; PulaY:=PulaY+dy). Чем больше скорость, тем быстрее летит пуля (это может зависеть от типа ружья или просто быть константой). Дак вот, если скорость пули speed, то:
dx*dx+dy*dy=speed*speed
(теорема Пифагора)
Получается 2 уравнения с двумя неизвестными. Системы уравнений вас решать уже научили, надеюсь?
Wish (2004-10-30 21:27:00) [11]Черт, нифига не понятно, подскажите пожалутса!!!!
Wish (2004-10-30 19:55:00) [12]Я щас в 8 классе. Нужна посмотреть...
Поручик (2004-10-30 19:51:00) [13]Иди, у друзей поищи учебник геометрии за 8 класс
Wish (2004-10-30 18:13:00) [14]Отзовитесь пожалуйста, у меня пол мега на счету осталось!!!
Wish (2004-10-30 17:07:00) [15]опа... случайно поставил... =)
ну ответьте пожалйста, у меня инета кончился почти =(, мне нужно щас узнать а потом в офлайне все реальзововать.
wiz (2004-10-30 16:59:00) [16]2 Wish [7]: тогда зачем в анкете писать "Образование: высшее" ???
Wish (2004-10-30 16:50:00) [17]А если я еще не проходил эту теорему? ^_^
Поручик (2004-10-30 16:39:00) [18]А ты сам сообрази, теорема Пифагора, всякие правила, типа катет равен произведению гипотенузы на cos прилежащего или sin противолежащего угла и тд.
Wish (2004-10-30 16:01:00) [19]Я не смог выдрать решения вопроса 1 из примеров, там ваще на DelphiX не ничего, можеш мне показать?
Wish (2004-10-30 14:46:00) [20]ЗЫ. Спасиба огромное за ответы, буду пробывать.