![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
GHOST32 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.5.2013 Репутация: нет Всего: нет |
Пишу игру Xonix на DevCpp. Игрок должен бегать по полю и отсекать его участки. Поле состоит из клеток, каждой клетке соответствует ячейка двумерного массива. В данный момент я застрял на этапе заливки поля. Алгоритм такой: сначала делим линией поле на 2 части, сравниваем их с помощью рекурсивной функции, а затем закрашиваем меньшую часть опять же с помощью рекурсивной функции.
Выглядит примерно так: поле вначале 000000 000000 000000 000000 разделили поле на две части 000000 001111 001000 001000 закрасили часть 000000 002222 002222 002222 Проблема в том, что после деления поля линией программа зависает. Возможно проблема в функции, которая считает количество клеток в выделенной части поля.
Где может быть ошибка? |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Я же Вам уже намекал, что нужно учитывать границы матрицы: -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
GHOST32 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.5.2013 Репутация: нет Всего: нет |
Нет, дело не в границах. Изначально поле выглядит так. 222222222222 222222222222 220000000022 220000000022 220000000022 220000000022 220000000022 222222222222 222222222222 0 - не закрашенная клетка, 2 закрашенная клетка. |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Хорошо, пусть границы Вы задали явно, хотя здесь это не очевидно: От повторной рекурсии для данного поля Вы всё же не свободны:
Клетка или посчитана, или нет. Присваивая обратно 0, Вы её делаете снова неподсчитанной и непройденной. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |