Хелп ми плиз With Lines |
Хелп ми плиз With Lines |
Falcon 00*5 |
Сообщение
#1
|
Гость |
Срочно нужны исходники игры Lines , это которая шарики и все такое.. Сам сделал процентов на 40 , но хотелось бы еще увидеть ваши варианты, может быть у кого то уже есть эта игра?
|
XaMMaX |
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
Плиз мне тоже оч нужны! а то не знаю по какому алгоритму проверять соответствия что бы это было не очень ресурсо ёмко!
|
Michael_Rybak |
Сообщение
#3
|
Michael_Rybak Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Какие такие соответствия?
|
XaMMaX |
Сообщение
#4
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
Ну ээ... может я не правильно понимаю игру lines Там вроде в ряд должно совпасть и я говорю о проверки совпало или нет =) Наверное я чего-то путаю
|
Michael_Rybak |
Сообщение
#5
|
Michael_Rybak Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Проверить совпало или нет очень просто. Идешь по строкам-столцам-диагоналям да проверяешь. Примерно так:
Сообщение отредактировано: Michael_Rybak - |
XaMMaX |
Сообщение
#6
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
Не чень мне понятно:
И чего за dir ? Для чего он? Оргаментируй там каждую строчку плиз, а то я тупой очень(само критика рулит) =) И ты уверен что твой способ не ресурсо ёмкий? мои рамки сильно ограничены =( |
XaMMaX |
Сообщение
#7
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
Да и как сделать что бы после нажатия на шарик он мог вставать только на пустой квадрат К КОТОРОМУ НЕ ЗАКРЫТ ПУТЬ? Оч интерестно =\
|
Michael_Rybak |
Сообщение
#8
|
Michael_Rybak Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Цитата И чего за dir ? Для чего он? Алгоритм такой. Берем каждую непустую клетку, и от нее пытаемся идти до упора вправо, пока не встретим шарик другого цвета, или не упремся в границу поля. Потом проверяем, что длина найденного ряда шариков одинакового цвета больше или равна пяти, и если это так - удаляем (точнее не удаляем, а запоминаем, что их надо в конце удалить, т.к. ряды могут пересекаться). Потом делаем то же самое, но идем не вправо, а по диагонали. А потом - вниз. Переменная dir задает направление движения, определяемое смещением dy[dir], dx[dir]. Когда dir = 0, получается dx = 1, dy = 0, т.е. движемся вправо. И т.д. Цитата И ты уверен что твой способ не ресурсо ёмкий? мои рамки сильно ограничены =( Этот способ не самый оптимальный, но летать будет даже на Поиске. |
XaMMaX |
Сообщение
#9
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
Этот способ не самый оптимальный, но летать будет даже на Поиске.
----- Дело в том что игру разрабатываю не для PC , а для GP2X(да есть такая вещь) =) И хочется опитимизировать хорошенько чтобы мощности и для эффектов+музыки осталось =Р Так как на счёт второго вопроса? "Да и как сделать что бы после нажатия на шарик он мог вставать только на пустой квадрат К КОТОРОМУ НЕ ЗАКРЫТ ПУТЬ? Оч интерестно =\" Без этого у меня игра не получится =( |
Falcon 00*5 |
Сообщение
#10
|
Гость |
О! Пасиба за идею , мне она тоже потребуется... а все таки? каких нить заготовок нет ни у кого?
|
XaMMaX |
Сообщение
#11
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
Присоединяюсь ибо не понимаю как опредилить закрыт ли путь к клетке? (см. мой предидущий вопрос) Оч надо срочно =(
|
Michael_Rybak |
Сообщение
#12
|
Michael_Rybak Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Цитата хочется опитимизировать хорошенько давай ты так сначала попробуешь, а там поговорим ;)Цитата К КОТОРОМУ НЕ ЗАКРЫТ ПУТЬ Это делается поиском в ширину. Смотри. У тебя есть клетка, на которой стоит клацнутый шарик. Делаем копию поля, пока что всем клеткам ставим статус 0 (не посещена), а начальной - 1 (посещена), и помещаем ее в очередь. Дальше, пока очередь не пуста, берем из нее клетку, и смотрим на каждого из ее четырех соседей. Каждую соседнюю клетку, которая 1) находится в пределах поля, 2) не содержит шарик и 3) имеет статус 0, мы помещаем в очередь и присваиваем статус 1. В конце получится, что статус 1 имеют все достижимые клетки, 0 - остальные. |
XaMMaX |
Сообщение
#13
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
Блин звучит разумно только не очень понятно =( Можно что ли рисунок не большой? Или код ?
|
Michael_Rybak |
Сообщение
#14
|
Michael_Rybak Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Короче тебе в любом случае надо не только узнавать, можно ли дойти до клетки, но и находить, собственно, сам путь.
Вот тебе урла: http://www.firststeps.ru/theory/karta.html Вот оттуда картинка: На пальцах: ставим в начальную клетку нолик. Теперь в каждую пустую клетку, соседствующую с ноликом, ставим единицу. Теперь в каждую пустую клетку, соседствующую с одной из единиц, ставим двойку и т.д. Для волны заведем дополнительный массив, чтобы не путать числа волны с цветом шариков, и заполним его минус единицами изначально. По окончании "волн" число в клетке будет обозначать минимальное количество ходов до нее. Так вот. Когда юзер клацает на шарике, который надо мувать, ты пускаешь такую "волну" до упора, и запоминаешь ее. Потом, когда юзер клацнул в клетку, в которую надо перейти - смотришь, дошла ли туда волна. Если волна не дошла - значит, нельзя туда попасть. Если же дошла - нам надо восстановить путь. Делаем это с конца. Пусть в целевой клетке стоит число 14 (как на картинке). Это значит, что мы дошли туда за 14 "волн". И это значит, что где-то рядом стоит число 13! Перебираем четырех соседей, идем туда, где 13. Теперь то же самое: где-то рядом есть 12, идем туда. Теперь дальше: где-то рядом есть 11. Видим, что есть 2 клетки, в которых 11 - не страшно, идем в любую, ведь любая из них достижима из начальной за 11 ходов. И так далее. |
XaMMaX |
Сообщение
#15
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
Хм да это уже понятнее =) Надо только код сформулировать Попробую если не получистя ещё приду!
|
Michael_Rybak |
Сообщение
#16
|
Michael_Rybak Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Приходи, приходи
|
XaMMaX |
Сообщение
#17
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
Блин чё то я не врубаюсь как код сделать! Хелп!
|
Michael_Rybak |
Сообщение
#18
|
Michael_Rybak Группа: Пользователи Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Ну как это - не врубаешься? Идею понял? Понял. Значит врубишься ;)
Сделай массивы x, y: array[1..100] of integer, и n: integer - счетчик, который будет обозначать количество пронумерованных клеток. Идешь по массиву, обрабатываешь. Или гугли "волновой алгоритм" - кода там полно |
XaMMaX |
Сообщение
#19
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
Хм можно всё же пример ни как не получается =( В гугле тоже батва всякая вылезает =( Пожалуйста оч надо! Ну никак не пойму как это реализовать хотя идею вроде понял
|
XaMMaX |
Сообщение
#20
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
У меня вопрос по проверки приведённой тобой! Значит ты проверяеш спереди, снизу и между? Значит диогональ может совпасть только если она идёт от начала и вниз =( Или я чего-то не понимаю?
|
Текстовая версия | 21.12.2024 19:39 |