Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Игра для ребенка. Помогите, пожалуйста (http://www.flasher.ru/forum/showthread.php?t=151301)

gantik 25.02.2011 21:52

Игра для ребенка. Помогите, пожалуйста
 
Хочу сделать простую игрушку для дочки, суть в следующем. Есть печка-символ и есть продукты мувики. Нужно перетащить на печку определенные продукты и тогда переход на следующий кадр с готовым к примеру тортом, я знаю как сделать простое пересечение двух символов, а не пойму как сделать так чтоб символ пересекался с несколькими и тогда только происходило действие. Подскажите пожалуйста.

Hauts 25.02.2011 22:08

Если не получится вот так, то привидите код и расскажите подробнее про количество перетаскиваемых объектов и их необходимые сочетания, постараемся помочь.

Код AS1/AS2:

if( myDraggedObject.hitTest( someOtherObject ) && myDraggedObject.hitTest( oneMoreObject ) ){
    // myDraggedObject пересекся с someOtherObject и oneMoreObject
}

myDraggedObject, someOtherObject и oneMoreObject - это instance name`ы у мувиклипов на сцене.

temofony 25.02.2011 22:09

попробуйте задать нечто вроде переменных-рецептов.то есть:
Код AS1/AS2:

var cur_meal:String="";//переменная в которой вы можете хранить то что сейчас готовится
//..допустим при пересечении масла с печкой
cur_meal+="maslo";
//после пересечения с картошкой
cur_meal+="kartoshka";
//потом при нажатии кнопки "готовки"
if(cur_meal=="maslokartoshka" || cur_meal=="kartoshkamaslo") {
//переход на кадр с жареной картошкой
}

как-то так..
этот подход еще удобен тем,что можно регулировать очередность добавления сырья в печку)
возможно это попроще чем предлагает Hauts

Hauts 25.02.2011 22:19

На самом деле реализация кода упирается в два ключевых вопроса: количество инградиентов для создания нового блюда (переход на новый кадр) и критичность последовательности "смешивания".

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 {
                // Блюдо не готово
        }
}


temofony 25.02.2011 22:29

да,конечно если ингридиентов много,то количество вариаций для проверки будет огого каким.Но из этой проблемы можно выйти не замарав перчаток-каждое блюдо должно готовится с определенной последовательностью элементов(ведь так и в реальной жизни,не так ли?).А через массивы контролировать "правильность" готовки готового произведения кулинарного искусства будет на порядок сложнее.(можно еще реализовать кадр с эдакой пригоревшей бурой кашицей при не true приготовлении :D)

gantik 25.02.2011 23:11

Вложений: 1
Спасибо большое, что ответили. Да мне простой вариант, во вложении пример. Там на символ нужно перетащить символы по списку и в результате переход на следующий кадр.

gantik 26.02.2011 10:24

Спасибо
 
Спасибо, разобралась, все получилось :-)


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

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