forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Синтаксис в блице (http://forum.boolean.name/showthread.php?t=5324)

HolyDel 17.12.2007 00:32

Re: Синтаксис в блице
 
вот кусок кода из вартич
Код:

                        ;Так скажем, захват зданий
                        If u(t,i,style_)=uns_base
                       
                                If uf(t,i,protected_)>0
                               
                                        If u(t,i,assaulted_)
                                                                               
                                                h=Rnd(1,3)
                                                If h=1
                                                        fas=0
                                                        eas=0
                                                       
                                                        maxasss=0
                                                        For ot=0 To maxteam
                                                                curasss=0
                                                                For oi=1 To ttu(ot)
                                                               
                                                                        If u(ot,oi,assault_) And u(ot,oi,intoENT_)=0
                                                                       
                                                                                If EntityDistance(u(ot,oi,ent_),ent)<40
                                                                                        If dip(ot,t)
                                                                                                fas=fas+1
                                                                                        Else
                                                                                                eas=eas+1
                                                                                                curasss=curasss+1
                                                                                                If curasss>maxasss Then maxasss=curasss:u(t,i,assault_team_)=ot
                                                                                        EndIf
                                                                                EndIf
                                                                               
                                                                        EndIf
                                                                       
                                                                Next
                                                               
                                                        Next
                                               
                                                        If eas<fas-1 Or eas=0
                                                                u(t,i,assaulted_)=0               
                                                        EndIf
                                                EndIf
       
                                                pgrvalue=uf(t,i,cur_protect_)*200.0/uf(t,i,protect_)
                                                spx=uf(t,i,spx_)-100
                                                spy=uf(t,i,spy_)-60
                                               
                                                SetColor tm_color(t,1),tm_color(t,2),tm_color(t,3)       
                                                SetBlend FI_ALPHABLEND                                                                       
                                                For k=0 To pgrvalue-1
                                                        DrawImageEx(gfx_assswirl,spx+k,spy,(k+MilliSecs()*0.03) Mod 12)
                                                Next
                                               
                                                SetColor tm_color(u(t,i,assault_team_),1),tm_color(u(t,i,assault_team_),2),tm_color(u(t,i,assault_team_),3)                                                       
                                                For k=pgrvalue To 199
                                                        DrawImageEx(gfx_assswirl,spx+k,spy,(k+MilliSecs()*0.03) Mod 12)
                                                Next       
                                               
                                                SetColor 255,255,255       
                                                SetBlend FI_LIGHTBLEND
                                                DrawImageEx gfx_assbar,spx,spy
                                                SetBlend FI_ALPHABLEND
                                                       
                                               
                                                uf(t,i,cur_protect_)=uf(t,i,cur_protect_)-1
                                               
                                                If uf(t,i,cur_protect_)<0
                                                        u(t,i,assaulted_)=0
                                                        uf(t,i,cur_protect_)=1
                                                        TransmitUnit(t,i,u(t,i,assault_team_))                                                       
                                                EndIf

                                        Else
                                       
                                                uf(t,i,cur_protect_)=uf(t,i,cur_protect_)+5
                                                If uf(t,i,cur_protect_)>uf(t,i,protect_) Then uf(t,i,cur_protect_)=uf(t,i,protect_)
                                                h=Rnd(1,30)
                                                If h=1
                                                        fas=0
                                                        eas=0
                                                        maxasss=0
                                                        For ot=0 To maxteam
                                                                curasss=0
                                                                For oi=1 To ttu(ot)
                                                               
                                                                        If u(ot,oi,assault_) And u(t,i,into_)=0
                                                                       
                                                                                If EntityDistance(u(ot,oi,ent_),ent)<40
                                                                                        If dip(ot,t)
                                                                                                fas=fas+1
                                                                                        Else
                                                                                                eas=eas+1
                                                                                                curasss=curasss+1
                                                                                                If curasss>maxasss Then maxasss=curasss:u(t,i,assault_team_)=ot
                                                                                        EndIf
                                                                                EndIf
                                                                               
                                                                        EndIf
                                                                       
                                                                Next
                                                               
                                                        Next
                                                       
                                                        If eas>fas+2
                                                                u(t,i,assaulted_)=1                                                               
                                                        EndIf
                                                       
                                                EndIf
                                               
                                        EndIf
                                       
                                EndIf
                               
                        EndIf
                        ;Так скажем обработка гарнизона, когда юнит сидит внутри
                       
                        If u(t,i,into_)
                                PositionEntity ent,EntityX(u(t,i,intoENT_),1),EntityY(u(t,i,intoENT_),1),EntityZ(u(t,i,intoENT_),1)                               
                        EndIf
                       
                        If u(t,i,maxinto_)>0 And t=myteam
                                If u(t,i,nav_time_)>1
                                        packing=0
                                        idut_into=0
                                       
                                        For ot=0 To maxteam
                                                For oi=1 To ttu(ot)
                                                        If u(ot,oi,intoENT_)=ent Then idut_into=idut_into+1
                                                Next
                                        Next
                                       
                                        If idut_into<u(t,i,maxinto_)
                                                For k=1 To ttu(myteam)
                                                        If k<>i And u(myteam,k,sel_) And ((u(t,i,intotype_)=2 And u(myteam,k,style_)<>uns_base) Or u(myteam,k,style_)=uns_solider) Then packing=1
                                                Next
                                                If packing
                                                        current_cur=cur_pack
                                                        If md2
                                                                sx_#=0
                                                                sz_#=0
                                                                cnt=0
                                                                For k=1 To ttu(myteam)
                                                                        If k<>i And u(myteam,k,sel_)
                                                                                If (u(t,i,intotype_)=2 And u(myteam,k,style_)<>uns_base) Or u(myteam,k,style_)=uns_solider And cnt<(u(t,i,maxinto_)-u(t,i,uinto_))
                                                                                        u(myteam,k,intoENT_)=ent
                                                                                        u(myteam,k,intoI_)=i
                                                                                        u(myteam,k,intoT_)=t
                                                                                        u(myteam,k,intoID_)=u(t,i,id_)
                                                                                        sx_#=sx_#+EntityX(u(myteam,k,ent_),1)
                                                                                        sz_#=sz_#+EntityZ(u(myteam,k,ent_),1)
                                                                                        cnt=cnt+1
                                                                                EndIf
                                                                        EndIf
                                                                Next
                                                               
                                                                If cnt>0
                                                                        sx_#=sx_#/Float(cnt)
                                                                        sz_#=sz_#/Float(cnt)
                                                                       
                                                                        MoveUnitTo(t,i,sx_,sz_)
                                                                       
                                                                        If u(t,i,landing_)=0 Then u(t,i,eng_enabled_)=0       
       
                                                                EndIf       
                                                                                                                                                               
                                                        EndIf
                                                       
                                                EndIf
                                               
                                        EndIf
                                       
                                EndIf
                               
                        EndIf


Diplomat 17.12.2007 00:39

Re: Синтаксис в блице
 
Чёрт, вопрос о необходимом количестве каментов меня заинтересовал. ))

Вот примитивная программка, которая приблизительно подсчитывает количество каментов в коде и выводит ориентировочное процентное соотношение строк кода и комментариев. У меня в основном 10-17% комментариев в коде. Бывают подскоки до 30%, но они почти не влияют на результирующую статистику. Анализируя старые программы (ессно без QBASIC и MS VB ) могу заметить, что с годами статистика не меняется.

А у вас как?

Код:

RFile=OpenFile("Имя исходника.bb")

While Eof(RFile)=0
        NLines=NLines+1
        Lne$=ReadLine(RFile)
        For NChar=1 To Len(Lne$)
                Char$=Mid(Lne$,NChar,1)
                If Char$=";" Then
                        NComments=NComments+1
                        Exit
                EndIf
        Next
Wend

CloseFile(RFile)

Print "NUMBER OF LINES: "+NLines
Print "COMMENTED LINES: "+NComments
Print "____________________________"
Print "COMMENTS PART IN CODE: "+ Float(NComments)/Float(NLines)*100.0 +" %"

Print
Print
Print "Press any key to continue..."

WaitKey()

End

_______________
Added:

Цитата:

вот кусок кода из вартич
А-а, убийца! Ты сломал мой мозг! ))

AndruXa 17.12.2007 00:46

Re: Синтаксис в блице
 
Цитата:

А у вас как?
в рпг 4.8%
в шутере 17%
в гонках 8%
Пробовал вставлять документ примерно 10 страниц - 57% - тормозов обнаружено не было да и на скорость компиляции не очень повлияло по крайней мере на глаз

sSwSs 17.12.2007 00:47

Re: Синтаксис в блице
 
мммм.....у меня 14%)))

Crystal 17.12.2007 00:49

Re: Синтаксис в блице
 
У меня всё в функциях.
Выше и ниже функций описываю что она делает
внутри функции над и под процессом описываю что делает.

HolyDel 17.12.2007 00:52

Re: Синтаксис в блице
 
NUMBER OF LINES 14154
COMMENTED LINES 1028
~7.26% комментариев, НО где то, где то 80% из них, ето закоментенный код, дабы не компилился он.

Bagration 17.12.2007 00:54

Re: Синтаксис в блице
 
8 процентов

AndruXa 17.12.2007 00:59

Re: Синтаксис в блице
 
Цитата:

Кстати, у меня какая-то х..ня в блице, когда писал управление колесницей в рпг своем, там короче есть переменная speed# и rotate#
так вот поворот должен уменьшаться с увеличением скорости, ну как это сделать, как все нормальные люди, делением хотел, тоесть поворот разделить на скорость. Запускаю, хопа... 2д грузиться, а вместо 3д черное пространство, это ладно когда делишь на число, там-то заменить умножением мона, а сдесь, вопсчем пришлось создавать еще одну переменную, кот. уменьшается по мере увеличения скорости, и на нее умножать поворот. Может кто нить сталкивался с таким, или это тока у мяня деление в 3д не работает?
так че на мой вопрос-то кто-нибудь ответит?

Diplomat 17.12.2007 01:00

Re: Синтаксис в блице
 
Цитата:

NUMBER OF LINES 14154
Похоже, рекорд Тормоза на максимальное количество строк в одном файле побит с большой силой и жестокостью. )
Эх, у меня больше 6850+ строк в один инклюд запихнуть не получалось. Да и то инклюд не честный: склад функций Беглеца. Все функции разбиты по категориям и свёрнуты средствами ГУИ.
:"(

Цитата:

или это тока у мяня деление в 3д не работает?
Деление работает везде. Не дели на ноль.

AndruXa 17.12.2007 01:04

Re: Синтаксис в блице
 
Цитата:

Деление работает везде. Не дели на ноль.
Блин, во я лохонулся. Вроде алгебру в школе учу...

ЛысыЙ_Чук-Иванчук 17.12.2007 01:25

Re: Синтаксис в блице
 
Цитата:

Сообщение от Diplomat
Похоже, рекорд Тормоза на максимальное количество строк в одном файле побит с большой силой и жестокостью. )

Какой смысл мутить все в одном?, типа я такой крутой буду писать код на 100к в одном инклде?
Я когда работаю- ну код в 2к-8к я еще перевариваю, а больше:crazy: , всеравно код уже можно делить и делить!
Хотя тут кому как нравится.
ЗЫ\ Барахолка функций у меня на 3к++;)

jimon 17.12.2007 01:28

Re: Синтаксис в блице
 
ну так не честно в одном :) я решил по читерить ...
вот программка для blitzmax которая щитает количество
строк во всех инклудах :-)

Код:


SuperStrict

Type TComments
        Field Lines%
        Field Comments%
        Field Size%
End Type

Function ReadComments:TComments(File_name$)
        Local file:TStream = ReadFile(File_name)
        Local comments:TComments = New TComments
        Local line$
        ChangeDir(CurrentDir() +"/"+ ExtractDir(File_name))
        comments.Size = file.size()
        While Not Eof(file)
                line$ = Lower(Trim(ReadLine(file)))
                If Instr(line,"'") Then
                        comments.Comments:+1
                Else
                        If Instr(line,"include "+Chr(34)) Then
                                Local line2$ = Replace(line,"include "+Chr(34),"")
                                line2 = Replace(line2,Chr(34),"")
                                line2 = Trim(line2)
                                Local dir$ = CurrentDir()
                                Local com:TComments = ReadComments(line2)
                                comments.Lines:+com.Lines
                                comments.Comments:+com.Comments
                                comments.Size:+com.Size
                                ChangeDir(dir)               
                        End If
                End If
                comments.Lines:+1
        Wend
        CloseFile(file)
        Return comments
