Показать сообщение отдельно
Старый 25.02.2011, 22:19
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 4  
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
На самом деле реализация кода упирается в два ключевых вопроса: количество инградиентов для создания нового блюда (переход на новый кадр) и критичность последовательности "смешивания".

temofony, это зло:

Код AS1/AS2:
if(cur_meal=="maslokartoshka" || cur_meal=="kartoshkamaslo") {
//переход на кадр с жареной картошкой
}


Что, если 4 инградиента будет? Или 10?

Думаю, что правильнее было бы так:

Любой объект, который можно перетащить, когда его отпускают над печкой, запускает функцию addMe со своим типом (например "potato"), и этот тип записывается в массив текущих инградиентов. Ну и тут же сравнивается с массивом необходимых для блюда инградиентов. Сравнивать проще всего так — сортируем массив с текущими элементами по алфавиту и сравниваем строки после Array.join("") для обоих массивов.

Понимаете, про что я?

Код AS1/AS2:
var currentMeat = [];
var needMeat = ["apple", "babanas", "citrus"];
 
function addMe(type:String, preventMultiply:Boolean) {
	if (preventMultiply == undefined) {
		preventMultiply = true;
	}
	if (preventMultiply) {
		if (needMeat.join("").indexOf(type)>-1) {
			return;
		}
	}
	currentMeat.push(type);
	testMeatComplete();
}
 
function testMeatComplete() {
	if (currentMeat.sort().join("") == needMeat.join("")) {
		// Блюдо готово
	} else {
		// Блюдо не готово
	}
}
__________________
hauts.ru


Последний раз редактировалось Hauts; 25.02.2011 в 22:28.