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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.08.2009, 13:04
rregistratorr вне форума Посмотреть профиль Отправить личное сообщение для rregistratorr Найти все сообщения от rregistratorr
  № 1  
Ответить с цитированием
rregistratorr
 
Аватар для rregistratorr

Регистрация: Jun 2009
Сообщений: 27
Отправить сообщение для rregistratorr с помощью ICQ
Question Написания кода для построения фигур тетриса

Доброго времени!
Для построения одной из фигур тетриса использую такую функцию:
Код AS3:
private function T_figura():void
		{
			_rows = 2; // объявлена в конструкторе
			_cols = 3; //  объявлена в конструкторе
			_figurs = new Array(); // объявлена в конструкторе
 
			var i:uint; // счетчик для 1 цикла
			var j:uint; // счетчик для 2 цикла
			var cub:Cub;
 
			for (i = 0; i < _rows; i++)
			{
				for (j = 0; j < _cols; j++)
				{
					if (i == 0 && j == 1)
					{
					cub = new Cub(); // объект описан в классе Cub
 
                                        /* определяем координаты по x и y где 
                                         *Cub.SIZE_CUB-размер составляющего куба, 
                                         *GAP - на сколько двигаем куб.
                                         */
					cub.x = j * (Cub.SIZE_CUB + GAP);
					cub.y = i * (Cub.SIZE_CUB + GAP);
 
					addChild(cub); // Добавляем объект
					_figurs.push(cub); // Добавляем объект в массив
					}
 
					if (i == 1 && j == 0)
					{
					cub = new Cub();
					cub.x = j * (Cub.SIZE_CUB + GAP);
					cub.y = i * (Cub.SIZE_CUB + GAP);
					addChild(cub);
					_figurs.push(cub);
					}
 
					if (i == 1 && j == 1)
					{
					cub = new Cub();
					cub.x = j * (Cub.SIZE_CUB + GAP);
					cub.y = i * (Cub.SIZE_CUB + GAP);
					addChild(cub);
					_figurs.push(cub);
					}
 
					if (i == 1 && j == 2)
					{
					cub = new Cub();
					cub.x = j * (Cub.SIZE_CUB + GAP);
					cub.y = i * (Cub.SIZE_CUB + GAP);
					addChild(cub);
					_figurs.push(cub);
					}
				}
			}
		}
Так вот вопрос, насколько "чист" код или может есть другой алгоритм?
Спасибо!

P.S. Код работает, фигура отрисовывается.
__________________
Скоро станет легче.

Старый 19.08.2009, 13:38
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Эрм... вообще-то вся идея тетриса в том, что любая фигура состоит из 4 квадратов... т.е. вам не нужны вложеные циклы для того, чтобы построить фигуру... я бы просто заранее создал 5 шаблонов (количество вариаций фигур) и использовал их случайным образом.
__________________
Hell is the possibility of sanity

Старый 19.08.2009, 13:40
Dezar вне форума Посмотреть профиль Отправить личное сообщение для Dezar Найти все сообщения от Dezar
  № 3  
Ответить с цитированием
Dezar

Регистрация: Jan 2008
Адрес: Питер
Сообщений: 389
Цитата:
любая фигура состоит из 4 квадратов
ну это уже от версии тетриса зависит))может быть и 5 и 8 кубиков..а может и один.
но вот суть про макеты согласен.

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

Регистрация: Jun 2009
Сообщений: 27
Отправить сообщение для rregistratorr с помощью ICQ
Цитата:
Сообщение от wvxvw Посмотреть сообщение
... я бы просто заранее создал 5 шаблонов (количество вариаций фигур) и использовал их случайным образом.
Т.е. если я правильно понял, расставить составляющие кубы в заранее известные места?
Например: куб1 в позицию с координатами (0, 1), куб 2 (0, 2), куб 3 (0, 3), куб 4 (1, 2), тем самым получаем Т-фигуру.

Добавлено через 1 час 24 минуты
Сделал так:
Код AS3:
...
private function I_figura():void
{
        var cub:Cub;
 
        cub = new Cub();
	cub.x = 0 * (Cub.SIZE_CUB + GAP);
	cub.y = 0 * (Cub.SIZE_CUB + GAP);
	addChild(cub);
 
	cub = new Cub();
	cub.x = 0 * (Cub.SIZE_CUB + GAP);
	cub.y = 1 * (Cub.SIZE_CUB + GAP);
	addChild(cub);
 
	cub = new Cub();
	cub.x = 0 * (Cub.SIZE_CUB + GAP);
	cub.y = 2 * (Cub.SIZE_CUB + GAP);
	addChild(cub);
 
	cub = new Cub();
	cub.x = 0 * (Cub.SIZE_CUB + GAP);
	cub.y = 3 * (Cub.SIZE_CUB + GAP);
	addChild(cub);
 
}
...
Это есть хорошо?
__________________
Скоро станет легче.

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

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

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


 


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


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