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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 29.01.2013, 23:56   #31
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: Искуственный интеллект

Конкретного ответа нет
пойду гуглить дальше
(Offline)
 
Ответить с цитированием
Старый 30.01.2013, 07:33   #32
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Искуственный интеллект

Сообщение от burovalex Посмотреть сообщение
Ну даже, чтобы пользоваться Астаром, надо научиться пользоваться подтипами.
Type npc
 Field entity
 Field target
 Field wp.waypoints
 End Type

 Type waypoints
 Field x#,y#,z#
 End Type

 Function CreateNPC()
 npc.npc=New npc
 End Function

 Function NewTarget()
For npc.npc.wp=Each npc.waipoints
;а здесь чтото не правильно, я хотел пройтись по типу waypoints в типе npc
 Next
 End Function
С чем у меня пока проблемы, вкурить не могу..
Блин, ну подскажите как пройтись по типу waipoints в типе npc
__________________
(Offline)
 
Ответить с цитированием
Старый 30.01.2013, 11:04   #33
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Искуственный интеллект

Чет я не понял, с трудом разобрался, так что получается.
Если в типе добавить еще один тип - то у них всё равно связи не будет?? 0_о

Получается в любом случае придётся проходить по всему списку и делать выборку?
__________________
(Offline)
 
Ответить с цитированием
Старый 30.01.2013, 12:07   #34
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Ответ: Искуственный интеллект

Сообщение от burovalex Посмотреть сообщение
Чет я не понял, с трудом разобрался, так что получается.
Если в типе добавить еще один тип - то у них всё равно связи не будет?? 0_о

Получается в любом случае придётся проходить по всему списку и делать выборку?
Может ты все-таки в справку заглянешь? В блиц-бейсике для структурных типов Type создается один глобальный список, поэтому обьявляя там поле с таким типом, ты будешь иметь лишь указатель (ссылка) на экземпляр, а все создаваемые оператором New экземпляры будут автоматически помещаться в этот глобальный список. Поэтому надо делать свой список, т.е. в твоем случае тип Waypoints должен иметь ссылку на следующий в списке, а тип npc иметь ссылку на начало списка. Гугли односвязный и\или двусвязный список чтобы понять как его строить. По сути список - та же очередь в действительности, где каждый элемент помнит того кто впереди него ( за кем занял ), и того кто позади ( кто за ним занял ). К слову в BlitzMax, который уже ближе к "взрослым" ЯП, есть такой механизм. По-моему тебе стоит бросить блиц-бейсик и юзать блиц-макс, к тому-же, раз ты юзаешь Xors3D, юзать его из BlitzMax будет правильно, все-таки блиц-бейсик намертво связан с блиц3д, и юзать один движок из другого - извращение, имхо.

ЗЫ
вот примерно как можно очередь сделать

; элемент очереди
Type Element
	
	; сзади по очереди
	Field BackElement.Element
	
	; впереди по очереди
	Field FrontElement.Element
	
End Type

; очередь
Type Queue
	
	; первый в очереди
	Field FirstElement.Element
	
	; последний в очереди
	Field LastElement.Element
	
End Type

;
; функция входа в очередь
;
Function EnterQueue ( Queue.Queue, Element.Element )
	
	;
	; спрашиваешь кто последний
	;
	If Queue\LastElement <> Null Then
		
		;
		; последний запоминает что ты за ним занял
		;
		Queue\LastElement\BackElement = Element
		
		;
		; раз ты последний, за тобой никого нет
		;
		Element\BackElement = Null
		
		;
		; запоминаешь того, кто перед тобой
		;
		Element\FrontElement = Queue\LastElement
		
	;
	; последнего нет - нет и очереди
	;
	Else
		
		;
		; раз очереди нет, ты первый в очереди
		;
		Queue\FirstElement = Element
		
	End If	
	
	;
	; занял очередь, теперь ты последний в очереди
	;
	Queue\LastElement = Element
	
End Function

;
; функция выхода из очереди
;
Function LeaveQueue ( Queue.Queue, Element.Element )
	
	;
	; сзади тебя кто-то есть, ты не последний в очереди
	;
	If Element\BackElement <> Null Then
		
		;
		; сообщаешь тому, кто занимал за тобой, что он теперь стоит
		; за тем, кто впереди нас
		;
		Element\BackElement\FrontElement = Element\FrontElement
		
	;	
	; сзади тебя никого нет, ты последний в очереди
	;
	Else
		
		;
		; сообщаешь тому, кто впереди нас, что он становится последним 
		; в очереди
		;
		Queue\LastElement = Element\FrontElement
		
	End If
	
	;
	; впереди тебя кто-то есть, ты не первый в очереди
	;
	If Element\FrontElement <> Null Then
		
		;
		; сообщаешь тому, за кем ты занимал, 
		; что за ним теперь не ты, а тот, кто занимал за тобой
		;
		Element\FrontElement\BackElement = Element\BackElement
	
	;	
	; впереди тебя никого нет, ты первый в очереди
	;
	Else
		
		;
		; сообщаешь тому, кто сзади тебя, что он теперь первый в очереди
		;
		Queue\FirstElement = Element\BackElement
		
	End If
	
End Function
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
burovalex (30.01.2013)
Старый 30.01.2013, 16:24   #35
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Искуственный интеллект

щас, я сначала пиками поизвращаюсь )), не попрёт - буду юзать связанные списки. Всё равно спасибо, взял на заметку )

А блитц я не брошу пока не закончу с проектом. Переделывать муторно, т.к. моя версия пока стабильна, не буду пока ее трогать.

З.Ы. Как говорит мой батя, "НЕ ТРОГАЙ НАЛАЖЕННО РАБОТАЮЩИЙ МЕХАНИЗМ" - блин, правда правд )
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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