End Function


Function Calculate(File$)

        Local coms:TComments = ReadComments(File)

        DebugLog "---------"
        DebugLog "File : " + File
        DebugLog "Size : " + coms.Size + " bytes"
        DebugLog "Lines : " + coms.Lines
        DebugLog "Comments : " + coms.Comments
        DebugLog "Percents : " + ((Float(coms.Comments)/Float(coms.Lines))*100) + " %"
       
End Function

Calculate("jAqua.bmx")
Calculate("jEditor.bmx")

в результате :
Цитата:

---------
File : jAqua.bmx
Size : 311112 bytes
Lines : 70028
Comments : 801
Percents : 1.14382815 %
---------
File : jEditor.bmx
Size : 352299 bytes
Lines : 71445
Comments : 811
Percents : 1.13513887 %
там просто редактор юзает код от игры :)
в принципе я удивлен что настрочил 70 тыс строчек с 800
закоментироваными строчками ... из них половина - убраный код :)

ABTOMAT 17.12.2007 01:35

Re: Синтаксис в блице
 
49% в моих ботах (версия от 4-го декабря :))

Bagration 17.12.2007 01:40

Re: Синтаксис в блице
 
Цитата:

Сообщение от ABTOMAT
49% в моих ботах (версия от 4-го декабря :))

Ого! :4to: Комменты для потомков?:-D

Taugeshtu 17.12.2007 02:13

Re: Синтаксис в блице
 
Ых...
В моем жутком Сферике, как оказалось, 13% кода - комменты...
А вот в редакторе для него - 5,67 ($_$)

А вот вам и несколько упийц моска, персонально от меня, из того же Сферика...


Глобал... Любуемся комментами...

Код:

;- - - - - - - - - - - - - - - - - - - - - - - - -
;    GLOBALIZATOR
;- - - - - - - - - - - - - - - - - - - - - - - - -
Global PLlife=100    ; хелсы плеера
Global p1        ; временный счётчик для опреда крайних точек позишнов ботов, по совместительству - одна из темп-варов
Global pl        ; самый важный обжект во всей гамке - игрок. Точнее это не совсем игрок, а только отражения на шарике - но в любом случае, всё и вся привязано к нему, родимому!
Global G#=-0.3    ; наша гравитационная постоянная
Global jump#    ; эт длллля прыжка, точнее - время прыжка
Global xmov        ; главная переменная во всём контроллере - отвечает за направление и скорость движения игрока
Global wt        ; число тайлов по ширине
Global ht        ; и по высоте
; вроде коорды игрока, точнее того тайла, где он находится
Global x        ; соответсна по Х...
Global y        ; ... и по У!
Global tempent    ; Временный обжект (юзается для подбора бонусов)
Global finX        ; позиция финиша по Х
Global finY        ; позиция финиша по У
Global score    ; количество пакман-бонусов, собранных игроком
Global cam        ; это наша камера, наши глазявочки
Global mscore=0    ; начальное значение количества шароподобных "рулезов"
Global play    ;    это непосредсно игрок. Несмотря на то, что привязка идёт не к нему, а к другому обжекту - это основной игрок. Именно он крутится при движении
Global pan        ; Угол, на который повернут игрок (его спрайт)
Global BFtimer=0; Таймер для бонуса блэйд форм
; ниже идут переменные для ФПС-ника
Global fps=1    ; непосредсно ФПС
Global fr        ; счётчик фреймов
Global frtime    ; время обработки фреймов
; а это для поправки - так с имиджами полегше будет...
Global poprX#=-6.52
Global poprY#=4.78
Global scale=57    ; это переменная для ресайза имиджей и их корректного расположения
Global PLstate=0; контрол за состоянием игрока и количеством навешанных на него "рулезов"
Global rez        ; переменка для циклов типа While...Wend для отсева по получению резалта.
Global tmp1        ; временные переменные для всякого целочисленного мусора...
Global tmp2
Global temp1#    ; Ну, и не совсем целочисленного...
Global musor$    ; Текстовый мусор
Global Ltime=0    ; контролим громовержца...
Global levT=0    ; ... и левитацию.
Global Lhelper    ; Хелпер для програмной визуализации шторма молний.
Global GTimer=CreateTimer(60)    ; Пытаемся стабильнуть ФПС...
Global SGTimer=CreateTimer(3)    ; Пытаемся тормознуть ФПС...
Global actLEV=0    ; Нумер текущего левела.
Global Mlevels=0; Количество левелов с пачке.
Global Mmode=2    ; Режим меню. 0-нет, 1-игровое, 2-главное.
Global actBUT=1    ; Это надо для определения активной кнопки. Также с помощью этой переменной будет легко сделать само "нажатие" кнопок.
Global musT=0    ; Переменная для контроля за тем, закончилась ли композиция.
Global Tnumb=0    ; Переменная для контроля за номером текущего трека.
Global Glife=3    ; Этот вар служит для "убивания" игрока. По сути - кол-во банальных "дендивских" жизней

