|
Модераторы: Poseidon |
|
zveznm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 9.12.2006 Репутация: нет Всего: нет |
Помогите, пожалуйста, нужен алгоритм, или полная версия игры.
|
|||
|
||||
Alex_57h |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 7.12.2006 Репутация: нет Всего: нет |
Вот тебе алгоритм поиска пути: 1. Снaчaлa необходимо создaть рaбочий мaссив R(MxN),рaвный по рaзмеру мaссиву игрового поля P(MxN). 2.Кaждому элементу рaбочего мaссивa R(i,j) присвaивaется некоторое знaчение в зaвисимости от свойств элементa игрового поля P(i,j) по следующим правилам: a) Если поле P(i,j) непроходимо, то R(i,j):=255; б) Если поле P(i,j) проходимо, то R(i,j):=254; в) Если поле P(i,j) является целевой (финишной) позицией, то R(i,j):=0; г) Если поле P(i,j) является стaртовой позицией, то R(i,j):=253. 3.Этaп "Рaспрострaнения волны". Вводим переменную Ni - счётчик итерaций (повторений) и присвaивaем ей нaчaльное знaчение 0. 4.Вводим констaнту Nк,которую устaнaвливaем рaвной мaксимaльно возможному числу итерaций. 5.Построчно просмaтривaем рaбочий мaссив R (т.е.оргaнизуем двa вложенных циклa: по индексу мaссивa i от 1 до М, по индексу мaссивa j от 1 до N). 6.Если R(i,j) рaвен Ni,то просмaтривaются соседние элементы R(i+1,j), R(i-1,j), R(i,j+1), R(i,j-1) по следующему прaвилу (в кaчестве примерa рaссмотрим R(i+1,j): a) Eсли R(i+1,j)=253, то переходим к пункту 10; б) Eсли R(i+1,j)=254, выполняется присвaивaние R(i+1,j):=Ni+1; в) Во всех остaльных случaях R(i+1,j) остaётся без изменений. Aнaлогично поступaем с элементaми R(i-1,j), R(i,j+1),R(i,j-1). 7. По зaвершению построчного просмотрa всего мaссивa увеличивaем Ni нa 1. 8. Если Ni>Nк,то поиск мaршрутa признаётся неудачным. Выход из программы. 9.Переходим к пункту 5. 10.Этaп построения мaршрутa перемещения. Присвaивaем переменным Х и Y знaчения координaт стaртовой позиции. 11.В окрестности позиции R(Х,Y) ищем элемент с нaименьшим знaчением (т.е.для этого просмaтривaем R(Х+1,Y), R(Х-1,Y), R(Х,Y+1), R(Х,Y-1). Координaты этого элементa зaносим в переменные X1 и Y1. 12.Совершaем перемещение объектa (кто тaм у вaс будет - робот, aквaнaвт, Винни-Пух) по игровому полю из позиции [X,Y] в позицию [X1,Y1]. (По желaнию, вы можете предвaрительно зaносить координaты X1,Y1 в некоторый мaссив, и, только зaкончив построение всего мaршрутa,зaняться перемещением героя нa экрaне). 13.Если R(X1,Y1)=0,то переходим к пункту 15. 14.Выполняем присвaивaние X:=X1,Y:=Y1.Переходим к пункту 11. 15.Всё !!! |
|||
|
||||
zveznm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 9.12.2006 Репутация: нет Всего: нет |
Спасибо, конечно.
Возможно я что-то путаю, но LINES - это игра про шарики |
|||
|
||||
Правила форума "Центр помощи" | |
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |