forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   BlitzMax (http://forum.boolean.name/forumdisplay.php?f=104)
-   -   Перевод из b3d в bmax. простой вопрос (http://forum.boolean.name/showthread.php?t=8088)

Данил 30.03.2009 21:50

Перевод из b3d в bmax. простой вопрос
 
Вот в упор не помню , как перевести тип из б3д в бмакс.

Цитата:

For t1.CSGTriangleTYPE = Each CSGTriangleTYPE
If t1\mindex = 2
For t2.CSGTriangleTYPE = Each CSGTriangleTYPE
If t2\mindex = 1 And t2\tarid <> t1\id
If t2\del = 0
If CSGTrisIntersect(t1,t2) = 1
CSGSplit t1,t2
EndIf
EndIf
EndIf
Next
EndIf
Next
цитата из б3д.

как перевести на ксорс под бмаксом.

Цитата:

For t1:CSGTriangleTYPE = EachIn CSGTriangleTYPE
If t1.mindex = 2
For t2:CSGTriangleTYPE = EachIn CSGTriangleTYPE
If t2.mindex = 1 And t2.tarid <> t1.id
If t2.del = 0
If CSGTrisIntersect(t1,t2) = 1
CSGSplit t1,t2
EndIf
EndIf
EndIf
Next
EndIf
Next
так не сканает, он орет.

Простой вопрос - Нужно создавать тлист для этого? или можно это обойти? Просто создавать тлист очень проблематично будет.

SBJoker 30.03.2009 22:36

Ответ: Перевод из b3d в bmax. простой вопрос
 
В BlitzMAX в отличие от B3d "правильные" типы, они скорее уже классы.
Код:

Type Class_Name 'называем наш тип/класс
    Field object_var:String ' поле, тип переменной String
    Global gvar:Int 'общая для всех объектов этого типа переменная

    Function GetGvar:Int() 'статическая функция, т.е. оступна по имени типа/ класса
        return gval              'например так: Class_Name.GetGval()
    End function

    Method GetField:String() 'метод класса, доступен только посредством объекта,
        'имеет прямой доступ к полям класса относящимся к текущему объекту.
        ' например: Local g:Class_Name=new Class_Name; g.GetField()
        return object_var
    End function

    'есть 2 уникальных метода New и Delete
    'New - конструктор этот метод если он есть вызывается автоматически при создании нового объекта этого типа.
    'Delete - деструктор, вызывается автоматически при удалении из памяти объекта этого типа
End type 'завершаем

'переменные нашего типа создаются с помощью ключевого слова New:
Local obj:MyType=new MyType 'дословно: создать новую локальную переменную типа MyType. При это для этой переменной будет вызван метод New если он есть.

Удаление переменной:
obj=Null

------
А теперь о методах хзранения полученых переменных, независимо от типа, наш ли он или встроеный, переменные можно хранить в:
* Единичной переменной ( Local a:int=15 или Local obj:MyType=new MyType)
* В массиве: Local a:int[]=new int[100] или Local obj:MyType[]=new MyType[100]
* В кольцевом списке: Local list:TList=new TList; list.AddLast("Hello")
* В индексированом списке: Local dict:TMap=New TMap; dict.Insert(obj, "First")

Данил 30.03.2009 22:46

Ответ: Перевод из b3d в bmax. простой вопрос
 
Ну, собсно, SBJoker, ты крут )... расписал все, что не просил, по сути)... просто я давно не связывался с типами б3д, и собсно ,все там забыл... как и в бмакс, так как программирование на полгода бросал, в бмаксе подзабыл...)

в общеМ, все-таки , думаю, способа обойти нету, заменил.

Сдался, по сути.)

Данил 30.03.2009 23:06

Ответ: Перевод из b3d в bmax. простой вопрос
 
В общем. перевожу булеановские функции с б3д на бмакс под ксорс.

Загнулся на xCountSurfaces , не видит меш ,и все. (

Думаю, код кидать бессмысленно, думаю, никто не захочет разбираться в 25 кб писанине...

но кину, надежда умерает последней.

HolyDel 30.03.2009 23:14

Ответ: Перевод из b3d в bmax. простой вопрос
 
Цитата:

* В индексированом списке: Local dict:TMap=New TMap; dict.Insert(obj, "First")
ух ты. в блицмаксе даже такое есть. а он крут!

SBJoker 31.03.2009 01:00

Ответ: Перевод из b3d в bmax. простой вопрос
 
В блитзмаксе всё есть, а чего нет можно на нём же и написать :)

dimanche13 31.03.2009 11:42

Ответ: Перевод из b3d в bmax. простой вопрос
 
Цитата:

Сообщение от SBJoker (Сообщение 102310)
В блитзмаксе всё есть, а чего нет можно на нём же и написать :)

подписываюсь.

SBJoker 31.03.2009 12:50

Ответ: Перевод из b3d в bmax. простой вопрос
 
э.х. забыл про наследование классов написать...
Кароче есть наследование классов, например:

Type MyExType Extends MyBaseType

End Type

После наследования класс нового типа всегда можно присваивать переменным базового типа, пользоваться локальными переменными базового типа как своими собственными. Пользоваться методами базового типа, если они не переопределены в текущем. В любом случае доступ даже к переопределёному методу базового класса возможен через объект Super. Например:
Super.DoMethod()

Доступ к свои методам помимо указания их имени, возможен посредством объекта Self. Например:
Self.DoMethod()

Эти возможности восновном для исключения неопределённости.

Зачем нужно наследование? Для расширения возможностей базового класса.
Например базовый класс Unit можно расширить до конкретных класов TSolder, TAircraft, TTechnic

В которых будут учтены особенности этих типов юнитов. Однако их можно все поместить в один список или массив и обрабатывать однотипно. Т.к. они фактически одного типа.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot