Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 13.12.2009, 19:40   #1
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Массивы в типе

Мне надо написать например вот так:
Type Player
   Field Name$[2]
   Field Units[6,4,2]
End Type
Но насколько я понял многомерные массивы в типах не поддерживаются, как обойти или чем заменить эту проблемку?
(Offline)
 
Ответить с цитированием
Старый 13.12.2009, 19:53   #2
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Массивы в типе

Для трехмерного массива индекс можно вычислить так
code:
y * ширина * глубина + x * глубина + z

где массив обьявлен так
code:
массив[ширина * высота * глубина]

а x, y, z соответственно индексы трехмерного массива
PS
"ширина * глубина" можно вычислить заранее, дабы ускорить вычисление

двумерный массив 5*5
обьявить одномерный масив размером x_max*y_max
и получать доступ по формуле id = x+y*x_max
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо H@NON за это полезное сообщение:
BlackOut (03.01.2010), DStalk (13.12.2009), is.SarCasm (13.12.2009)
Старый 13.12.2009, 19:57   #3
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: Массивы в типе

имхо это изврат))) но все равно спасибо, так и сделаю)
(Offline)
 
Ответить с цитированием
Старый 13.12.2009, 20:00   #4
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Массивы в типе

А иначе ты и не сделаешь)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
is.SarCasm (13.12.2009)
Старый 13.12.2009, 21:45   #5
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: Массивы в типе

И еще вопросик:


Имеется начальная точка (0,0) и пункт назначения; имеются препятствия (красным цветом), они в массиве карта[maxX,maxY].
Вопрос: как вычислить клетки по которым пойдет объект до столкновения с препятствием? Чего-то я думал, думал - каша какая-то выходит. Помогите пожалуйста)))

P.S. даже проще, если без препятствий - как вычислить по каким клеткам он пройдет? Кстати движения наискосок допускаются...
(Offline)
 
Ответить с цитированием
Старый 13.12.2009, 23:20   #6
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Массивы в типе

ищи путенах (алгоритмы путенахождения)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 13.12.2009, 23:26   #7
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: Массивы в типе

Да, искал, нашел, но это не совсем то - мне не надо найти путь обхода преград, а просто линию разбить на точки (грубо говоря)...
__________________
galaxies.su | dstalk.ru
(Offline)
 
Ответить с цитированием
Старый 14.12.2009, 02:04   #8
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Массивы в типе

если так, то тебе нужно находить пересечение прямоугольника(клетки) с линией. Алгоритмы реализации наверняка гуляют в сети, отловить не сложно.
(Offline)
 
Ответить с цитированием
Старый 14.12.2009, 03:10   #9
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Массивы в типе

Более универсально, и в некоем роде проще - это пересечение линий с линиями, и их обход. Не ограничен формами, да и по мне так, проще линии обходить, чем прямоугольники. 4 линии - вот тебе и прямоугольник
ЗЫ, старое:
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
DStalk (14.12.2009), Dzirt (14.12.2009), Fatalix3d (14.12.2009), is.SarCasm (14.12.2009), Nex (16.12.2009), Randomize (14.12.2009)
Старый 14.12.2009, 13:57   #10
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: Массивы в типе

Я так подумал для прямоугольника хватит и двух его диагоналей
А если на поле 100+ препятствий, то получается все их придется проверять на пересечение? Это не сильно скажется на производительности?
__________________
galaxies.su | dstalk.ru
(Offline)
 
Ответить с цитированием
Старый 14.12.2009, 14:38   #11
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Массивы в типе

А иначе ты и не сделаешь)
ну...
Type UnitsArray
   Field x[6]
   Field y[4]
   Field z[2]
End Type

Type Player
   Field Name$[2]
   Field Units.UnitsArray
End Type
(Offline)
 
Ответить с цитированием
Старый 14.12.2009, 20:30   #12
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Массивы в типе

Сообщение от Dstalk Посмотреть сообщение
Я так подумал для прямоугольника хватит и двух его диагоналей
А если на поле 100+ препятствий, то получается все их придется проверять на пересечение? Это не сильно скажется на производительности?
Сектора, и проверка на боунти бокс - и нет разницы, как много линий.
(Offline)
 
Ответить с цитированием
Старый 14.12.2009, 20:47   #13
Alex.D.
Оператор ЭВМ
 
Регистрация: 02.11.2008
Сообщений: 27
Написано 12 полезных сообщений
(для 24 пользователей)
Ответ: Массивы в типе

>>проверка на боунти бокс
"баунти" это такой шоколадный батончик с кокосовой начинкой, а ему надо баундин бокс ))
(Offline)
 
Ответить с цитированием
Старый 14.12.2009, 21:06   #14
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Массивы в типе

BoundBox !!
(Offline)
 
Ответить с цитированием
Старый 03.01.2010, 22:33   #15
drwoland
AnyKey`щик
 
Регистрация: 15.05.2009
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Массивы в типе

Сообщение от Dstalk Посмотреть сообщение
И еще вопросик:


Имеется начальная точка (0,0) и пункт назначения; имеются препятствия (красным цветом), они в массиве карта[maxX,maxY].
Вопрос: как вычислить клетки по которым пойдет объект до столкновения с препятствием? Чего-то я думал, думал - каша какая-то выходит. Помогите пожалуйста)))

P.S. даже проще, если без препятствий - как вычислить по каким клеткам он пройдет? Кстати движения наискосок допускаются...
Клетки по которым пойдет объект из точки (startx;starty) в точку (finishx;finishy) можно посчитать так:

dx = finishx-startx 
dy = finishy-starty

Angle#   = atan(dx,dy)           ;угол от начальной точки до конечной
Lenght# = sqrt(dx^2+dy^2)  ;длина проверяемого отрезка
maxsteps = 10                       ;количество шагов проверки чем больше - тем точнее проверка. Ставь его равным Abs(Lenght#) для средней точности
steplenght# = lenght/steps     ; размер одного шага.
currx# = startx 
curry# = starty

for currstep = 0 to maxsteps
currX# = currx# + steplenght#*sin (angle#) ; это координаты клетки через которую пройдет объект на этом шаге
currY# = currx# + steplenght#*cos(angle#) ; округли их до минимального целого.
next
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тип в типе AnRee 3D-программирование 10 13.12.2012 21:06
Тип в типе & etc... ELIAS Blitz3D 9 30.03.2009 23:09
Массивы Petrofan 2D-программирование 74 04.03.2009 14:57
Про массивы. Cliffe Snake Основной форум 10 08.11.2008 12:19
полу реал-тиме поиск пути jimon Алгоритмика 4 29.11.2005 00:21


Часовой пояс GMT +4, время: 03:04.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com