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

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

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

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

Ответ
 
Опции темы
Старый 03.02.2009, 23:14   #1
ELIAS
Знающий
 
Аватар для ELIAS
 
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений
(для 6 пользователей)
Печаль Type and etc...

Type My
Field entity
Field scalex#, scaley#, scalez#
End Type

Type Enemy
Field entity
Field scalex#, scaley#, scalez#
End Type

Type Other
Field entity
Field scalex#, scaley#, scalez#
End Type

Type Flow
Field entity
Field scalex#, scaley#, scalez#
End Type

///////Цикл//////////////////////////////////////////
selecting = выделенный объект
seltype$ = название типа(именно название - текстовая переменная)
num = номер объкта в типе

if seltype="My"
    for i.my=each my
       if selecting=i\entity then i\scalex=i\scalex+1 : scaleentity selecting, i\scalex, i\scaley, i\scalez
    next
elseif seltype="Enemy"
    for i.enemy=each enemy
       if selecting=i\entity then i\scalex=i\scalex+1 : scaleentity selecting, i\scalex, i\scaley, i\scalez
    next
elseif seltype="Other"
    for i.other=each other
       if selecting=i\entity then i\scalex=i\scalex+1 : scaleentity selecting, i\scalex, i\scaley, i\scalez
    next
elseif seltype="Flow"
    for i.flow=each flow
       if selecting=i\entity then i\scalex=i\scalex+1 : scaleentity selecting, i\scalex, i\scaley, i\scalez
    next
endif
///////Цикл//////////////////////////////////////////
Ну вот примерно такой код у меня сейчас... И если с четырмя типами это ещё терпимо, то с например если будет 50 типов, это никуда не годится!!!... Как то надо приспособить по сути ОДИНАКОВЫЙ код ко всем типам, к тому же как видно и типы тоже однотипны клмбр...
Как мне быть??? Заранее спасибо!
Уверен вариантов решения проблемы или не одного или несколько...во втором случае хотелось бы узнать хотябы вкратце про каждый . лучше кодом конечно, но и на словах если будет, тоже хорошо!
(Offline)
 
Ответить с цитированием
Старый 03.02.2009, 23:30   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Type and etc...

type MyObject
field strtp$
Field entity
Field scalex#, scaley#, scalez#
end type
    for i.myObject=each myObject
if strtp = seltype
       if selecting=i\entity then i\scalex=i\scalex+1 : scaleentity selecting, i\scalex, i\scaley, i\scalez
endif
    next
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
ELIAS (05.02.2009), NitE (04.02.2009)
Старый 04.02.2009, 22:48   #3
ELIAS
Знающий
 
Аватар для ELIAS
 
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений
(для 6 пользователей)
Ответ: Type and etc...

Я об этом тоже думал... нуууууу...ну это не решение проблемы впринципе в моём случае((( Понимаешь, HolyDel, у типов по сути только свойство scale и совпадают, а потом масса различных свойств у каждого типа... Так что это нехорошо всё объединять в один тип, нехорошо...

ЗЫ: админы, извиняюсь, а нельзя мне ник поменять на ILIONSE ???
(Offline)
 
Ответить с цитированием
Старый 04.02.2009, 23:02   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Type and etc...

Холидел верно тебе всё написал. Незачем копировать тонны одинакового в создании и обновлении - надо стремиться к объединению. Вообще в чистом виде твоя задача решается с помощью ООП, которого в Блитз3Д нет (есть в БМакс) - там наследовать надо от базового типа все остальные. НУ а тут я бы рекомендовал объединять всё что можно. Но не в один тип, а лучше в несколько - Player - все игроки и враги, GameObjects - всякие там осколки и т.п. - ну короче смотри по ситуации.
Да, и _не_используй_ строковые переменные, если их не видит игрок (ибо хоть при нынешних объёмах ОЗУ ощутимого различия не будет но всё же строки жрут намного больше интов и обрабатываются медленнее). В данном случае seltype можно сделать целочисленной и прописать константы
Const My = 1, Enemy = 2 и т.д. а далее проверять на равенство константам - If seltype = Enemy then...
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
ELIAS (05.02.2009), Slepetc (21.02.2009)
Старый 04.02.2009, 23:12   #5
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Type and etc...

ELIAS, тогда никак. в блице шаблонов нет, препроцессора нет, виртуальных функций нет, наследования нет

Последний раз редактировалось HolyDel, 05.02.2009 в 00:00.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
ELIAS (05.02.2009), Slepetc (21.02.2009)
Старый 04.02.2009, 23:50   #6
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Type and etc...

Сообщение от HolyDel Посмотреть сообщение
ELIAS, тогда никак. в блице шаблонов нет, препроцессора нет, виртуальных функций нет, наследования нет.
и самое ужасное - нет pattern matching'a, а без него сейчас ну просто никуда
(Offline)
 
Ответить с цитированием
Старый 05.02.2009, 10:49   #7
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Type and etc...

можно попробовать так:
Type Object
    Field Tip
    Field p.player, b.bot, t.thing
End Type
Const OBJ_PLAYER=1, OBJ_BOT=2, OBJ_THING=3

Type Player
    Field mesh, healph, power...
End Type

Type Bot
    Field mesh, healph, power, level
End Type

Type Thing
    Field mesh, tip
End Type

For o.object = each Object
    Select o\Tip
         case OBJ_PLAYER
              UpdatePlayer(o\p.player)
         case OBJ_THING
              UpdateThing(o\t.Thing)
         case OBJ_BOT
              UpdateBot(o\b.Bot)
    End Select
Next
пусть и лишний тип создается, зато все навиду и компактно.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо H@NON за это полезное сообщение:
ELIAS (05.02.2009), HolyDel (05.02.2009), IGR (05.02.2009), Nex (26.02.2009)
Старый 05.02.2009, 19:19   #8
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Type and etc...

H@NON, спасибо !!
Это можно сказать некий вариант реализации наследия !!
(Offline)
 
Ответить с цитированием
Старый 05.02.2009, 19:34   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Type and etc...

Во-первых, используете служебные имена в кач-ве имён переменных - так нельзя.
Во-вторых:
Type Object_
    Field Tip
   Field Handle_%
End Type

Const OBJ_PLAYER=1, OBJ_BOT=2, OBJ_THING=3

Type Player
    Field mesh, healph, power
End Type

Type Bot
    Field mesh, healph, power, level
End Type

Type Thing
    Field mesh, tip
End Type

For o.Object_ = Each Object_
    Select o\Tip
         Case OBJ_PLAYER
		Local Plr.Player=Object.Player(Handle_)
              UpdatePlayer(Plr)
         Case OBJ_THING
		Local Thi.Thing=Object.Thing(Handle_)
              UpdateThing(Thi)
         Case OBJ_BOT
		Local Bt.Bot=Object.Bot(Handle_)
              UpdateBot(Bt)
    End Select
Next
вывод - размер струкутры-интерфейса Object_ имеет константный sizeof для лбого кол-ва типов; внедрение новых объектов хранения реализуется в двух,а не в тёрх местах кода (1 - добавить константу - код_типа, 2- дописать ещё один case в селекторе).
Минус - за счёт type cast`а int->ptr* (разумеется - это условность, аналогия) тратится немного больше времени.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
H@NON (05.02.2009), Nex (26.02.2009)
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Type in Type Taugeshtu 2D-программирование 7 18.09.2009 08:36
Вопросик про TYPE TEHb08 Blitz3D 15 09.01.2009 23:06
Type - вопросы zheland BlitzMax 8 20.04.2008 19:10
Type, Function и т.д. Тарас Шевченко 2D-программирование 14 12.02.2007 17:09
Dim vs Type HolyDel 3D-программирование 13 08.10.2006 14:30


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


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