Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 07.10.2011, 11:50   #1
mauNgerS
Разработчик
 
Аватар для mauNgerS
 
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений
(для 670 пользователей)
Как передать переменные типа в функцию

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

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
Перебор типа внутри функции не подходит.
Переменных больше чем в этом примере.
(Offline)
 
Ответить с цитированием
Старый 07.10.2011, 12:08   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Как передать переменные типа в функцию

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

Function Move(b.bot)
  b\xbot=b\xbot+1
  b\ybot=b\ybot+1
End Function
кажется как-то так.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
Colossus (07.10.2011), LLI.T.A.L.K.E.R. (07.10.2011), mauNgerS (07.10.2011), Nex (07.10.2011)
Старый 10.10.2011, 11:44   #3
mauNgerS
Разработчик
 
Аватар для mauNgerS
 
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений
(для 670 пользователей)
Ответ: Как передать переменные типа в функцию

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

Например типы 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
(Offline)
 
Ответить с цитированием
Старый 10.10.2011, 11:56   #4
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Как передать переменные типа в функцию

Например (в частности, если не хочешь просто описать различных ботов одним типом), создать прослойку типа
type unibot
field b1.bot
field b2.bot
end type
или
type unibot
field BotHandle%
field BotType%
end type
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
mauNgerS (10.10.2011), RBK (10.10.2011)
Старый 10.10.2011, 12:09   #5
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Как передать переменные типа в функцию

Сделай дополнительный общий тип для хранения передаваемых данных.
;общие данные
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 предложил ещё два других варианта, всего теперь три разных решения
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо RBK за это полезное сообщение:
impersonalis (10.10.2011), mauNgerS (10.10.2011)
Старый 10.10.2011, 12:59   #6
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Как передать переменные типа в функцию

отнаследуй от общего типа bot. ах да, это же блиц((
(Offline)
 
Ответить с цитированием
Эти 8 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
ANIK123 (19.12.2011), Dream (10.10.2011), falcon (11.10.2011), L-ee-X (10.10.2011), mauNgerS (10.10.2011), moka (12.10.2011), Reizel (10.10.2011), Reks888 (10.10.2011)
Старый 10.10.2011, 13:03   #7
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Как передать переменные типа в функцию

Угу, в бмаксе это тоже есть.
__________________
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
mauNgerS (10.10.2011), Reks888 (10.10.2011)
Старый 12.10.2011, 05:10   #8
mauNgerS
Разработчик
 
Аватар для mauNgerS
 
Регистрация: 10.10.2008
Сообщений: 501
Написано 258 полезных сообщений
(для 670 пользователей)
Ответ: Как передать переменные типа в функцию

Еще вопрос, уже не по теме, чтоб не делать новую пишу сюда.

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

Delete b

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

Если это меш или картинка, то все понятно (надо удалить)
А если это просто число?
(Offline)
 
Ответить с цитированием
Старый 12.10.2011, 07:32   #9
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Как передать переменные типа в функцию

Поидее не надо ибо это все хранится в типе, а командой Delete b мы удаляем все это дело, а вот картинки и меши надо отдельно удалять ибо они хранятся в памяти, а в типе на них только ссылки.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
mauNgerS (12.10.2011)
Старый 24.10.2011, 15:08   #10
Kudesnic
Нуждающийся
 
Аватар для Kudesnic
 
Регистрация: 27.08.2010
Адрес: Лен. область
Сообщений: 58
Написано 21 полезных сообщений
(для 50 пользователей)
Ответ: Как передать переменные типа в функцию

Извиняюсь, что вмешиваюсь в разговор) Но меня давно интересует вопрос:
Если удалять только родительский объект (с помощью FreeEntity), то дочерние объекты удалятся из памяти?
Или нужно всетаки удалять каждый объект поотдельности?
(Offline)
 
Ответить с цитированием
Старый 24.10.2011, 15:27   #11
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Как передать переменные типа в функцию

удаляются
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо H@NON за это полезное сообщение:
ANIK123 (19.12.2011), Arton (29.10.2014), HolyDel (26.10.2011), Kudesnic (24.10.2011), LLI.T.A.L.K.E.R. (26.10.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com