Показать сообщение отдельно
Старый 09.01.2007, 00:38   #7
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Подмигивание Re: Type, Function и т.д.

Ну я всё не читал, но считаю что разные объяснения, людей, с разными мышлениями, не помешают.

Что о типах.
Массивы, нужны что-бы работать с определённым колличеством объектов, неважно сколько. Каждый массив, имеет свои значения. Например, у нас работа со спрайтами. Ну нам нежно просто что-бы было много спрайтов, и они появлялись где-либо, и просто летели вверх.
Вводим массив:
[blitz]Type Spark
Field Sprite
Field Life%
End Type[/blitz]
У нас 2 значения:
1 - Сам спрайт
2 - Жизнь, тоесть как долго этот спрайт будет жить. Если жизнь кончится мы его удалим. Заметь у нас он объявлен как Int (%), тоесть это целое число.
Далее, нам нужно что-бы создавался спрайт. Но удобнеее сделать в функции. Что такое функция: Это те-же комманды которые ты используешь, просто они стандартные, а ты можешь создавать свои, которые будут делать действие с настройками (Например CreateSphere()), или возвращать значение (Например: EntityX#()). Все Варриаблы, которые ты создаёшь или используешь в функции, и которые не объявлены глобалями, то они локальны, тоесть за пределами функции они не существуют.
И так, сделаем функцию, которая будет создавать определённое колличество спрайтов, и с определённым колличеством жизней:
[blitz]Function CreateSparks(Count%,Life%)
For c=0 to Count ;Sdelatj eto dejstvije mnogo raz, a imenno ot 0 do Count.
s.Spark=New Spark ;Sozdajom, zametj kogda mi sozdajom v massiv, to "s" s tochkoj, a pochemy "s", tak eto nevazhno, mozhesh ljyboje sdelatj, glavnoje chtobi ne sovpadalo s drygim massivom ili varrabloj.
s\Sprite=CreateSprite() ;Pri sozdaniji, ti ykazivajesh znachenija, tyt mi prosto pricepili k Sprite, nivoj sprajt.
s\Life=Life ;Tyt mi ispolzyjem ykazannoje v funkciji znachenije, kak i ispolzovali jego v pervoj stroke etoj funkcii.
Next
End Function[/blitz]
Всё, Функция готова.
Теперь, сделаем функцию, котрая будет обновлять массив, эта функция очень простая, она не имеет никаких значений, просто нам удобнее вызывать её, чем писать в цикле много текста.
[blitz]Function UpdateSparks()
For s.Spark=Each Spark ;Pri obrasheniji mi opatj stavim "s", tyt mi govorim, delatj soderzhimoje v etom "For", dlja Vseh komponentov etogo Massiva.
s\Life=s\Life-1 ;Tyt mi prosto otnimajem ot zhizni 1
MoveEntity s\Sprite,0,.1,0 ;Tyt mi dvigajem sprajt
If s\Life<0 ;Jesli zhizni menshe 0
FreeEntity s\Sprite ;Ydalajem sprajt, nezabivaj ydalatj Vse Entity komponenta, jesli ti soberajeshsja ydalitj komponent iz massiva.
Delete s
EndIf
Next
End Function[/blitz]
Эту функцию, вызывай каждый цикл.
Всё, надеюсь, очень понятно объяснил.
(Offline)
 
Ответить с цитированием