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

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

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

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 26.08.2006, 00:14   #1
jimon
 
Сообщений: n/a
TYPE, теория, теория и еще раз Теория... только теперь для новичков

или то что учат сами .. в пихнем в вам в рот разжованое и ..
ТУТ НИКАКИХ ПРАКТИЧЕСКИХ ПРИМЕРОВ
ТОКА ТЕОРИЯ - ВСЕ ОСТАЛЬНОЕ .. эх.. ! RTFM !
все ето для того чтобы вы поняли что ето и зачем


что такое type ?

теоритически с внешней стороны type ето тип переменой (ето я из pascalя выучил)
но на blitz3d и языках выше (C++) type (или его подобие - struct)
ето уже что-то полутче чем просто тип переменой
хотя для пользователя все же ето только тип переменой с дополнительными фичами

обычные типы переменых - например int
предположим что существует некоторый тип переменой int2
такой тип переменой содержит в себе два int'а которые могут содержат разные значение
(т.е. не зависят друг от друга но принадлежат одной переменой)

теперь представим что у нас есть теоритический масив :
dim MYVAR_int2_ (255)

в масиве под названием MYVAR есть 256 переменых типа int2
то есть 512 intов в итоге (каждая переменая из MYVAR содержит два int'а)
и теперь самое главное - мы можем прочитать и изменить любой из етих intов !

думаю в общем ето понятно ?

теперь как работает type именно в blitz3d
как мне извесно, type система в blitz3d основана внутри на связаном списке

простым языком обьясню что такое связаный список
(действительно обладая только средствами blitz3d обьяснить ето сложно - нужны указатели)

предположим что у нас есть "динамический" массив MYDIM
и существует ряд функций позволяющий в любой момент провести с етим массивом такие операции :
1) добавить новый елемент в конец,начало,в любую позицию масива (все остальные елементы автоматически "перемещаются")
2) удалить любой елемент массива, где бы он небыл
3) прочитать любой елемент массива

вы думаете тогда что функции 1 и 2 будут выполнятца медлено ?
вовсе нет ! они настолько быстры что делают где-то 10-15 комманд (и пару маленьких циклов)

идинственое что функция 3 будет слегка медленовата...
только вот тут и загвоздка - мы не можем просто так обратится к елементу номер 5 в связаном списке
тут нужно перебрать от начала все 4 елемента пока не дойдем то номера 5
но такие операции тоже довольно быстры (есть много мест для оптимизаций)

тоесть в общем мы получаем так сказать теоретически связаный список из переменых нашего типа
т.е. в любой момент мы можем провести операции 1,2,3
и в любой момент обратившись к содержимому самой функции изменить ее "внутрености"

сам type, или реальность и нереальность

что же нам type принес
к примеру :
type mla
field a1%
field a2%
field a3%
...
field aX%
end type
нам следует принимать mla как тип переменой (хотя ето частично для компилятора и нетак - но ето уже особенности asm программирования)

мы имеем переменую с типом mla, к примеру VAR1
для нас существует внешне только VAR1...
но мы можем обратится к ней и изменить или прочитать любой a1,a2,a3,..,ax !

а теперь представим что VAR1 ето масив..
мы имеем теперь неизменяемое количество переменых типа mla... и у каждой переменой мы можем изменить или прочитать a1,a2,a3,..,ax

а теперь .. мы имеем динамический масив VAR1 !
мы можем проводить операции 1,2,3 над ним
(следует заметить что такой масив изначально внутри языка пуст и содержит только сервисную инфу - 2 int'а, хотя может быть и больше)

а зачем ето все ?

чтобы было удобнее программировать !

вот к примеру вполне реальны конструкции типа :
dim MyNpc__Npc_AiStatus%(MAX_NPC)
dim MyNpc__Npc_...%(MAX_NPC)
dim MyNpc__Npc_...%(MAX_NPC)
dim MyNpc__Npc_...%(MAX_NPC)

человеческая логика пошла дальше :
мы придумываем тип переменой MyNpc куда скидываем все переменые Npc_AiStatus и тд
и получаем
dim Npcs_MyNpc_(MAX_NPC)

а что если мы заранее не знаем максимальное количество возможных npc ?
и вообщем ЗАЧЕМ выделять под них память ?
вот зачем тратить память под 600 npc когда на карте бегает 5 ?
для етого и придумали связаный список

вообщем я думаю теоретически тут все понятно
а вот практически пока хз
мож если еще раз прийдет такая жалость к другому прогеру
то и практический тутор на калякаю
и ваще могу связаные списки на низкоуровневой структуре описать
типа в представлении jimonа vs microsoft

напечатано jimon publishing по заказу F@nt
all rights (c) !
 
Ответить с цитированием
Старый 26.08.2006, 00:38   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: TYPE, теория, теория и еще раз Теория... только теперь для новичков

Касательно введения (только введения) в структуры Б3Д, а также использование и анологии связанных списков - http://www.boolean.name/showthread.php?t=1253
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 26.08.2006, 00:58   #3
jimon
 
Сообщений: n/a
Re: TYPE, теория, теория и еще раз Теория... только теперь для новичков

[offtop слегка]
предлагаю топики направления разжовывания "очевидных" вещей
(вещи то очевидные... тока вот на asm по ним можно толмуд в пару томов писать)
приписывать к серии "теория, теория и еще раз Теория... только теперь для новичков"

просто название то появилось само собой при писании
а теперь подумал, оказывается что так довольно много
статей написать можно
[/offtop слегка]
 
Ответить с цитированием
Старый 26.08.2006, 01:00   #4
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: TYPE, теория, теория и еще раз Теория... только теперь для новичков

Сообщение от jimon
вообщем я думаю теоретически тут все понятно
а вот практически пока хз
Практические примеры можно найти в справке Блица (http://boolean.name/showthread.php?t=10) и тут.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ищу книгу. Компьютерная анимация. Теория и алгоритмы Рик Пэрент H@NON Болтовня 10 10.02.2009 23:10
Теория вероятности Atomikc Болтовня 4 12.10.2008 03:17
Специальная Теория Относительности - материальчик Serendipity Физика 2 12.10.2007 19:49
Матаматическая теория охоты MiXaeL Юмор 2 19.11.2006 13:19
Теория вероятностей и математическая статистика impersonalis Математика 6 24.10.2006 22:09


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


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