Форум 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=83932)

swfSlavik 19.08.2006 16:40

Алгоритм расположения объектов
 
У меня есть поле 6Х6 клеток или масив клеток (nXn в идеале) и мне нужно на нем розместить 4 разных клипа (М в идеале) случайным образом да так чтобы они не соприкасались друг з другом ни по строчка ни по колонкам. Это можно зделать тупо, а можна и елегантно :cool: . Помогите зделать елегантно.

DarkLight 19.08.2006 16:45

А что для тебя есть тупо, что элегантно?
Первое, что приходит в голову, это рэндом через массивы [1, 2, ... n] сначала по горизонтали, потом по вертикали, из которых по мере установки клипа убираются неподходящие элементы...

swfSlavik 19.08.2006 16:55

2 DarkLight. Мне тоже это первое в голову пришло. Но дело в том что их должно быть определеннре количество 9 одного типа 9 другого и так далее. Тоесть поле 6*6 = 36, а обектов 4 и по 9 каждого тоже 36.

DarkLight 19.08.2006 17:05

А в чем проблема? Восстанавливаем массивы для каждого нового типа объектов, но уже без учета занятых клеток...

Snakesdesign 19.08.2006 17:07

Если решать в общем виде (поле nXn и объектов в сумме M), всегда ли n*n=M? вот в чем вопрос... или их всегда 36? Ну короче всегда ли поле будет полностью заполнено объектами?

swfSlavik 19.08.2006 17:27

2 Snakesdeign. Да поле должно быть всегда заполненно и обектов должно быит равное количество. Но проще решить пока задачу дл 6х6 и типов обектов 4 (36/4 = 9)

Snakesdesign 19.08.2006 17:48

ну... чисто алгоритм без кода будет я думаю такой... создаем двумерный массив 6 на 6, обнуляем его. Делаем цикл, пока хотя бы один элемент = 0, а внутри цикла ходим по горизонтали и вертикали и вставляем объекты, учитывая что они не должны соприкасаться, это я думаю не очень сложно... если посидеть, то и код можно придумать...

swfSlavik 19.08.2006 17:58

спасибо, у меня в принципе похожие мысли но как заставить положить ровно по 9 кождого обекта?

Snakesdesign 19.08.2006 18:03

вложенным циклом думаю... while i<>9... а там в нем проверяем все, если например в текущюю ячейку ниче поставить не получится (занята например), то i не получает инкремент, а если вставляем, то получает... ну это так навскидку.. не уверен точно как это все будет выглядеть

swfSlavik 19.08.2006 18:32

насколько я понял идею, должно быить 4 цикла или 4 масива для 4 типов обектов

Snakesdesign 19.08.2006 18:36

в принципе да.. первый цикл - проверяем все ли заполнены, два цикла - ходят по вертикали и горизонтали, и еще один чтоб 9 объектов вставлялось... массивов... ну во флеше нет двумерных вроде, значит его заменяем на 2 одномерных, один массив - объектов и 1 - поле... вроде бы все


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

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