Не помню как называется такой тип игр, пусть будет электрическая цепь (или трубы?)
Задача: составить цепь активных элементов от одной точки до другой путем вращения этих самых элементов.
Если появится интерес, могу прокомментировать исходник.
Посмотреть на scirra arcade
Электрическая цепь (puzzle) |
Сообщений: 13
• 1, 2
Zaksoid, буквально пару дней назад была идея реализовать подобное, но как-то не случилось =)))
Да, комментарии, конечно, не помешали бы... "Сходу" не могу понять принцип работы =))
Да, комментарии, конечно, не помешали бы... "Сходу" не могу понять принцип работы =))
Some people make the world more special just by being in it!
Мои проекты: Evil Spaceships, Glieser, Классическая змейка, Tower Defense, Кубик-Рубика, Puzzle, Пятнашки, Крестики-Нолики, Тетрис, Сапёр
Мои туториалы: Массивы, Онлайн таблица рекордов
Мои конкурсы: Ням-Ням
Мои проекты: Evil Spaceships, Glieser, Классическая змейка, Tower Defense, Кубик-Рубика, Puzzle, Пятнашки, Крестики-Нолики, Тетрис, Сапёр
Мои туториалы: Массивы, Онлайн таблица рекордов
Мои конкурсы: Ням-Ням
Работает все на основе массива 12х12х8
X и Y координаты элементов цепи(игравого поля), каждый элемент имеет 7 параметров по Z
0- отвечает за активность элемента, то есть есть напряжение или нет.
1- тип элемента, от 0 до 5
..0- победный элемент, к которому нужно подвести ток
..1- стартовый элемент, отсюда все начинается, всегда активен.
..2- прямой провод с двумя концами
..3- Г-образный с двумя концами
..4- с тремя концами
..5- четыре конца
2- угол элемента на который повернут (0-90-180-270)
3- UID спрайта который показывает что элемент активен
4- показывает есть ли проход у элемента с правой стороны (1-есть, 0-нет)
5- показывает есть ли проход у элемента снизу (1-есть, 0-нет)
6- показывает есть ли проход у элемента с левой стороны (1-есть, 0-нет)
7- показывает есть ли проход у элемента сверху стороны (1-есть, 0-нет)
(Тут думаю все понятно, если элемент такой "|" то координаты по z будут 4=0, 5=1, 6=0, 7=1)
1-18 событие генерация массива
19-24 поворот элемента. происходит сдвиг по оси z вниз на одну ячейку с 4 по 7, 7-мая становится 4-той. Обнуляются все активные ячейки.
25-38 происходит проверка каждой ячейки.
Алгоритм такой- текущая ячейка проверяет активная ли она, если нет, проверяет есть ли активная ячейка справа, если да, проверяет есть ли у этой ячейки справа проход к текущей (то есть 6=1?) и проверяет есть ли у текущей проход к правой (4=1?) если да, то становится активной. Затем алгоритм повторяется с ячейками снизу, слева, сверху. И так каждая ячейка.
Вот, собственно, и весь алгоритм.
Сейчас пробую логику для игр типа ZUMA, на первый взгляд, вроде не сложно, хотя кто знает, посмотрим, в правильном ли я направлении пошел.
X и Y координаты элементов цепи(игравого поля), каждый элемент имеет 7 параметров по Z
0- отвечает за активность элемента, то есть есть напряжение или нет.
1- тип элемента, от 0 до 5
..0- победный элемент, к которому нужно подвести ток
..1- стартовый элемент, отсюда все начинается, всегда активен.
..2- прямой провод с двумя концами
..3- Г-образный с двумя концами
..4- с тремя концами
..5- четыре конца
2- угол элемента на который повернут (0-90-180-270)
3- UID спрайта который показывает что элемент активен
4- показывает есть ли проход у элемента с правой стороны (1-есть, 0-нет)
5- показывает есть ли проход у элемента снизу (1-есть, 0-нет)
6- показывает есть ли проход у элемента с левой стороны (1-есть, 0-нет)
7- показывает есть ли проход у элемента сверху стороны (1-есть, 0-нет)
(Тут думаю все понятно, если элемент такой "|" то координаты по z будут 4=0, 5=1, 6=0, 7=1)
1-18 событие генерация массива
19-24 поворот элемента. происходит сдвиг по оси z вниз на одну ячейку с 4 по 7, 7-мая становится 4-той. Обнуляются все активные ячейки.
25-38 происходит проверка каждой ячейки.
Алгоритм такой- текущая ячейка проверяет активная ли она, если нет, проверяет есть ли активная ячейка справа, если да, проверяет есть ли у этой ячейки справа проход к текущей (то есть 6=1?) и проверяет есть ли у текущей проход к правой (4=1?) если да, то становится активной. Затем алгоритм повторяется с ячейками снизу, слева, сверху. И так каждая ячейка.
Вот, собственно, и весь алгоритм.
Сейчас пробую логику для игр типа ZUMA, на первый взгляд, вроде не сложно, хотя кто знает, посмотрим, в правильном ли я направлении пошел.
Класс! В твою игру два часа залипал!
Gogol писал(а):Класс! В твою игру два часа залипал!
вот еще позалипай http://c2community.ru/courses/games/Plumbing/index.html

интересный факт. Zaksoid, для просчета цепи использовал массив, который как известно довольно серьезно нагружает проц мобильного устройства. я же в своей игре решил вообще отказаться от массива и создал похожий механизм, но исключительно на триггерынх коллизиях (обмен данными между трубами только в момент касания). если интересно как такое делать - пиши в лс. кину ссылку на урок

Уроки: Платформер от А до Я
Уроки: TDS от А до Я
Уроки: Создание игры для Андроид от А до Я
Уроки: Раннер от А до Я
Уроки: TDS от А до Я
Уроки: Создание игры для Андроид от А до Я
Уроки: Раннер от А до Я
___ писал(а):интересный факт. Zaksoid, для просчета цепи использовал массив, который как известно довольно серьезно нагружает проц мобильного устройства
Советую вообще отказаться от массивов. У меня как-то раз ноут завис, когда я решил использовал целых ДВА массива
-
- Сообщений: 1391
- Я тут с 31 авг 2015
- Откуда: Нижний Новгород
- Двиг: C2, C3
- Лицензия: Personal
- Репутация 270 [ ? ]
___ писал(а):интересный факт. Zaksoid, для просчета цепи использовал массив, который как известно довольно серьезно нагружает проц мобильного устройства.
С чего вдруг такая уверенность? Почему ты думаешь, что проверка коллизий дешевле для проца чем перебор массива? ))
Посмотрел, код конечно так себе, сейчас бы уже по другому сделал, не нужно каждый тик проверять массив, только после клика мышкой, рекурсивной функцией
Zaksoid писал(а):___ писал(а):интересный факт. Zaksoid, для просчета цепи использовал массив, который как известно довольно серьезно нагружает проц мобильного устройства.
С чего вдруг такая уверенность? Почему ты думаешь, что проверка коллизий дешевле для проца чем перебор массива? ))
Посмотрел, код конечно так себе, сейчас бы уже по другому сделал, не нужно каждый тик проверять массив, только после клика мышкой, рекурсивной функцией
Игру можно конечно оптимизировать, но сказать что без массивов будет меньше нагружать проц. не могу. Просто делать без массивов в С2 более проще и короче код, по крайней мере видимый по эвентам. Так 15нашки у меня уложились в 8 строк. И еще в качестве хранения нужных данных С2 предоставляет массу возможностей по мимо массива.
Сообщений: 13
• Страница 1 из 2 • 1, 2
Вернуться в Исходники и Примеры для Construct 2
Сейчас эту тему просматривают
Зарегистрированные пользователи: нет зарегистрированных пользователей