Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Xonix. Алгоритм вырезания участка. 
:(
    Опции темы
GHOST32
Дата 5.5.2013, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2013

Репутация: нет
Всего: нет



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

Вот пример:

Массив 
00000000
00000000
00000000
00000000

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

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

Объясните, пожалуйста, алгоритм вырезания участка.
PM MAIL   Вверх
maxim1000
Дата 5.5.2013, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



линия без самопересечений делит участок на две части

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

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


--------------------
qqq
PM WWW   Вверх
maxim1000
Дата 5.5.2013, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



линия без самопересечений делит участок на две части

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

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


--------------------
qqq
PM WWW   Вверх
GHOST32
Дата 14.5.2013, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2013

Репутация: нет
Всего: нет



А как сравнить 2 участка? 
PM MAIL   Вверх
Mirkes
Дата 15.5.2013, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



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


--------------------
Mirkes
PM MAIL   Вверх
GHOST32
Дата 15.5.2013, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2013

Репутация: нет
Всего: нет



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

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

Это сообщение отредактировал(а) GHOST32 - 15.5.2013, 20:04
PM MAIL   Вверх
Mirkes
Дата 16.5.2013, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



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


--------------------
Mirkes
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0636 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.