forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Как передать переменные типа в функцию (http://forum.boolean.name/showthread.php?t=15613)

mauNgerS 07.10.2011 11:50

Как передать переменные типа в функцию
 
Нужно передать в функцию переменные типа и после изменения вернуть их.

Код:

Type bot
  Field xbot
  Field ybot
End Type

For b.bot=Each bot
  Move(b\xbot,b\ybot)
Next

Function Move(x,y)
  x=x+1
  y=y+1
End Function

Перебор типа внутри функции не подходит.
Переменных больше чем в этом примере.

HolyDel 07.10.2011 12:08

Ответ: Как передать переменные типа в функцию
 
Код:

For b.bot=Each bot
  Move(b)
Next

Function Move(b.bot)
  b\xbot=b\xbot+1
  b\ybot=b\ybot+1
End Function

кажется как-то так.

mauNgerS 10.10.2011 11:44

Ответ: Как передать переменные типа в функцию
 
Еще вопрос.
Как сделать эту функцию универсальной, чтобы можно было в ней передать любой тип.

Например типы bot и bot1 имеют много не одноименных переменных
Но есть и одноимённые, с ними и надо произвести действия

Код:

Type bot
  Field privet
  Field poka
  Field id
End Type

Type bot1
  Field kino
  Field doroga
  Field id
End Type

For b.bot=Each bot
  Move(b)
Next

For a.bot1=Each bot1
  Move(a)
Next

Function Move(???)
  ??? нужно изменить id
End Function


impersonalis 10.10.2011 11:56

Ответ: Как передать переменные типа в функцию
 
Например (в частности, если не хочешь просто описать различных ботов одним типом), создать прослойку типа
type unibot
field b1.bot
field b2.bot
end type
или
type unibot
field BotHandle%
field BotType%
end type

RBK 10.10.2011 12:09

Ответ: Как передать переменные типа в функцию
 
Сделай дополнительный общий тип для хранения передаваемых данных.
Код:

;общие данные
Type id_data
  Field id
  ;другие общие данные
End Type

Type bot
  Field privet
  Field poka
  Field id.id_data
End Type

Type bot1
  Field kino
  Field doroga
  Field id.id_data
End Type

For b.bot=Each bot
  Move(b\id)
Next

For a.bot1=Each bot1
  Move(a\id)
Next

Function Move(m.id_data)
  m\id = 8 ;задаем новое значение
  ;m\(другие значения) - меняем другие общие значения
End Function

p.s. пока писал, impersonalis предложил ещё два других варианта, всего теперь три разных решения :)

HolyDel 10.10.2011 12:59

Ответ: Как передать переменные типа в функцию
 
отнаследуй от общего типа bot. ах да, это же блиц((

SBJoker 10.10.2011 13:03

Ответ: Как передать переменные типа в функцию
 
Угу, в бмаксе это тоже есть.

mauNgerS 12.10.2011 05:10

Ответ: Как передать переменные типа в функцию
 
Еще вопрос, уже не по теме, чтоб не делать новую пишу сюда.

Нужно ли перед командами

Код:

Delete b

Delete Each bot

приравнивать все переменные нулю.

Если это меш или картинка, то все понятно (надо удалить)
А если это просто число?

Nex 12.10.2011 07:32

Ответ: Как передать переменные типа в функцию
 
Поидее не надо ибо это все хранится в типе, а командой Delete b мы удаляем все это дело, а вот картинки и меши надо отдельно удалять ибо они хранятся в памяти, а в типе на них только ссылки.

Kudesnic 24.10.2011 15:08

Ответ: Как передать переменные типа в функцию
 
Извиняюсь, что вмешиваюсь в разговор) Но меня давно интересует вопрос:
Если удалять только родительский объект (с помощью FreeEntity), то дочерние объекты удалятся из памяти?
Или нужно всетаки удалять каждый объект поотдельности?

H@NON 24.10.2011 15:27

Ответ: Как передать переменные типа в функцию
 
удаляются


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

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