Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++ Builder] Игра Lines, нужен алгоритм или полная версия игры 
:(
    Опции темы
zveznm
Дата 9.12.2006, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.12.2006

Репутация: нет
Всего: нет



Помогите, пожалуйста, нужен алгоритм, или полная версия игры.
PM MAIL   Вверх
Alex_57h
Дата 9.12.2006, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



Цитата(zveznm @  9.12.2006,  07:16 Найти цитируемый пост)
нужен алгоритм

Вот тебе алгоритм поиска пути:
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.Всё !!!

PM MAIL   Вверх
zveznm
Дата 11.12.2006, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 9.12.2006

Репутация: нет
Всего: нет



Спасибо, конечно.
Возможно я что-то путаю, но LINES - это игра про шарики smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1053 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.