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)

AndruXa 16.12.2007 22:19

Синтаксис в блице
 
Вопрос вобщем-то адресован Diplomaty, который частенько утверждает, что я не знаю синтаксис. Вы спросите, почему я не задал его в личку, да потомучто большинство новичков с этим сталкиваются, и им это тоже будет полезно. Так вот, я так задумался а ведь действительно синтаксис-то у меня хромает, вследствие с этим у меня появился ряд вопросов:
1)Чем чревато использование большого количества глобала
2)Какое количество условий лучше использовать при написании проги, как можно меньше, или блицу без разницы, ато зачастую у меня 80% кода - это условия
3)Ну и прямой вопрос по условиям: вот 2 случая, оба работают, но какой все-таки будет грамотней, и какая разница между ними?
Код:

If ... Then
If...
...
Endif
EndIf

Код:

If ...
If...
...
Endif
EndIf


Bagration 16.12.2007 22:27

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

Сообщение от AndruXa
Код:

If ... Then
If...
...
Endif
EndIf

Код:

If ...
If...
...
Endif
EndIf


If a=1 then
Deistvie1
If b=2 then
Deistvie2
End If
End If
старайся делать табы, легче будет понять какое условие куда входит.

AndruXa 16.12.2007 22:32

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

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

Diplomat 16.12.2007 22:51

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

1)Чем чревато использование большого количества глобала
Тормозами. Если ты создашь 5к глобальных переменных- результат будет заметен.
Цитата:

2)Какое количество условий лучше использовать при написании проги, как можно меньше, или блицу без разницы, ато зачастую у меня 80% кода - это условия
"Я всё понял. Это неправильные пчёлы. И они делают неправильный код"(с).
80% кода НЕ МОЖЕТ состоять из ветвлений IF...THEN. Если 80% кода- это ветвления, значит тебе за одну парту с Кристаллом.
Само же ветвление IF...THEN выполняется как правило очень быстро.
Цитата:

Тоесть разница лишь в удобстве?
Выйди летом на улицу голым. Что в одежде, что без нее- совсем не холодно. Разве что кошелек без наличия одежды и карманов носить неудобно.
То есть разница лишь в удобстве? (с)

Хотя, пример не точный, аналогия фальшива. Если ты не будешь использовать комментарии, недописывать операторы, злоупотреблять безусловными переходами и не соблюдать общепринятые для конкретного языка правила - это будет не просто неудобно. Код будет попросту нечитаем. Никто, кроме тебя, не сможет с ним работать, а сам ты забудешь его назначение через пару месяцев. В результате, как программист ты будешь неприменим и оттого- никому не нужен.
"Если ты умеешь писать программный код- ты можешь создать нечто, что понравится твоей маме. Если ты умеешь читать чужой программный код и писать свой так, чтоб его могли читать другие- ты можешь считать себя программистом"(с).

jimon 16.12.2007 23:19

Re: Синтаксис в блице
 
Diplomat
если я пишу коментарии в коде только там где явно мутное место
то это плохо или нет ?

Diplomat 16.12.2007 23:25

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

если я пишу коментарии в коде только там где явно мутное место
то это плохо или нет ?
Не знаю, я тоже так делаю. ))

ABTOMAT 16.12.2007 23:54

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

Сообщение от jimon
Diplomat
если я пишу коментарии в коде только там где явно мутное место
то это плохо или нет ?

А я наоборот пишу камменты вообще везде. Делаю, вообще, так:
сначала в каменатх излагаю что я хочу сделать, потом пишу строчку(и) кода, где делается то, что написано в каменте. Зато сразу понятно, какая строка что делает, а если место совсем мутное, то подробно тоже поясняю как я его собираюсь преодолеть. Хотя, говорят, от обилия каментов компиляция становится очень долгой...
Читать чужой код (в основном Leito'вский) я пытался, но так и не разобрал ничего, хоть убей...

AndruXa 16.12.2007 23:59

Re: Синтаксис в блице
 
А может кто какие фишки знает с оформлением кода или оптимизацией. Пишите сюда, я думаю многим будет интересно

HolyDel 17.12.2007 00:08

Re: Синтаксис в блице
 
Оптимизация:

1) Не используйте строки для обозначения констант!
Например
select a$
case "run"
case "dead"
case "maa"
можно заменить на
const run=1
const dead=2
const maa=3
select a
case run
case dead
case maa

