Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Xonix. Алгоритм вырезания участка.


Автор: GHOST32 5.5.2013, 11:50
Доброго времени суток. Пишу игру Xonix. В общем есть поле размера 15*15 клеток, соответственно есть двумерный массив такого же размера. 
Застрял на вырезание выделенного участка поля.

Вот пример:

Массив 
00000000
00000000
00000000
00000000

Пользователь выделяет участок поля (выделено единичкой)
00000000
00001111
00001000
00001000

Нужно чтобы выделенный участок превратился в 2ки
00000000
00002222
00002222
00002222

Объясните, пожалуйста, алгоритм вырезания участка.

Автор: maxim1000 5.5.2013, 14:33
линия без самопересечений делит участок на две части

начать стоит с того, что определить критерий выбора части

потом взять любую точку и применить алгоритм заливки (flood fill)

Автор: maxim1000 5.5.2013, 14:31
линия без самопересечений делит участок на две части

начать стоит с того, что определить критерий выбора части

потом взять любую точку и применить алгоритм заливки (flood fill)

Автор: GHOST32 14.5.2013, 16:45
А как сравнить 2 участка? 

Автор: Mirkes 15.5.2013, 11:10
А почему в примере вы закрасили двойками левый нижний угол? Как вы определили какую часть красить?

Автор: GHOST32 15.5.2013, 20:03
Цитата(Mirkes @ 15.5.2013,  11:10)
А почему в примере вы закрасили двойками левый нижний угол? Как вы определили какую часть красить?

Потому что закрашивается меньший участок. 

Автор: Mirkes 16.5.2013, 15:13
Так и действуйте. Любая линия без самопересечений делит ваше поле на две части. Берете меньшую и заливаете. Если сложно определить какая меньше, копируете поле и заливаете сначала одну, потом вторую и считаете число покрашенных точек.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)