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

Принятый ответ

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

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

4
28
5 лет назад
4
Так сказать пища для размышления
от 1-го 2 смещения вправо
от 2-го 2 смещения вниз
от 3-го 2 смещения влево
от 4-го 2 смещения вверх
Алгоритмов может быть несколько, от циклов с проверкой текущего номера куба, до простого назначения переменных
Загруженные файлы
0
26
5 лет назад
0
Выбираешь центр чёрного квадрата и от него проверяешь проходимость/чёрный_квадрат по четырём сторонам и диагонали, если чисто, то помещать красный квадрат.
цикл А от 0 до 7
Если логическая_переменная равно Да, То равно Нет, Иначе равно Да
Если точка (полярная координата (положение чёрного квадрата) расстояние (Если логическая_переменная равно Да, То 256.00, Иначе 362.04) угол (45хА(цикл))
0
28
5 лет назад
0
8gabriel8, смещение по диагонали больше, чем обычное. Угловые придётся дополнительно проверять
Ещё не понял, почему цикл 45 градусов?
0
26
5 лет назад
0
Принцип такой, что если просто сторона, то смещение 256, а если диагональ, то смещение 362.04. Отслеживается сторона и диагональ логической переменной, а 362.04=корень(квадрат256+квадрат256).
0
28
5 лет назад
0
8gabriel8, 360/45 = 8, а квадратов 12
0
26
5 лет назад
0
Это если 4 чёрных квадрата за один считать, а не по отдельности.
0
28
5 лет назад
Отредактирован Феникс
0
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
Загруженные файлы
0
26
5 лет назад
Отредактирован 8gabriel8
0
Тут не закончил
логическая_переменная=Нет
цикл А от 0 до 7
Если логическая_переменная равно Да, То логическая_переменная=Нет, Иначе логическая_переменная=Да
Если точка (полярная координата (положение чёрного квадрата) расстояние (Если логическая_переменная равно Да, То 256.00, Иначе 362.04) угол (45хА(цикл)) проходима/отсутствует_чёрный_квадрат, То разместить в этой точке красный квадрат
0
28
5 лет назад
0
8gabriel8, Я всё ещё не вдупляю, почему повторений в цикле 8?
0
26
5 лет назад
0
Он нарисовал четыре чёрных квадрата, а не один большой. Информации предоставил мало, потому исходил из картинки, что надо делать алгоритм появления красных квадратов вокруг чёрного, чтобы не появлялись красные на чёрных. Иначе это стандартная расстановка при найме юнитов в здании.
0
28
5 лет назад
0
8gabriel8, Я полагал, что чёрные - юниты/объекты внутри, а красные - юниты/объекты вокруг, вот собственно его задача была расстановка юнитов/объектов вокруг, но ты прав, нужно больше информации.
Принятый ответ
1
17
5 лет назад
Отредактирован ledoed
1
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 цикл где учитываться прямоугольность конструкции
0
28
5 лет назад
Отредактирован Феникс
0
ledoed, Ты же понимаешь, что для полного понимания картины нужно уточнить о чём собственно идёт речь, какие исходные данные есть и т.д. Подробнее опиши задачу.
Есть вариант:
x = номер углового квадрата
size = размер квадрата
countL = количество квадратов по длине //между угловыми
countH = количество квадратов по высоте //между между угловыми
length = DistanceBetweenPoints(x1, x2) - size
height = DistanceBetweenPoints(x1, x4) - size
countL =  lenght / size
countH = height / size
1
17
5 лет назад
Отредактирован ledoed
1
PrincePhoenix:
ledoed, Ты же понимаешь, что для полного понимания картины нужно уточнить о чём собственно идёт речь, какие исходные данные есть и т.д. Подробнее опиши задачу.
не учитываем смешение,в 0,0 координатах создаем прямоугольник из блоков,условно блок равен (1,1) тоесть чтобы создать поле 3х2 нужно затратить 6 блоков,и вокруг этого прямо-ка создать рамку ещё из квадратов тоесть стена,блок стены тоже размера (1,1)
DistanceBetweenPoints это x1*x1+x2*x2 под корнем?
0
28
5 лет назад
0
ledoed, вроде да, сейчас блокнот соображу открою
Уточни, имеются ли данные о количестве чёрных квадратов?
1
17
5 лет назад
Отредактирован ledoed
1
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
Чтобы оставить комментарий, пожалуйста, войдите на сайт.