Форум: "Прочее";
Текущий архив: 2014.10.26;
Скачать: [xml.tar.bz2];
ВнизПомогите разработать алгоритм проверки поля в LINES Найти похожие ветки
← →
HITMAN (2014-03-12 20:53) [0]Для вертикальный и горизонтальных алгоритм такой:
- Проходим в X-Y-цикле по каждой клетке, если она не занята, то проверяем начиная с этой клетки дальше по горизонтали количество таких же.
Если их 3 или больше, то уничтожаем.
А как сделать для проверки диагонали?
← →
Pavia © (2014-03-12 20:57) [1]В каком месте смеяться?
← →
HITMAN (2014-03-12 21:00) [2]
> Pavia © (12.03.14 20:57) [1]
>
> В каком месте смеяться?
Не нужно смеяться.
Не знаю как перебрать диагонали.
← →
картман © (2014-03-12 21:11) [3]а чем отличается следующая клетка по диагонали от вертикальных или горизонтальных?
← →
HITMAN (2014-03-12 21:14) [4]
> картман © (12.03.14 21:11) [3]
>
> а чем отличается следующая клетка по диагонали от вертикальных
> или горизонтальных?
Как цикл организовать?
← →
Dimka Maslov © (2014-03-12 21:22) [5]for i := ...
← →
Dennis I. Komarov © (2014-03-12 21:35) [6]А как поле закодировано? :)
← →
HITMAN (2014-03-12 21:37) [7]
> Dennis I. Komarov © (12.03.14 21:35) [6]
>
> А как поле закодировано? :)
2 мерный массив чисел, сэр.
← →
Dennis I. Komarov © (2014-03-12 21:53) [8]Трех бит для ячейки недостаточно, Сэр?
← →
HITMAN (2014-03-12 22:09) [9]
> Dennis I. Komarov © (12.03.14 21:53) [8]
>
> Трех бит для ячейки недостаточно, Сэр?
В смысле?
Одна ячейка это int.
← →
Dennis I. Komarov © (2014-03-12 22:20) [10]8 бит позволяют кодировать 8 состояний, зачем int?
← →
Ega23 © (2014-03-12 22:21) [11]
> Трех бит для ячейки недостаточно, Сэр?
Зачем три бита?
← →
Ega23 © (2014-03-12 22:21) [12]
> 8 бит позволяют кодировать 8 состояний, зачем int?
Зачем 8 состояний????
← →
Ega23 © (2014-03-12 22:22) [13]0 - пусто.
1..255 - один из 254 цветов.
← →
HITMAN (2014-03-13 00:25) [14]Ячейка содержит не цвет, а тип в виде константы:
const TYPE_1: LongInt = 1;
А в какой цвет интерпретировать, это уже делает рендерер.
← →
MBo © (2014-03-13 07:31) [15]Диагональ вправо-вниз от точки (x0, y0) будет (x0 + i, y0 + i)
Диагональ влево-вниз понятно, как сделать?
← →
brother © (2014-03-13 07:53) [16]> + i
имхо +1
← →
antonn © (2014-03-13 07:58) [17]
> имхо +1
там же цикл
← →
sniknik © (2014-03-13 09:49) [18]> - Проходим в X-Y-цикле по каждой клетке, ...
> Если их 3 или больше, то уничтожаем.
имхо нужен не цикл, а рекурсия. и не "если - то уничтожаем", а "если - то ставим пометку на уничтожение и проверяем до конца, после чего уже уничтожение".
т.к. насколько помню lines там можно комбинации из "параллельно-диагональных" фигур делать, и они разом "схлопывались" а при такой линейной логике раннее уничтожение "сломает" "одномоментные линии".
ну вот например такая фигура, поставили последним шарик в угол... удалишь сразу верхнюю линию и диагональная не сработает.00011111
10111111
11011111
11111111
не будет смысла в сложных фигурах на много шариков (а в линиях наоборот за это бонус был)
← →
antonn © (2014-03-13 10:26) [19]
> имхо нужен не цикл, а рекурсия.
ну да, алгоритм тот же что при "заливке" (тетрисы, кликомании и тп)
← →
Dennis I. Komarov © (2014-03-13 11:25) [20]
> Ega23 © (12.03.14 22:22) [13]
> 0 - пусто.
> 1..255 - один из 254 цветов.
Зачем тебе столько? :)
← →
Dennis I. Komarov © (2014-03-13 11:42) [21]
> Dennis I. Komarov © (12.03.14 22:20) [10]
> 8 бит позволяют кодировать 8 состояний, зачем int?
Тут "3" конечно же..
> Зачем три бита?
А 7 цветов не достаточно?
9 x 9 x 3 - в 32 байта все уложить можно :)
← →
Romkin © (2014-03-13 12:21) [22]Вы думаете, что 81 ячейка по 4 байта - это ну очень критично по памяти?
← →
Dennis I. Komarov © (2014-03-13 12:40) [23]
> Вы думаете, что 81 ячейка по 4 байта - это ну очень критично
> по памяти?
Нет, но алгоритмы будут разные...
← →
Pavia © (2014-03-13 21:41) [24]
>
> Вы думаете, что 81 ячейка по 4 байта - это ну очень критично
> по памяти?
Сейчас модно компьютеры на транзисторах делать.
http://habrahabr.ru/post/179705/
← →
Ega23 © (2014-03-13 22:29) [25]
> 9 x 9 x 3 - в 32 байта все уложить можно :)
Можно. И потом одуреть shl-shr прыгать.
← →
Dennis I. Komarov © (2014-03-14 18:15) [26]Зато для мозга полезно, особенно тем кто задает такие вопросы ;)
← →
KSergey © (2014-03-19 11:55) [27]Автор, помог ли совет ?
> MBo © (13.03.14 07:31) [15]
> Диагональ вправо-вниз от точки (x0, y0) будет (x0 + i,
> y0 + i)
> Диагональ влево-вниз понятно, как сделать?
← →
oldman © (2014-03-20 08:13) [28]
> ну вот например такая фигура, поставили последним шарик
> в угол... удалишь сразу верхнюю линию и диагональная не
> сработает.
а сразу и не удаляют.
метят ячейки на удаление, удаляют скопом.
← →
sniknik © (2014-03-20 08:36) [29]oldman © (20.03.14 08:13) [28]
читай весь пост, а не только комментарии примеров показывающих почему "так" делать нельзя...
------
не доходят смс-ки? перечитайте их еще раз!
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2014.10.26;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.004 c