Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2013, 22:56   #1
O m n i s
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 64
По умолчанию [Далаю игрушку]

Форумчане! Нужна помощь! Ни как не соображу, допустим в двухмерном масиве 7 на 7 я нахожусь в серединке [4,4] - I. Надо найти наиближайщего врага - f. Мне нужен алгоритм поиска Ни как не могу сам его придумать, мозг взрывается просто.

[f] [ ] [ ] [ ] [ ] [f] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [I] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ] [ ] [ ]
O m n i s вне форума Ответить с цитированием
Старый 15.01.2013, 23:17   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Находите первого врага и считаете расстояние, как гипотенузу. Для удобства не высчитывайте корень, а только (x-x0)^2+(y-y0)^2, где (x,y) - координаты врага, (y0,x0) - Ваши координаты. Принимаете координаты врага и расстояние за изначальные. Затем ищете следующего врага и рассчитываете расстояние, если оно оказывается меньше, то запоминаете новые координаты врага вместо предыдущего.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 16.01.2013, 13:57   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

А можно методом "волны": последовательно проверять все соседние клетки, которые не были проверены. Этот метод лучше, если поиск осуществляется в лабиринте.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 16.01.2013, 14:06   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
А можно методом "волны": последовательно проверять все соседние клетки, которые не были проверены. Этот метод лучше, если поиск осуществляется в лабиринте.
Несомненно, просто он сложнее для реализации.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зацените игрушку Vini Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 01.02.2011 09:50
Зацените игрушку Хохол Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 20.06.2010 15:19
Помогите сделать игрушку Rusl92 Общие вопросы Delphi 6 21.09.2008 16:58