Вот такое дикое количество комментов... Не переживайте, это только в глобале так (^_^)

Далее...
Совершенно неземной код коллизий (кусочек кода контроля) :
Код:

;                                            ----------------------------------------

;    Простое устранение лага с ползанием шарика без действий со стороны игрока
If Abs(xmov)<7 Then xmov=0
;- - - - - - - - - - - - - - - - - - - -
;----------PROVERKA PO "X"
;- - - - - - - - - - - - - - - - - - - -
TranslateEntity pl,xmov*0.001,0,0
x=EntityX(pl)+0.5*Sgn(xmov)
y=EntityY(pl)
;proverka na to, svobodna li kletka,kuda hotim peremestitsa
If p(x,y)>-1
TranslateEntity pl,-xmov*0.001,0,0
x=EntityX(pl)
If p(x,y-1)=-1 xmov=-xmov
EndIf
;- - - - - - - - - - - - - - - - - - - -
;----------PROVERKA PO "Y"
;- - - - - - - - - - - - - - - - - - - -
TranslateEntity pl,0,G#+jump#,0
x=EntityX(pl)
y=EntityY(pl)+0.25*Sgn(G#+jump#)
;proverka na to, svobodna li kletka,kuda hotim peremestitsa
If p(x,y)>-1 TranslateEntity pl,0,-(G#+jump#),0
;    A eto dabi ne bulo lagov s visotoj:
x=EntityX(pl)
y=EntityY(pl)
If p(x,y-1)>-1 And (EntityY(pl)-y)<0.4 PositionEntity pl,EntityX(pl),y,EntityZ(pl)
; Этот кусочек отвечает за то, что нам будет за столкновение с шипастым тайлом:
If t(x,y+1)=23 And Sgn(G#+jump#)=1 Then PLlife=PLlife-2 jump#=jump#-0.15
; Это мы добавим, дабы игрок никуда не "сползал" и не выпрыгивал с карты:
If EntityX(pl)>x And x=wt PositionEntity pl,x,EntityY(pl),EntityZ(pl)
If EntityY(pl)>y And y=ht PositionEntity pl,EntityX(pl),y,EntityZ(pl)
If EntityX(pl)<x And x=1 PositionEntity pl,x,EntityY(pl),EntityZ(pl)
If EntityY(pl)<y And y=1 PositionEntity pl,EntityX(pl),y,EntityZ(pl)
;                                            -------------------------------------

Ну, и чтобы пощекотать ваши нервы, Header готовящегося фейверка для конкурса:

Код:

;======================================-
;====================================-
;==================================-
;        Ize'g0re presents...  ==-
;==============================-

;|=====+      =====================================-
; |=====+    ===================================-
;  |=====+    =================================-
;  |=====+  particle st0rm. . . -==========-
;  |=====+    =============================-

; * . ; *  ' .  *
;* '  * . * , * '
;.С Новым Годом!,
;  * ' * , * .. ;
; * . '  *. ' * *

Комменты наводят благоговейный ужас на меня... (%_%)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot