|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jul 2005
Сообщений: 283
|
Так-то попрет. Но тут-то один объект. А их может 20 или 50, вот представь, какой код писать надо...
|
|
|||||
Регистрация: Jul 2005
Сообщений: 283
|
Цитата:
|
|
|||||
[+1 02.06.2006]
[+1.4 01.04.2006] [+1 01.07.2006] |
Цитата:
__________________
С уважением, Maksi. |
|
|||||
Регистрация: Jul 2005
Сообщений: 283
|
Ну вот, облом...
Массив сделал, получилась та же проблема, как ты сможешь проверить, не касается-ли ячейка с одним из 5-ти предметов? И скажите, iNils, пожайлуста, какая функция проверяет, точнее, при промощи какой функции, ты бы искал первую попавшуюся свободную ячейку в массиве? |
|
|||||
Если ячеек немного (в пределах разрядности) то быстрее всего использовать двоичные флаги.
Имеем: //константы, есть степени двойки cell1 = 1; cell2 = 2; cell3 = 4; cell4 = 8; cell5 = 16; //строго говоря, max(cell)*2 - 1; chksum = 1+2+4+8+16; //начальное состояние рюкзака: items = 0; //Проверка наличия свободной (хотя бы одной) ячейки : if (chksum ^ items != 0) {trace('есть места');} //добавление вещи, чуть сложнее... items += Math.pow(2, Math.floor(Math.log(chksum ^ mas) / Math.LN2)); //тут Math.pow(2, Math.floor(Math.log(chksum ^ mas) / Math.LN2)) - это "вес" итема, а Math.floor(Math.log(chksum ^ mas) / Math.LN2) - номер ячейки, в которую его поместили. Величина chksum^mas = 0 при полном рюкзаке, поэтому теоретически логарифм должен дать ошибку, но выдает он минус бесконечность во флэше, поэтому pow(2, логарифм) выдает 0 при полностью заполненном рюкзаке.
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. Последний раз редактировалось Skubent; 09.11.2005 в 16:14. |
|
|||||
Регистрация: Jul 2005
Сообщений: 283
|
Блин, спасибочки.
Но я в программировании не такой уж сильный... Поясни, плиз, зачем константы в степени двойки задавать? |
|
|||||
Регистрация: Jul 2005
Сообщений: 283
|
Видно Skubent, вне поля обозрения , может кто-нибудь, знает для чего степени двойки задавать?
|
|
|||||
В чём проблема?
for (var j = 1; j<MaxSlot; ++j) { _root["statysSlot"+j] = 0; for (n=1; n<6; n++) { if (_root["itemSlot"+j].hitTest(_root["obj"+n])) { _root["statysSlot"+j] = 1; } } } Maxslot - кол-во слотов.
__________________
(А) |
|
|||||
Вот исправленное файло.
__________________
(А) |
Часовой пояс GMT +4, время: 00:49. |
|
« Предыдущая тема | Следующая тема » |
|
|