Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.10.26;
Скачать: CL | DM;

Вниз

Помогите разработать алгоритм проверки поля в 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.005 c
15-1394643206
HITMAN
2014-03-12 20:53
2014.10.26
Помогите разработать алгоритм проверки поля в LINES


2-1383329935
dmitryl
2013-11-01 22:18
2014.10.26
dbisam


2-1383659444
Дмитрий
2013-11-05 17:50
2014.10.26
Цвет фона TPageControl и TTabSheet


2-1383653282
Dmitry.0xDEADFA11
2013-11-05 16:08
2014.10.26
Транзакции


15-1394821001
MS-DOS user
2014-03-14 22:16
2014.10.26
Сервис int 21h/0Ah, шаблоны