Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 31.10.2007, 16:15
vcj вне форума Посмотреть профиль Отправить личное сообщение для vcj Посетить домашнюю страницу vcj Найти все сообщения от vcj
  № 1  
Ответить с цитированием
vcj
[+1 08.01.09]
[+1 24.02.09]
 
Аватар для vcj

Регистрация: Aug 2004
Адрес: дома
Сообщений: 194
Отправить сообщение для vcj с помощью ICQ
По умолчанию Рекурсия

Всем привет! Пишу игру Кликомания, столкнулся с проблемой, нада выделять рядомстоящие кубики оприделённого цвет, решил использовать рекурсию (вот привожу функыию), Выделяет но не всё. както работает однобоко (т.е. Выделяет только верхнюю часть матрици).
Код:
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);
	}
}
Подскажыте что не так.

Старый 31.10.2007, 16:27
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 2  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Круто! Мне кажется лучше созидать, чем разрушать.
У Вас очень много разрушительных функций. Попробуйте внести немного жизни.
А вообще не понятно, что это за массивы, и что делает Разрушающая функция.

Старый 31.10.2007, 16:36
vcj вне форума Посмотреть профиль Отправить личное сообщение для vcj Посетить домашнюю страницу vcj Найти все сообщения от vcj
  № 3  
Ответить с цитированием
vcj
[+1 08.01.09]
[+1 24.02.09]
 
Аватар для vcj

Регистрация: Aug 2004
Адрес: дома
Сообщений: 194
Отправить сообщение для vcj с помощью ICQ
Вы знакомы с игрой Кликомания? Суть её в чём: Есть матрица к примеру:
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).

Вот примерно вот так свё и выглядит.

Надеюсь я ясно объяснил?

Старый 31.10.2007, 16:40
Ostgur вне форума Посмотреть профиль Отправить личное сообщение для Ostgur Посетить домашнюю страницу Ostgur Найти все сообщения от Ostgur
  № 4  
Ответить с цитированием
Ostgur
 
Аватар для Ostgur

Регистрация: Apr 2004
Адрес: macromedia—adobe Любит: Flash MX
Сообщений: 2,860
кликомания
ну и что ты вводишь, что выходит, и как надо правильно, можно на конкретном примере? и ещё, что за функция Destroy?


Последний раз редактировалось Ostgur; 31.10.2007 в 16:42.
Старый 31.10.2007, 16:42
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 5  
Ответить с цитированием
Mr. Fixit
Banned
[+1 08.05.08]
[+4 14.04.08]
[+1.3 02.05.08]

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
классно, конечно)
надо буит с матрицами поработать)

Старый 31.10.2007, 16:47
Double вне форума Посмотреть профиль Отправить личное сообщение для Double Найти все сообщения от Double
  № 6  
Ответить с цитированием
Double
 
Аватар для Double

Регистрация: Mar 2001
Сообщений: 1,147
Код:
function Destroy(i,j) {
	if((A[i][j]==A[i][j-1])and(A[i][j-1]!=0)) Destroy(i,j-1);
	if((A[i][j]==A[i][j+1])and(A[i][j+1]!=0)) Destroy(i,j+1);
	if((A[i][j]==A[i-1][j])and(A[i-1][j]!=0)) Destroy(i-1,j);
	if((A[i][j]==A[i+1][j])and(A[i+1][j]!=0)) Destroy(i+1,j);
	A[i][j]=0;
}
"рекурсия" уже знаем, а правила орфографии - пока нет?
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.


Последний раз редактировалось Double; 31.10.2007 в 16:49.
Старый 31.10.2007, 16:48
vcj вне форума Посмотреть профиль Отправить личное сообщение для vcj Посетить домашнюю страницу vcj Найти все сообщения от vcj
  № 7  
Ответить с цитированием
vcj
[+1 08.01.09]
[+1 24.02.09]
 
Аватар для vcj

Регистрация: Aug 2004
Адрес: дома
Сообщений: 194
Отправить сообщение для vcj с помощью ICQ
Входим:
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)).

Старый 31.10.2007, 16:51
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 8  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
На Лайнз похоже.
Кликоманию не знаю.

A[i][j]==A[i][j-1] - Вы проверяете единожды смежную ячейку, и преобразуете её в Нуль. Потом у Вас идёт ещё условие, но он не связано с историей предыдущей функции, проще говоря, следующий if не знает, что было ещё смежное равное чило, так как оно уже = 0.
Будет время, попробую помочь, пока только, могу сказать, что подход из кучи Ифоф не верен. Нужен цикл, сво-ва массивов и построение пути (как в графах).

Старый 31.10.2007, 16:55
Ostgur вне форума Посмотреть профиль Отправить личное сообщение для Ostgur Посетить домашнюю страницу Ostgur Найти все сообщения от Ostgur
  № 9  
Ответить с цитированием
Ostgur
 
Аватар для Ostgur

Регистрация: Apr 2004
Адрес: macromedia—adobe Любит: Flash MX
Сообщений: 2,860
походу придётся создать ещё массив, или добавить доп.пункт, типа [destroy], ставить его в 1, если нужно дестроить, если 0 — не нужно, а потом уже одной функцией дестроить все, где [destroy] == 1.

Старый 31.10.2007, 16:57
Mr. Fixit вне форума Посмотреть профиль Найти все сообщения от Mr. Fixit
  № 10  
Ответить с цитированием
Mr. Fixit
Banned
[+1 08.05.08]
[+4 14.04.08]
[+1.3 02.05.08]

Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
чтото мне подсказывает, что в неправильном направлении автор движется.

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 07:51.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.