[Уроки JASS]Основы синтаксиса, "Функции" - Wc3-Maps Форум













[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Strateg, Melissa 
Wc3-Maps Форум » Раздел для картостроителей » GUI / Jass » [Уроки JASS]Основы синтаксиса, "Функции" (Урок №3)
[Уроки JASS]Основы синтаксиса, "Функции"
-
AncientPenguinДата: Суббота, 04-08-2012, 14:24:46 | Сообщение # 1

загрузка наград ...
Группа: Избранные
Сообщений: 449
Репутация: 526
Статус: Не на сайте
Уроки JASS
Основы синтаксиса, урок № 3. “Функции”

Введение


Если в кратце, то функция это некий кусок кода. Если у вас есть код который необходимо использовать в нескольких местах, то можно создать функцию и вместо постоянного копирования кода просто вызывать ее. Функция выглядит следующим образом:

Code
function <имя функции> takes <аргументы> returns <тип возвращаемого значения>
<код функции>
endfunction


Например:

Code
function Hello takes nothing returns nothing
call BJDebugMsg(“Hello world”)
endfunction


прим. BJDebugMsg пишет сообщение всем игрокам.

Для того чтобы воспользоваться созданной функцией необходимо ее вызвать:

Code
call <имя функции>(<аргументы>)

call Hello()


В итоге всем игрокам выдаст сообщение Hello world

Аргументы


Очень часто в функцию нужно передать какие-то переменные для того чтобы она с ними что-то сделала, например передвинула юнита. Для этого и существуют аргументы, чтобы функция брала аргумент, нужно написать его тип и имя:

Code
function Hello takes string str returns nothing
call BJDebugMsg(str)
endfunction


Для того чтобы функция брала несколько аргументов нужно перечислить их через запятую:

Code
function sum takes integer i1, integer i2 returns nothing
local integer i3 = i1 + i2
endfunction


Вот так, но эта функция абсолютно бесполезна т.к. переменная i3 локальная и при выходе из функции она уничтожится, и мы не узнаем что же там получилось.

Возвращаемое значение


Функция может вернуть какой-нибуть результат, для этого нужно указать тип возвращаемого значения:

Code
function sum takes integer i1, integer i2 returns integer
local integer i3 = i1 + i2
return i3
endfunction


Ключевое слово return используется для того чтобы вернуть значение, а так же для того чтобы завершить выполнение функции, все что после ретурна выполнятся не будет. Предыдущую функцию можно записать короче:

Code
function sum takes integer i1, integer i2 returns integer
return i1 + i2
endfunction


Функции могут принимать и возвращать любые типы переменных, кроме массивов.

В варкрафте есть одна неприятная особенность, а именно ограничение на количество операций в функции. Т.е. при достижении какого-то определенного количества операций (set и call) функция просто прекратит выполнение, несмотря на то, что должна была выполняться дальше. Но пугаться раньше времени не стоит, ограничение довольно большое и без изврата его превысить очень сложно (у меня не получалось).

Домашнее задание


Создать функцию, которая возводит реальное число в степень и возвращает полученное значение. Степень - целое число и должна быть больше 0, если условия не выполнены, то функция должна вернуть ноль.

Выполненное задание кидать в лс, текстом.
 
-
НубикВЕДата: Суббота, 04-08-2012, 20:40:03 | Сообщение # 2

загрузка наград ...
Группа: Пользователи
Сообщений: 187
Репутация: 261
Статус: Не на сайте
Довай vJass, это фсё для навичков!
[c][/c]
 
-
AncientPenguinДата: Суббота, 04-08-2012, 20:59:52 | Сообщение # 3

загрузка наград ...
Группа: Избранные
Сообщений: 449
Репутация: 526
Статус: Не на сайте
Quote (НубикВЕ)
Довай vJass, это фсё для навичков!


Будет и vjass. Раз это для новичков то где выполненное задание?)
 
-
НубикВЕДата: Воскресенье, 05-08-2012, 13:40:34 | Сообщение # 4

загрузка наград ...
Группа: Пользователи
Сообщений: 187
Репутация: 261
Статус: Не на сайте
AncientPenguin, пфф, тута и делать нечего, шутник! Ты же играл в Winter AoS открой там все дз biggrin
[c][/c]
 
-
AncientPenguinДата: Воскресенье, 05-08-2012, 13:49:57 | Сообщение # 5

загрузка наград ...
Группа: Избранные
Сообщений: 449
Репутация: 526
Статус: Не на сайте
Quote (НубикВЕ)
AncientPenguin, пфф, тута и делать нечего, шутник! Ты же играл в Winter AoS открой там все дз


Ок, тебе персональное задание:

Создать функцию которая перемещает юнита на вектор
(function MoveUnit takes unit u, real x, real y, real z returns nothing)
При этом высота юнита не должна зависеть от высоты рельефа.

p.s. еще раз напишешь что слишком легко, дам задание на матрицы и кватернионы biggrin
 
-
MarkSpartakДата: Понедельник, 06-08-2012, 09:37:34 | Сообщение # 6
Tu tu-ru

загрузка наград ...
Группа: V.I.P.
Сообщений: 1261
Репутация: 1635
Статус: Не на сайте
НубикВЕ, Зачем тебе учить Jass?
Во первых ты его и так знаешь
Во вторых на тот случай если ты не знаешь, у тебя есть личный учитель
 
-
НубикВЕДата: Понедельник, 06-08-2012, 11:01:55 | Сообщение # 7

загрузка наград ...
Группа: Пользователи
Сообщений: 187
Репутация: 261
Статус: Не на сайте
MarkSpartak, он обиделся xDD ,как девочка)
[c][/c]
 
-
MarkSpartakДата: Понедельник, 06-08-2012, 17:16:41 | Сообщение # 8
Tu tu-ru

загрузка наград ...
Группа: V.I.P.
Сообщений: 1261
Репутация: 1635
Статус: Не на сайте
НубикВЕ, а че ты ему сделал? Но факт остается фактом ты знаешь джасс, нафиг тебе его учить? тем более в классе С?
 
-
НубикВЕДата: Понедельник, 06-08-2012, 17:25:29 | Сообщение # 9

загрузка наград ...
Группа: Пользователи
Сообщений: 187
Репутация: 261
Статус: Не на сайте
MarkSpartak, ты ваще офигел, не ответил в скайп, ТЫ ЗДОХНЕШ ВО СНЕ!
[c][/c]
 
-
SentДата: Понедельник, 06-08-2012, 18:21:16 | Сообщение # 10
#DARKSIDE

загрузка наград ...
Группа: Зам.Админа
Сообщений: 9158
Репутация: 8424
Статус: Не на сайте
НубикВЕ, исключен из школы
 
Wc3-Maps Форум » Раздел для картостроителей » GUI / Jass » [Уроки JASS]Основы синтаксиса, "Функции" (Урок №3)
Страница 1 из 11
Поиск:
Рейтинг@Mail.ru
Яндекс.Метрика

Copyright © 2010-2017
Вакансии :: Контакты
Мобильная версия сайта
chat