кто нить знает алгоритм расположения обьктов как на скрине(красные квадраты),да и надо вообразить что там нету моей криворукости и все ровненько
черных квадратов может быть и 2х3,5х19,100х500,2х4 на скрине 2х2

8gabriel8, Я полагал, что чёрные - юниты/объекты внутри, а красные - юниты/объекты вокруг, вот собственно его задача была расстановка юнитов/объектов вокруг, но ты прав, нужно больше информации.
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Daniil18, если не знаеш не пиши не по тему!
Нашел буду мучать его в варик делать digspt.ru/topics/32
ответ
Причину нашел что раньше было "xe_RAWCODE_FOOD *-* count" поэтому давали не правильно, но путем поиска нашел причину и исправил на *+*
ответ
Я бы определял принадлежность центров квадрата некой окружности. Не так интуитивно-однозначно как проверка принадлежности всех точек квадрата окружности, но гораздо удобнее с точки зрения реализации. Далее для каждой строки поочередно прогоняем алгоритм заливки(в случае, если заливка подразумевает заливку текстурой почвы - стоит учитывать что каждый квадрат почвы имеет размеры 32/32 и центры мелких квадратиков имеют смещение в 16.), закрашивая почву в пределах новоопределенных ректов. Поочередно построчно, т.к. возможно у вас возникнет ситуация черное-белое-черное-белое и вторая строка (если весь массив прогонять подряд, а не построчно) начнется с черного квадрата. Не вижу каких-либо вытекающих неудобств при разработке..
ответ
Да как хочешь, главное, чтобы тебе и игрокам удобно было. Можно все коэфициенты складывать (то есть броня снижает на 40%, от огня защита 10%, итого урон от огня снижается на 50%), а можно перемножением (в этом случае будет снижение будет 46%).
Результат, сами понимаете, может быть разный.
От перестановки множителей произведение не меняется. Ведь это будет так.
damage * (1 - common armor %) * (1 - fire armor %)

29
Так сказать пища для размышления
от 1-го 2 смещения вправо
от 2-го 2 смещения вниз
от 3-го 2 смещения влево
от 4-го 2 смещения вверх
Алгоритмов может быть несколько, от циклов с проверкой текущего номера куба, до простого назначения переменных
Загруженные файлы
26
Выбираешь центр чёрного квадрата и от него проверяешь проходимость/чёрный_квадрат по четырём сторонам и диагонали, если чисто, то помещать красный квадрат.
цикл А от 0 до 7
Если логическая_переменная равно Да, То равно Нет, Иначе равно Да
Если точка (полярная координата (положение чёрного квадрата) расстояние (Если логическая_переменная равно Да, То 256.00, Иначе 362.04) угол (45хА(цикл))
29
8gabriel8, смещение по диагонали больше, чем обычное. Угловые придётся дополнительно проверять
Ещё не понял, почему цикл 45 градусов?
26
Принцип такой, что если просто сторона, то смещение 256, а если диагональ, то смещение 362.04. Отслеживается сторона и диагональ логической переменной, а 362.04=корень(квадрат256+квадрат256).
26
Это если 4 чёрных квадрата за один считать, а не по отдельности.
29
PrincePhoenix, Алгоритм немного другой, сейчас скину
Через полярки
integer x = 1
location pos = //ваш центр
real distance = //ваш размер квадрата
loop
exitwhen x > 12
    if x == 2 or x == 5 or x == 8 or x == 1 or then
        set pos = PolarProjectionBJ(pos, d*SquareRoot(2), 30*I2R(X)-15) 
    else
        set pos = PolarProjectionBJ(pos, d, 30*I2R(X)-15)
    endif
    set x = x + 1
endloop
На координатах
integer i = 1
real x //X центра
real y //Y центра
real distance //Размер стороны квадрата и одновременно смещение
loop
exitwhen i > 12
    if i == 2 or i == 5 or i == 8 or i == 1 or then
        set x = x + distance*Cos((30*I2R(i)-15) * bj_DEGTORAD)
        set y = y + distance*Sin((30*I2R(i)-15) * bj_DEGTORAD)
    else
        set x = x + (distance*SquareRoot(2))*Cos((30*I2R(i)-15) * bj_DEGTORAD)
        set y = y + (distance*SquareRoot(2))*Sin((30*I2R(i)-15) * bj_DEGTORAD) 
    endif
    set i = i + 1
endloop
Загруженные файлы
26
Тут не закончил
логическая_переменная=Нет
цикл А от 0 до 7
Если логическая_переменная равно Да, То логическая_переменная=Нет, Иначе логическая_переменная=Да
Если точка (полярная координата (положение чёрного квадрата) расстояние (Если логическая_переменная равно Да, То 256.00, Иначе 362.04) угол (45хА(цикл)) проходима/отсутствует_чёрный_квадрат, То разместить в этой точке красный квадрат
29
8gabriel8, Я всё ещё не вдупляю, почему повторений в цикле 8?
26
Он нарисовал четыре чёрных квадрата, а не один большой. Информации предоставил мало, потому исходил из картинки, что надо делать алгоритм появления красных квадратов вокруг чёрного, чтобы не появлялись красные на чёрных. Иначе это стандартная расстановка при найме юнитов в здании.
29
8gabriel8, Я полагал, что чёрные - юниты/объекты внутри, а красные - юниты/объекты вокруг, вот собственно его задача была расстановка юнитов/объектов вокруг, но ты прав, нужно больше информации.
Принятый ответ
17
PrincePhoenix:
8gabriel8, , нужно больше информации.
черных квадратов может быть и 2х3,5х19,100х500,2х4
мне самому кажется нужны 2 независимых цикла
for(int i=0;i<size.x;i++)
{
	posup = (-size.x/2 , 0)+(i,size.y)
	posdown =(-size.x/2 , 0)+(i,-size.y)
}
и тоже самое заполнение по "y",только размер увеличить на 2 так как заполнить углы над,но это какойто костыльный метод
возможно есть алгоритм на полярных координатах за 1 цикл где учитываться прямоугольность конструкции
29
ledoed, Ты же понимаешь, что для полного понимания картины нужно уточнить о чём собственно идёт речь, какие исходные данные есть и т.д. Подробнее опиши задачу.
Есть вариант:
x = номер углового квадрата
size = размер квадрата
countL = количество квадратов по длине //между угловыми
countH = количество квадратов по высоте //между между угловыми
length = DistanceBetweenPoints(x1, x2) - size
height = DistanceBetweenPoints(x1, x4) - size
countL =  lenght / size
countH = height / size
17
PrincePhoenix:
ledoed, Ты же понимаешь, что для полного понимания картины нужно уточнить о чём собственно идёт речь, какие исходные данные есть и т.д. Подробнее опиши задачу.
не учитываем смешение,в 0,0 координатах создаем прямоугольник из блоков,условно блок равен (1,1) тоесть чтобы создать поле 3х2 нужно затратить 6 блоков,и вокруг этого прямо-ка создать рамку ещё из квадратов тоесть стена,блок стены тоже размера (1,1)
DistanceBetweenPoints это x1*x1+x2*x2 под корнем?
29
ledoed, вроде да, сейчас блокнот соображу открою
Уточни, имеются ли данные о количестве чёрных квадратов?
17
PrincePhoenix:
Так сказать пища для размышления
от 1-го 2 смещения вправо
от 2-го 2 смещения вниз
от 3-го 2 смещения влево
от 4-го 2 смещения вверх
Алгоритмов может быть несколько, от циклов с проверкой текущего номера куба, до простого назначения переменных
хаха как сам додумал до это вспомнил что гдето этот алгоритм видел
PrincePhoenix:
ledoed, вроде да, сейчас блокнот соображу открою
Уточни, имеются ли данные о количестве чёрных квадратов?
конечно есть они же строються 2м циклом
for(j)
	for(i)
		pos(-size.x/2+i,-size.y/2+j)
кол красных квадратов считаеться по формуле size.x * 2 + size.y * 2 + 4
Чтобы оставить комментарий, пожалуйста, войдите на сайт.