Так. Это не те, которые я в последнем эскизе обвёл голубым? Тогда какие? Нарисуй эскиз и обведи те, которые хочешь найти, станет понятнее чем на словах.
Так. Это не те, которые я в последнем эскизе обвёл голубым? Тогда какие? Нарисуй эскиз и обведи те, которые хочешь найти, станет понятнее чем на словах.
если сверху блока пустота, тогда { ... }
![]()
"наличие готового программного обеспечения для нового компьютера в наши дни имеет мало смысла."
"Еще вопрос - почему на Спектруме большинство звуков на AY булькающие ? Как это исправить ?"
(c) zst
я совсем запутался..
![]()
ld ix,массив 16х12
ld a,(ix-16)
or a
jr z, пустота
тип так)
отдохни, решение придёт
"наличие готового программного обеспечения для нового компьютера в наши дни имеет мало смысла."
"Еще вопрос - почему на Спектруме большинство звуков на AY булькающие ? Как это исправить ?"
(c) zst
Можно выписать все блоки, имеющие внешнюю границу, а потом по этому списку собрать все существующие границы областей. Внутренние и внешние границы можно отличить друг от друга по знаку накопленного поворота вектора обхода. Внутренние границы исключить. Области, не соприкасающиеся с границей экрана, удалить заливкой.
denpopov, если правильно понял задачу - вот концепция решения "в лоб". После хода, подсчитываете все "группируемые" элементы находящиеся на экране. Берете любой из "группируемых" элементов и проверяете его на предмет "соседства" с краями экрана и другими элементами (в соответствии с игровой "логикой"), добавляя элементы в группу до тех пор пока в группу не будут включены все возможные элементы. Если хоть один из элементов "группы" соседствует с краем экрана, данная группа считается "неудаляемой", в противном случае - данная группы "удалямая". Сравниваем общее количество количество всех элементов и элементов составленных в "группы" - если равно, больше элементов нет, можно делать следующий ход. В противном случае, ищем еще не сгруппированные блоки по вышеприведенному алгориитму.
Когда есть, но не знаешь где - это все равно, что нету.
ээээх, было бы хорошо увидеть работу алгоритма, описанного на словах...пока гонял игру, нашел еще одну ошибку, пытаюсь понять, в чем дело.
плохой из меня игрописатель![]()
denpopov, Сперва подсчитываем общее количество элементов на экране (фиолетовый).
Потом, начинаем "группировать" элементы в соответствии с логикой игры. В итоге получается три группы: "красная", "зеленая" и "голубая". "Зеленая" и "голубая" -"изолированные", т.к. не соприкасаются с границами экрана.
Если игровой экран представлен в виде массива - добавляем с каждой из сторон по одному элементу массива и заполняем их определенным значением (обозначил "серым" - это поможет при "сканировании" соседних ячеек в пределах игрового экрана, определить, соприкасается или нет "группа" с границей экрана)
Одновременно с этим считаем количество элементов во всех группах. Если количество элементов во всех группах, не равно ранее подсчитанному количеству - на игровом поле есть неучтенные элементы.
![]()
Последний раз редактировалось null_device; 13.03.2014 в 14:30.
Когда есть, но не знаешь где - это все равно, что нету.
null_device, я верну немного назад - а как быть, если вверху две пары разделены?
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)