![]() |
|
||||||||||
|
|||||
|
[+1 08.01.09]
[+1 24.02.09] |
Всем привет! Пишу игру Кликомания, столкнулся с проблемой, нада выделять рядомстоящие кубики оприделённого цвет, решил использовать рекурсию (вот привожу функыию), Выделяет но не всё. както работает однобоко (т.е. Выделяет только верхнюю часть матрици).
function Destroy(i,j)
{
if((A[i][j]==A[i][j-1])and(A[i][j-1]!=0))
{
A[i][j]=0;
Destroy(i,j-1);
}
/****************************/
if((A[i][j]==A[i][j+1])and(A[i][j+1]!=0))
{
A[i][j]=0;
Destroy(i,j+1);
}
/***************************/
if((A[i][j]==A[i-1][j])and(A[i-1][j]!=0))
{
A[i][j]=0;
Destroy(i-1,j);
}
/*************************/
if((A[i][j]==A[i+1][j])and(A[i+1][j]!=0))
{
A[i][j]=0;
Destroy(i+1,j);
}
}
|
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Круто! Мне кажется лучше созидать, чем разрушать.
У Вас очень много разрушительных функций. Попробуйте внести немного жизни. А вообще не понятно, что это за массивы, и что делает Разрушающая функция. |
|
|||||
|
[+1 08.01.09]
[+1 24.02.09] |
Вы знакомы с игрой Кликомания? Суть её в чём: Есть матрица к примеру:
1 2 3 1 2 2 4 2 2 3 3 3 4 2 2 1 у нас есть одинаковые елементы матрицы стоящие рядом (по гризонтали и по вертикали). Нам нада их удалить. Пример: 1 0 3 1 0 0 4 2 0 3 3 3 4 2 2 1 Мы удалили елементы, причём точка входа в матрицу указывается функциинапример (2,2). Вот примерно вот так свё и выглядит. Надеюсь я ясно объяснил? |
|
|||||
|
Регистрация: Apr 2004
Адрес: macromedia—adobe Любит: Flash MX
Сообщений: 2,860
|
кликомания
![]() ну и что ты вводишь, что выходит, и как надо правильно, можно на конкретном примере? и ещё, что за функция Destroy?
__________________
маска лошади и коня в россии и снг с бесплатной доставкой gimmethevape вейпы и поды доставка Последний раз редактировалось Ostgur; 31.10.2007 в 16:42. |
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
классно, конечно)
надо буит с матрицами поработать) |
|
|||||
|
Регистрация: Mar 2001
Сообщений: 1,147
|
"рекурсия" уже знаем, а правила орфографии - пока нет?
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит. Последний раз редактировалось Double; 31.10.2007 в 16:49. |
|
|||||
|
[+1 08.01.09]
[+1 24.02.09] |
Входим:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Нажимаем прозвольно и получаем: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Координаты входа 5,5 (т.е. Destroy(5,5)). |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
На Лайнз похоже.
Кликоманию не знаю. A[i][j]==A[i][j-1] - Вы проверяете единожды смежную ячейку, и преобразуете её в Нуль. Потом у Вас идёт ещё условие, но он не связано с историей предыдущей функции, проще говоря, следующий if не знает, что было ещё смежное равное чило, так как оно уже = 0. Будет время, попробую помочь, пока только, могу сказать, что подход из кучи Ифоф не верен. Нужен цикл, сво-ва массивов и построение пути (как в графах). |
|
|||||
|
Регистрация: Apr 2004
Адрес: macromedia—adobe Любит: Flash MX
Сообщений: 2,860
|
походу придётся создать ещё массив, или добавить доп.пункт, типа [destroy], ставить его в 1, если нужно дестроить, если 0 — не нужно, а потом уже одной функцией дестроить все, где [destroy] == 1.
__________________
маска лошади и коня в россии и снг с бесплатной доставкой gimmethevape вейпы и поды доставка |
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
чтото мне подсказывает, что в неправильном направлении автор движется.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 07:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|