![]() |
помогите розставить АПТЕЧКИ
есть 2-мерный масив скоординатами по Х и У.
в масиве 15 значений т.е. Dim(15,2). есть 5 аптечек которые должны случайно аоявлятся в одной из позиции которая задана в масиве т.е. PositionEntity apteka, masiv(rand(0,14),0),0,masiv(rand(0,14),1). но проблема в том что бы они не появлялись в одном и том же месте !! |
Re: помогите розставить АПТЕЧКИ
попробуй забивать ячейку массива 1 - забито, 0 - нет. И проверять...
Идея сумбурна ногами не пинать ( |
Re: помогите розставить АПТЕЧКИ
чёто не понял : масив сделать 3-х мерным для етогоже обозначения (занято - пусто) или ещо новый сосдать ??
|
Re: помогите розставить АПТЕЧКИ
А что массив то? У тебя masiv(rand(0,14),1)=какойто пивот? Если да тогда так:
PositionEntity apteka,entityx(masiv(rand(0,14),0)),0,entityz(masi v(rand(0,14),1)) |
Re: помогите розставить АПТЕЧКИ
IGR
Да, лучше сделать еще 1 массив если первый массив как флоат#, или дополнительное измерение если первый массив целочисленный, и проверять 1\0 ЗЫ А вообще аптечки и проч фигню лучше расставлять в редакторах :) |
Re: помогите розставить АПТЕЧКИ
Редактор конечно рулит, но можно сделать очень просто. При добавлении новой аптечки, проганяй все уже созданные и проверяй не совпадают ли координаты. Если совпадают, то Goto на начало создания :)
|
Re: помогите розставить АПТЕЧКИ
Raiter, и того если у нас будет около 1000 мест, и 999 оптечек, блиц будет искать этот 1. :)
Нада в корне проверять. |
Re: помогите розставить АПТЕЧКИ
Чел ить сказал конкретно, что у него 5 аптечек :) При таком количестве это очень простой выход из ситуации. Но вообще конечно же нужно всё это в редакторе делать.
|
Re: помогите розставить АПТЕЧКИ
Чтобы не попадать на уже использованные данные из массива координат, создай массив индексов. Одномерный массив на 15 элементов, который содержит индекс от 0 до 14. Есть два варианта:
1. Индексы расположены по порядку. Случайным образом выбирается номер элемента, по этому номеру берется индекс, по индексу идет обращение к массиву координат. При этом в массиве индексов элемент удаляется, все последующие сдвигаются влево, а переменная, которая хранит количество доступных индексов, уменьшается на 1; 2. Заполнять массив индексов случайными числами (проверяя, чтобы не было совпадений). Тогда потом достаточно пройтись последовательно по элементам массива и расставить аптечки. |
Re: помогите розставить АПТЕЧКИ
to alcoSHoLiK:
смысл 2-го способа не понял вообще !! а первый не до конца понял как реализовать !! ТИПА: "...по индексу идет обращение к массиву координат." !! |
Re: помогите розставить АПТЕЧКИ
Код:
const NUM_HEALTH_PACKS = 15 Код:
Function PlaceHealthPacks(num%) Код:
Function PlaceHealthPacks(num%) |
Re: помогите розставить АПТЕЧКИ
а если так:
type apt field ent,num end type Dim aptPOZ(15,3) function CRT_apt() n=Rand(0,14) if aptPOZ(n,2)=0 aptPOZ(n,2)=1 a.apt = new apt a\ent = createcube() positionentity a\ent,aptPOZ(n,0),0,aptPOZ(n,1) a\num = n endif end function проверьте кто может !! а то я не могу у меня с компом проблемы !! |
Re: помогите розставить АПТЕЧКИ
ну
Цитата:
|
Re: помогите розставить АПТЕЧКИ
IGR, если у тебя не получается реализовать способы с индексами, делай, как я говорил....
|
Re: помогите розставить АПТЕЧКИ
ну дык, то что в 12 посте работать будет ??
|
Часовой пояс GMT +4, время: 08:46. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot