Управление отдельными объектами из типа.
Мне нужно сделать генератор карт, использующий отдельно нарисованные комнаты. Механизм предельно прост: создание комнат идёт построчно с нумерацией и проверкой типа соседних комнат. Проблема в том, что EntityName не помогает обратиться к нужной комнате. Что делать?
|
Ответ: Управление отдельными объектами из типа.
Почитай про функции Handle и Object. Они позволят засовать в имя ентити хендл объекта, а потом получить по нему сам объект.
|
Ответ: Управление отдельными объектами из типа.
Что-то я ничего не понимаю :dontknow:
Нужно, чтобы перед созданием нового куба проверялся предыдущий. Почему-то кажется, что в коде полный бред написал. Что не так? Код:
Graphics3D 0,0,32,1 |
Ответ: Управление отдельными объектами из типа.
Вроде работает, но у меня ощущение, что я тут зря намудрил. Подскажете что-нибудь?
Код:
Graphics3D 0,0,32,1 |
Ответ: Управление отдельными объектами из типа.
Код:
Function CreateCubes() |
Ответ: Управление отдельными объектами из типа.
К сожалению, у меня нет возможности запустить код в блице, поэтому исхожу только из того, что прочитал.
PHP код:
Я сначала думал, ты по Entity хочешь найти свой объект T_cubes, так? Тогда я бы предложил засовать хендл в NameEntity для cube\ent вместо cube\hndl. Типа так: PHP код:
|
Ответ: Управление отдельными объектами из типа.
Мне нужно сделать новую систему координат, а т. к. с помощью handle и object можно обратиться к кубу только по числу, возможно беспроблемное определение типа соседних кубов, лишь задав их координаты. Если генерировать весь уровень просто построчно, то, вроде, можно обойтись без этих команд, привязываясь только к значению i, но я хочу генерировать сначала поверхность(для избежания выхода за пределы карты), а потом уже внутреннюю часть, поэтому число i не будет постоянно определённым...Или можно по-другому?
|
Ответ: Управление отдельными объектами из типа.
Так как поверхность скорее всего будет прямоугольная и непрерывная, лучше всего для нее создать двухмерный массив, в качестве значений использовать хендлы типа, хотя, имхо, это изврат:)
Кстати, может быть, массиву можно присвоить тип, но я этого в блитце никогда не делал... Код:
Type T_cubes Вообще лучше всего бросить блитц, и использовать PureBasic, например в связке с Xors3D или тем же самым B3D. В нем такая конструкция получится такого вида: Код:
Structure Cube |
Ответ: Управление отдельными объектами из типа.
Спасибо, пока буду разбираться с этим способом. :)
Вот только по задумке непрерывных поверхностей быть не должно. Сильно такой случай будет отличаться, или достаточно ещё рандом добавить? (Массив, как я понял, выполняет роль дополнительных координат) |
Ответ: Управление отдельными объектами из типа.
Да, я вот ещё заметил, что плохо использовать for...next в for...next, т.к. я текстом проверил: пишу координаты 10,5, а он мне выводит номер куба 95, а должно быть 50
|
Ответ: Управление отдельными объектами из типа.
Массив - для удобства обращений к типу через координаты:) Можно в массиве оставлять нулевые значения, а потом делать проверку If Map(x,y)=0 then в этом квадрате ничего нет.
|
Ответ: Управление отдельными объектами из типа.
Блин, for...next в for...next работает, только нужно местами x и y поменять :)
|
Ответ: Управление отдельными объектами из типа.
Так, как юзать Handle, я понял, а с командой Object что делать? Что-то не получается. По-моему, я с pointer-ом намудрил...:dontknow:
Код:
Function CreateCubes() |
Ответ: Управление отдельными объектами из типа.
If x = 1 And y = 1 надо поставить Or (а вообще надо пересмотреть это условие, поставить просто If x=1, вроде правильно будет), в строчке map(x - 1,y) может получиться ноль, когда x=1 и y=2 например.
|
Ответ: Управление отдельными объектами из типа.
Работает!!!!
Код:
Function CreateCubes() |
Часовой пояс GMT +4, время: 07:40. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot