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

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

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

Ответ
 
Опции темы
Старый 07.01.2010, 00:14   #16
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Function не дает имена

Ну до этого юзал ClearWorld() , Global'ы приходилось переписывать
Щас сделал по другому, работает без багов, только очистку уровня сделать надо
А вообще глобал это хорошая вещь И GOTO тоже, не знаю почему его так не любят
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
KingMaks (07.01.2010)
Старый 07.01.2010, 01:57   #17
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Function не дает имена

Я тут игру пытаюсь зделать, и думаю у меня гдето столько же глобалов будет.
Ето что плохо? почему?
Действительно, почему? Жрет больше памяти?
У меня в программе 6 global image. Чем это может быть плохо?
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 02:14   #18
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений
(для 3,006 пользователей)
Ответ: Function не дает имена

Почти любая глобальная ссылка на объект - говнокод.
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 02:18   #19
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Function не дает имена

Почему говнокод? В BlitzBasic - почти единственный способ обратиться к объекту из любой точки кода...

В таком случае вот такой код на Си, тоже говнокод:
int global=0;
int main(){
    return 
0;

__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 02:31   #20
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений
(для 3,006 пользователей)
Ответ: Function не дает имена

Сообщение от FireOwl Посмотреть сообщение
Почему говнокод? В BlitzBasic - почти единственный способ обратиться к объекту из любой точки кода...
Потому, что в нормальном проекте таких объектов быть не должно ) Ресурсы хранят в рес менеджерах, игровые обьекты в обычных типах и так далее.
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо EvilChaotic за это полезное сообщение:
ABTOMAT (07.01.2010), FireOwl (07.01.2010), Harter (07.01.2010), impersonalis (07.01.2010), Nex (07.01.2010), Randomize (20.01.2010)
Старый 07.01.2010, 02:32   #21
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Function не дает имена

В глобалы разве что настройки приложения можно выносить.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

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

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilChaotic (07.01.2010)
Старый 07.01.2010, 02:35   #22
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Function не дает имена

Я почему-то всегда считал что типы - удобное средство для создания и обработки неопределённого количества объектов. Остальное всегда храню в массивах и переменных.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 03:48   #23
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Function не дает имена

храните всё в глобалах - BlitzHack уже идёт за вами!
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 8 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
ABTOMAT (07.01.2010), Arles (07.01.2010), h1dd3n (07.01.2010), Harter (07.01.2010), is.SarCasm (07.01.2010), Phantom (03.03.2010), Randomize (20.01.2010), Reizel (07.01.2010)
Старый 07.01.2010, 13:53   #24
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Function не дает имена

resHack нам в помощь Не увидите наших глобалов
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 15:23   #25
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Function не дает имена

Сообщение от Павел Посмотреть сообщение
resHack нам в помощь Не увидите наших глобалов
КЭП ты где?
__________________
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 15:56   #26
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Function не дает имена

Global Mode=-1
Global group,window,statusbar,boxbutton,snaptoggle,viewwindow,toggleSolid,toggleWire,toggleEdged,modelbutton,mviewer,mviewcancel
Global mviewimport,propertieswindow,propXedit,propYedit,propZedit,propRXedit,propRYedit,propRZedit,modeMove,modeRotate,groupModels
Global timetouseimport,mviewplank,previewCam,mviewInsert,objwindow,groupObjects,mviewWithChildren,matedbutton,mateditor,matedclose

Global matNotSimple,matUseLighting,matUseAmb,matUseDiff,matUseLM,matUseRLM,matUseBump,matNoMips,matBright,matContrast,matHue,MatSaturation
Global matCR,matCG,matCB,matUseSpec,matSpec,matSpecPow,matUseEnv,matEnvInt,matAR,matAG,matAB,matUseRim,matRim,matRimPow,matPreDiff
Global matPreNS,matApply,matListWindow,groupMaterials,matListAdd,modeScale,propSXedit,propSYedit,propSZedit,DelayedPent,matMasked
Global matAlpha,mat2Sided,matExport,matImport,matListRename,matListDel,mviewarea,matListArea,objWindowArea,objWindowAreaM,objWindowAreaS
Global mviewRemove,mapbutton,mapwindow,mapclose,mapselectface,mapU,mapV,mapchangetimeout,mapUV,objdelete,matLambert,matHLambert
Global matOrenNayar,matAS,matPhong,matBlinn,matWI,matCT,groupMatDiff,groupMatSpec,anglesnap,renamewindow,rentextbox,renok,rencancel
Global matListRenaming,WorkedIn6Mode,mapPlanarMap,movingplane,mapUM,mapVM,matDepthmap,matParallax,matAlphaSlider,matRefract
Global FinalizingButton,FinalizingWindow,FinRender,FinCancel,Bhdrmap,Bhdrfile,Bhdrint,Bhdrblur,BGI,B1GI,B2GI,BFGRays,Bptpaths,Bptsize
Global BGI1_pm,BGI1_dpm,BGI1_pt,BGI1_fg,BGI1_mc,BGI2_pm,BGI2_dpm,BGI2_pt,BGI2_fg,BGI2_mc,lightbutton,lightwindow,lightcancel,lightlist
Global lightinsert,lightlistadd,lightlistremove,lightint,groupLights,lightR,lightG,lightB,lightShadRad,FinPreview,FinLoadLmaps,Bres
Global ProgressWin,ProgressBar,modeAlign,BGI1_None,BGI2_None,BGI1_Int,BGI2_Int,Bmcrays,Bphotons,BphotonRad,B_ar,B_ag,B_ab,BGIdiffint
Global B_aa,matOverdiff,FinAO,FinUW,Entitybutton,entwindow,entinsert,entcancel,entlist,groupEntities,ppbutton,ppwindow,ppclose,ppssao
Global matPaint,WorkedIn11Mode,PrtButton,PrtWindow,PrtCancel,PrtInsert,groupShapes,prtWall1,ActivePSys.PSystem,ActivePE.PEmitter
Global prtshiftx,prtshifty,prtshiftz,groupEmitters,PrtEArea,PrtSArea,PrtShapeSphere,PrtShapeCube,PrtSphereHotSpot,PrtSphereFalloff
Global PrtCubeBounds,PrtShapeAreaSphere,PrtShapeAreaCube,PrtCycle,PrtCDelay,PrtCDRnd,PrtMass,PrtLife,PrtLifeRnd,PrtRate,PrtTrails
Global PrtSoft,PrtDirX,GraphWindow,GraphBG,GraphClose,PrtDirY,PrtDirZ,PrtSize,PrtRotate,PrtAlpha,PrtRangeX,PrtRangeY,PrtRangeZ,groupPSystems
Global PrtSAdd,PrtModel,PrtMat,mviewHiddenOk,mviewHiddenSP,matListHiddenOk,PrtSRemove,PrtEAdd,PrtERemove,GraphExport,GraphImport
Global PrtImport,PrtExport,PrtAdditive,PrtMax,GraphXEdit,GraphYEdit,onMouse3,SelectedGraphPoint,ppssaopower,ppssaoscale,phywindow
Global phyclose,phygencol,phybutton,phythrow,phyhull,phytrimesh,phynone,DynWindow,DynClose,dyndyn,dynphys,dynmass,dynbutton
Global dynenable,dyngetback,matphysbutton,matphyswindow,matphysenable,matphysfriction,matphyshardtouch,matphyssofttouch,matphysbreakable
Global matphyshardsound,matphyssoftsound,matphysscrapesound,matphysbreaksound,matphysclose,matphysbullsound,matphysscrape,toolsbutton
Global toolswindow,toolsclose,toolsconvmtos,scriptbutton,scriptwindow,scriptnew,scriptsave,scriptcombobox,scriptdelete,scriptcreate
Global scriptcedit,scriptcok,scriptccancel,scriptarea,dynscript,dynchoosescript,dyncsarea,dyncsok,groupScripts,scriptglobal,bspwindow
Global bspbutton,bspclose,bspbuild,bspdebug,bspleafsarea,groupLeafs,bspshowallleafs,bspleafrename,primwindow,primcancel,primbox,primcyl
Global primsegs,propGlobal,propGWindow,propGClose,propGSkybox,propGSkyOn,propGOceanOn,phyboat,dboatWindow,dboatClose,dboatOn,phykeps
Global phymodel,pkeparea,pkepadd,pkepremove,pkepX,pkepY,pkepZ,pkepBuo,pkepLinDamp,groupKeps,pkeprenset,groupKepSets,pkepsetimport
Global phymcx,phymcy,phymcz,pkwindow,pkclose,pkepsetarea,pkepaddset,pkepdelset,pkepsetexport,dboatmaxdrag,dboatpower,groupBoats,dboatadd
Global dboatdel,dboatarea,dboatname,dboatdrivesound,dboatidlesound,dynai,aibutton,aiwindow,ainew,aicreate,aicedit,aicok,aiccancel,aicombobox
Global aisensing,aisensetypeslist,aisenseuse,aisensetypes,aisenseltypes,aisenselprops,aisenseaddtype,aisenseremovetype,aicondif,aicond1
Global aicondop,aicond2,aicondadd,aicondremove,aishedule,aitaskadd,aitaskremove,aitaskfunc,aitasktarget,aitaskparam,aisave,aidelete,aiimport
Global aiexport,dynchooseai,dyncaarea,dyncaok,groupAI,propGTeamsArea,propGTeamsAdd,propGTeamsRemove,teamcreate,teamcok,teamccancel,teamcedit
Global groupTeams,dynteam,dynchooseteam,dynctarea,dynctok,groupTeams2,propGTeamsAI,objrename,objrenamewin,objrenameedit,objrenameok,objrenamecancel
Global dboathealth,weapWindow,weapClose,weapdamage,weaprate,groupWeapons,weapadd,weapdel,weaparea,weapname,weapshootsound,weapreloadsound
Global weapammo,propGWeapButton,weapmodel,pmchoosePSystem,pmcparea,pmcpok,matphysparticles,groupPS,PrtBGColor,PrtBGR,PrtBGG,PrtBGB,filewindow
Global filecombobox,fileinsidelist,filereflist,fileleft,fileright,propGFile,ppssaofar,filemerge,toolscenterpivot,lightdirectional,lightpoint
Global lightspot,lightskylight,FinFastRender,toolsslice,toolsextrude,matanimbutton,matanimwindow,matanimclose,matanimwidth,matanimheight
Global matanimframes,matanimenable,matsphereframe,prtScaleX,prtScaleY,scriptclose,objwindowareae,entgroup,aiclose,matanimdelay,matspheretimeto
Global prtshiftxRND,prtshiftyRND,prtshiftzRND,GraphRNDEdit,prtBright,prtEmit,prtReset,prtTrail,prtUp,prtDown,prtPointalong,prtRed,prtGreen,prtBlue
Global prtNFR,FinImp,FinFRArea,FinFRBlur1,FinFRBlur2,FinPickAmb,LightPickColor,FinFRContrast,matphysdecals,matdecalbutton,matdecalclose
Global matdecalsize,matdecalwindow,matdecalenable,matblendbutton,matblendwindow,matblendclose,matblendalpha,matblendm2x,matblendm4x
Global phyheli,dheliname,dheliclose,groupHelis,dhelimaxdrag,dhelihealth,dheliarea,dheliadd,dhelidel,dheliwindow,matCPick,matAPick,PrtSDupl
Global PrtSRename

Global ShapeOffsetX#, ShapeOffsetY#, ShapeOffsetZ#, ShapeCenterX#, ShapeCenterY#, ShapeCenterZ#

Global CamNX#,CamNY#,CamNZ#

Global matsphere

поэтому я и забил на блиц
без оопа жизни нет

что больше всего бесит с глобалами, приходится их в памяти держать, чтобы случайно не заюзать где-то ещё думая что они локалы.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (20.01.2010)
Старый 07.01.2010, 17:18   #27
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Function не дает имена

О боже.
Кстати может кто нибудь напишет статью, как делать менеджер ресурсов? И как лучше "строить код"..
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 18:21   #28
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Function не дает имена

Вот вам мой менеджер, пользуюсь регулярно.
;====================================================================
; Project: Resource Manager 
; Version: 2.0
; Author: H@non
; Email: [email protected]
; Description:    менеджер ресурсов, следит за хранением их в системе,
;                   дает доступ по управлению, удобен при использовании
;                   локаций в игре.
;====================================================================


;-- тип для ресурсов
Type TResource
    Field path$
    Field ent
    Field tip
End Type
Const RES_MESH=1, RES_AMESH=2, RES_SND=3, RES_TEX=4, RES_SPR=5, RES_SND3D=6

;-- временный тип для удаления лишних ресурсов
;-- (удобен при переходе между локациями с одинаковыми ресурсами)
Type TResDel
    Field r.TResource
End Type


;-- Функция загружает указанный ресурс, либо если ресурс
;-- уже был загружен возвращает ссылку на него.
;Параметры: путь, тип, родитель, текстурные флаги
Function ResLoad(path$, tip, parent=0, texFlag=1)
    Local rf.TResource = Object.TResource(ResFind(path$))
    If rf <> Null Then Return rf\ent

    Local r.TResource = New TResource
    r\tip = tip
    r\path$ = Lower(path)
    Select r\tip
        Case RES_MESH
            r\ent = LoadMesh(path,parent)
            HideEntity r\ent
        Case RES_AMESH
            r\ent = LoadAnimMesh(path,parent)
            HideEntity r\ent
        Case RES_SPR
            r\ent = LoadSprite(path,texFlag,parent)
            HideEntity r\ent
        Case RES_SND
            r\ent = LoadSound(path)
        Case RES_TEX
            r\ent = LoadTexture(path,texFlag)
    End Select
    
    Return r\ent
End Function


;-- Дополнительная функция, работает также как ResLoad
;-- если ресурс повторяется, то заносим его в тип хранения
;Параметры: путь, тип, родитель, текстурные флаги
Function ResLoadPlus(path$, tip, parent=0, texFlag=1)
    Local rf.TResource = Object.TResource(ResFind(path$))
    If rf <> Null Then
        Local rd.TResDel = New TResDel
        rd\r.TResource = rf.TResource
        Return rf\ent
    EndIf
    
    Local r.TResource = New TResource
    r\tip = tip
    r\path$ = Lower(path)
    Select r\tip
        Case RES_MESH
            r\ent = LoadMesh(path,parent)
            HideEntity r\ent
        Case RES_AMESH
            r\ent = LoadAnimMesh(path,parent)
            HideEntity r\ent
        Case RES_SPR
            r\ent = LoadSprite(path,texFlag,parent)
            HideEntity r\ent
        Case RES_SND
            r\ent = LoadSound(path)
        Case RES_TEX
            r\ent = LoadTexture(path,texFlag)
    End Select
    
    Return r\ent
End Function

;-- Функция удаляет лишние ресурсы, которые
;-- не были помещены в тип хранения.
Function ResDeletePlus()
    Local r.TResource, rd.TResDel
    Local result%
    For r.TResource = Each TResource
        For rd.TResDel = Each TResDel
            If r = rd Then
                result = True
                Exit
            EndIf
        Next
        If result = False Then
            Select r\tip
                Case RES_MESH, RES_AMESH, RES_SPR
                    FreeEntity r\ent
                Case RES_SND, RES_SND3D
                    FreeSound r\ent
                Case RES_TEX
                    FreeTexture r\ent
            End Select
            Delete r
        EndIf
    Next
    
    Delete Each TResDel
End Function

;-- Функция ищет ресурс в списке и возвращает хендл на тип
;Параметры: путь_до_ресурса
Function ResFind(path$)
    Local r.TResource
    For r.TResource = Each TResource
        If r\path = path Then
            Return Handle(r)
        EndIf
    Next
    Return 0
End Function

;-- Функция удаляет указанный ресурс из системы
;Параметры: путь_до_ресурса
Function ResDelete(path$)
    Local r.TResource
    For r.TResource = Each TResource
        If path = r\path Then
            Select r\tip
                Case RES_MESH, RES_AMESH, RES_SPR
                    FreeEntity r\ent
                Case RES_SND, RES_SND3D
                    FreeSound r\ent
                Case RES_TEX
                    FreeTexture r\ent
            End Select
            Delete r
            Return True
        EndIf
    Next
    Return False
End Function

;-- Функция удаляет все ресурсы из системы
Function ResDeleteAll()
    Local r.TResource
    For r.TResource = Each TResource
        Select r\tip
            Case RES_MESH, RES_AMESH, RES_SPR
                FreeEntity r\ent
            Case RES_SND, RES_SND3D
                FreeSound r\ent
            Case RES_TEX
                FreeTexture r\ent
        End Select
        Delete r
    Next
    
    Delete Each TResDel
End Function
Использовать так :
Type Object
    Field ent
End Type

Function AddObject()
    local o.object = New Object
    o\ent = CopyEntity(ResLoad("mesh.b3d", RES_MESH))
End Function
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо H@NON за это полезное сообщение:
Nex (07.01.2010), Reizel (08.01.2010)
Старый 07.01.2010, 18:30   #29
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Function не дает имена

ЕМНИП блитз и так негрузит один файл дважды, а просто возвращает хэндл.
Но могу ошибатьсо давно дело было
__________________
(Offline)
 
Ответить с цитированием
Старый 07.01.2010, 18:39   #30
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Function не дает имена

Все он грузит) ты ошибаешься)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Randomize (22.04.2010)
Ответ


Опции темы

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

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


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


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