2) Не создавайте камеру в цикле ))))

3) все текстуры взрывов (спрайтами), или текстуры, в которые будет происходить рендеринг, создавайте с флагом 256

4)двоичный сдвиг рулит! юзайте его, если ето возможно.

alcoSHoLiK 17.12.2007 00:14

Re: Синтаксис в блице
 
Не слушай никого. Хороший стиль - это когда стоящий за спиной конкурент не сможет разобраться в твоем коде до тех пор, пока ты его не заметишь, и, следовательно, стырить идею.
Например

Код:

A = Input("Введите знаение для A: ")
B = Input("Введите значение для B:")
If(Len(Str(A))=Len(Str(B))):For i=1 To Len(Str(A)):If(Mid(Str(A),i,1)=Mid(Str(B),i,1)):j=j+1:EndIf:Next:If(Len(Str(a))=j):Print"Равны":Else:Print"Не равны":EndIf:EndIf


ABTOMAT 17.12.2007 00:20

Re: Синтаксис в блице
 
alcoSHoLiK, Бугага, жжошь :-D

Bagration 17.12.2007 00:22

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

Сообщение от HolyDel
Оптимизация:
2) Не создавайте камеру в цикле ))))

ну и вообще ничего не грузить. А кстати двоичный сдвиг это когда вместо a\2 пишут a*0.5? То есть блиц как бы быстрее производит умножение.

jimon 17.12.2007 00:28

Re: Синтаксис в блице
 
ну вот кусок кода из jAqua ... сходу мало че поймешь и мало че не поймешь

Код:

                Local MouseDist# = MouseX()*MouseX()+MouseY()*MouseY()
                Local ImageSize# = 32
               
                If MouseDist > (Radius-ImageSize)*(Radius-ImageSize) And MouseDist < (Radius+ImageSize)*(Radius+ImageSize) Then
                        Enable = 1
                                               
                        AngleRotateDist :+ MouseZSpeed() * Size
                       
                        Rotating = 0
                        If MouseX() > (Radius-ImageSize) And MouseX() < (Radius+ImageSize) And MouseY() < (ImageSize*2) Then
                                If AngleRotateDist < Size Then
                                        Rotating = 1
                                        AngleRotateDist:+RotateSpeed
                                End If
                        End If
                        If MouseY() > (Radius-ImageSize) And MouseY() < (Radius+ImageSize) And MouseX() < (ImageSize*2) Then
                                If (AngleRotateDist + TotalAngleSize) > (90 - Size*2) Then
                                        Rotating = 1
                                        AngleRotateDist:-RotateSpeed
                                End If
                        End If
                       
                        If Rotating = 1 Then
                                AnimateValue(RotateSpeed,RotateSpeedMax,RotateSpeedDelta)
                        Else
                                AnimateValue(RotateSpeed,RotateSpeedMin,RotateSpeedDelta)
                        End If

                       
                        If AngleRotateDist > (90-Size) Then AngleRotateDist = 90-Size
                        If AngleRotateDist < (-TotalAngleSize+Size*2) Then AngleRotateDist = -TotalAngleSize+Size*2
                       
                        AnimateValue(Zoom,ZoomMax,0.02)
                Else
                        Enable = 0
                        AnimateValue(Zoom,ZoomMin,0.02)
                End If
               
                AnimateValue(AngleRotate,AngleRotateDist,Abs((AngleRotate - AngleRotateDist)/10))

                Local x#,y#,a#
                Local mx# = MouseX()
                Local my# = MouseY()


HolyDel 17.12.2007 00:28

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

А кстати двоичный сдвиг это когда вместо a\2 пишут a*0.5? То есть блиц как бы быстрее производит умножение.
неугадали, батенька.
ето a shl b или a shr b, соответственно сдвиг влево и вправо, соответсуют умножению на два и делению на два целочисленных чисел.

AndruXa 17.12.2007 00:30

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

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


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

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