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

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

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

Регистрация: Sep 2010
Сообщений: 167
По умолчанию Алгоритм расположения клипов разного размера на сетке

Здравствуйте!

Мне нужно реализовать расположение на определённой сетке, состоящей из клеток, клипов разного размера (1х1 и 1х2 клетки). С размером 1х1 я разобрался, и реализовал перетаскивание и отпускание. Мой алгоритм вычисляет математически координаты ближайшей к перетаскиваемому клипу клетки, и при отпускании ставит его именно в ячейку. Если клетка занята другим клипом, то перетаскаваемый клип возвращается при отпускании на своё место. Клипы сортируются при создании,

Но вот с элементами неквадратной формы (1х2) возникли проблемы. Непонятно, как именно реализовать размещение и сортировку таких элементов. Можете подсказать принцип?

Старый 20.10.2011, 21:39
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Что вы подразумеваете здесь под сортировкой?
Где именно трудность с размещением? Они у вас первоначально где-то на панели, и вы их перетаскиваете в рабочую зону?
Постоянна ли ориентация этих элементов 1x2 или предполагаются повороты?

В общем, информации мало.
Если изначально они на панели и их надо сориентировать, то можно элемент поворачивать последовательно на 90 гр. по клику на элементе в этой панели, перед перетаскиванием.
Была такая игра - NetStorm, там из элементов различной формы (1x1, 2x1, Г-образ.) надо было собирать конструкцию-мост. Этот алгоритм был реализован, но там можно было крутить элемент по клику правой, пока он оставался "приклеен" к мыши. А по клику левой, если место было выбрано удачно, он на него вставал.

Расчет также можно вести математически, создав модель сетки и проверяя при выборе места, не занято ли выбранное место (как для 1x1, так и 1x2 элементов).
__________________
Идите первым!


Последний раз редактировалось mooncar; 20.10.2011 в 21:48.
Старый 20.10.2011, 21:50
Alex626 вне форума Посмотреть профиль Отправить личное сообщение для Alex626 Найти все сообщения от Alex626
  № 3  
Ответить с цитированием
Alex626

Регистрация: Sep 2010
Сообщений: 167
В целом, это похоже на инвентарь, как в сталкере. Предметы появляются по вызову функции на сетке, в свободном месте, которое определяется функцией. Есть 2 типа иконок - квадрытные, и прямоугольные. Программа должна определять расположение, перетаскивание и отпускание элементов.

Старый 20.10.2011, 21:55
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ну она же из каких-то соображений определяет это расположение?
И что значит "определять... перетаскивание и отпускание"?
Что конкретно у вас не получается?
__________________
Идите первым!

Старый 20.10.2011, 22:08
Alex626 вне форума Посмотреть профиль Отправить личное сообщение для Alex626 Найти все сообщения от Alex626
  № 5  
Ответить с цитированием
Alex626

Регистрация: Sep 2010
Сообщений: 167
Вы в сталкер играли? Там можно перетаскивать иконки как угодно по сетке. Когда подбираешь новое оружие, оно появляется в инвентаре на сетке. Алгоритм определяет координаты для каждого элемента, и размещает их. Это расположение.

При перетаскивании элементов опять же проверяется отпускание элемента - свободно ли место под ним ,или нет? Это перетаскивание и отпускание. Я это имел ввиду. Всё это работает для квадратных элементов в моём алгоритме. Но я не знаю, как сделать работу с элементами размера MxN.

По сути, мне нужно каждый раз определять сколько клеток занимает элемент, брать левую-верхнюю клетку на сетке под элементом, отсчитывать от неё количество занимаемых элементов и проверять свободны ли они. Но какую модель нужно разработать, чтобы она была универсальна? Можете подсказать, или показать?

Старый 21.10.2011, 00:30
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Понятно. Нет, в Сталкера не играл, но в Диабле и Невервинтере такой же принцип, с ними я знаком. Лучше конечно, не городить огород, а сделать все итемы однослотными, как в иных играх - и производить оценку по "весу" + количеству слотов (в Линейке и других MMORPG, например, так). Это на много бы упростило вам мат. модель инвентаря.
А уж если на то пошло, и хочется как-то учитывать габариты итемов, то игрока стоило бы разгрузить от перепаковки инвентаря и производить ее автоматически всякий раз при получении итема. Тогда задача тоже бы упростилась.
Но это ваше, конечно, дело.

По сути есть две части задачи: автоматический прием очередного итема в сразу "правильное" место при поднятии и расстановка итемов игроком.

Что касается второго, то нужно создать "двумерный" массив, отражающий инвентарь и при добавлении в него итема производить запись в соотв. клетки значения, можно простое булево true. При попытке опустить итем в слоты определять позицию элементов в "двумерном" массиве и делать их проверку на true по заданной конфигурации. Если не понимаете, как эмулируется двумерный массив в AS2, почитайте или спросите, если не поймете.

Что касается первого, т.е. алгоритма оптимальный автоматической укладки, сейчас не смогу ничего выдать, возможно, кто-то подскажет.
__________________
Идите первым!

Старый 21.10.2011, 00:37
Alex626 вне форума Посмотреть профиль Отправить личное сообщение для Alex626 Найти все сообщения от Alex626
  № 7  
Ответить с цитированием
Alex626

Регистрация: Sep 2010
Сообщений: 167
Спасибо!

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

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

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


 


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


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