Сейчас 22:27:36 Воскресенье, 14 августа, 2022 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Урок 3] Циклы, условия, массивы
[Урок 3] Циклы, условия, массивы
[DUОS]Дата: Понедельник, 11 Апреля 2011, 08:44:19 | Сообщение # 1
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Этот урок я посвящу изучению циклов, массивов, функций и условий.
Начнём с самого простого. Это условия.

Условия - это специальные фрагменты кода, построенные на условных операторах, исходя из истинности которых будет или не будет выполняться код внутри блока операторов.

Самый простой пример условия:

Code
if true == true then
     // Действия при выполнении условия
else
     // Действия при невыполнении условия
endif

Сразу замечу, что else-часть кода совершенно необязательно писать. Можно увидеть, что условие выше всегда будет истинно, ведь true = true (истина = истина).
Существует также условный оператор elseif, которого на триггерах нет вовсе. Давайте посмотрим пример блока условий с этим оператором.

Code
if true == true then
     // Действия при выполнении условия
elseif true == false then
     // Действия при выполнении условия true ==false
else
     // Действия при невыполнении условия
endif

Вот такой синтаксис условий в Jass. true никогда не будет равно false, значит, это условие невыполнимо.

Операторы сравнения условий в Jass:
> - больше, чем...
< - меньше, чем...
>= - больше или равно...
<= - меньше или равно...
== - полностью равно...
!= - не равно...

and - ... и ...
or - ... или ...
not - не ...

P.S.: При сравнении существует ещё одна фишка, её я вам открою позже, пока вам рано.


С условиями разобрались. Теперь рассмотрим циклы.

Цикл - повторяющийся до выполнения условия цикла блок действий. Цикл бывает бесконечным (если условие выхода всегда будет ложно) и конечным (если это условие когда-либо будет истинно).

Структура любого цикла на Jass:

Code
loop
     exitwhen условие
     // Действия цикла
endloop

Пример цикла - счётчик от одного до пяти:
Code
local integer i = 1
loop
     exitwhen i > 5
     // Действия, повторяющиеся 5 раз.
     set i = i + 1
endloop

О переменных в Jass и GUI можно прочесть тут. Я использовал локальную целочисленную.

P.S.: Добавлю только то, что в уcловии выхода из цикла нельзя использовать and, or и not.



Теперь поговорим о массивах.

Индексный массив (в некоторых языках программирования также таблица, ряд) — именованный набор однотипных переменных, расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу (в отличие от списка).
Индекс массива — целое число, либо значение типа, приводимого к целому, указывающее на конкретный элемент массива.

В локальном варианте массивы создаются так:

local тип array название

Учтите, что в отличие от формата local тип название её нельзя задавать сразу, надо писать:

Code
set название[индекс массива] = значение

Пример:

Code
local integer array i
set i[0] = 1

Вот и всё на этом уроке. Вечером - снова зачёт. Кстати, остался только один урок теории. Дальше - оттачивание скилла.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

Omni174Дата: Понедельник, 11 Апреля 2011, 08:47:47 | Сообщение # 2
Группа: Заблокированные
Сообщений: 1274
Награды: 1
Репутация: 359
Блокировки:
А д\з какое?
 

skvaer09Дата: Понедельник, 11 Апреля 2011, 08:51:34 | Сообщение # 3
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
зачет
 

Omni174Дата: Понедельник, 11 Апреля 2011, 08:52:04 | Сообщение # 4
Группа: Заблокированные
Сообщений: 1274
Награды: 1
Репутация: 359
Блокировки:
Фак,я х3 как буду сдавать ._.
 

DreiiДата: Понедельник, 11 Апреля 2011, 11:21:26 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
[DUОS],Круто,но можно было бы паказать как например с помощью цикла можно обнулить сассив



Сообщение отредактировал Dreii - Понедельник, 11 Апреля 2011, 11:22:31
 

skvaer09Дата: Понедельник, 11 Апреля 2011, 12:23:58 | Сообщение # 6
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
Ваще не понятно(
 

DreiiДата: Понедельник, 11 Апреля 2011, 12:39:51 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
skvaer09, Спрашивай что не ясно

 

skvaer09Дата: Понедельник, 11 Апреля 2011, 12:50:49 | Сообщение # 8
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
Dreii, ну например "array" что это?
 

SyzakyДата: Понедельник, 11 Апреля 2011, 12:51:20 | Сообщение # 9
5 уровень
Группа: Проверенные
Сообщений: 104
Награды: 0
Репутация: 12
Блокировки:
переменная типа массива

local integer array i

означает создание локальной переменной массива, типом интеджер и именем i

Сообщение отредактировал Syzaky - Понедельник, 11 Апреля 2011, 12:54:47
 

DreiiДата: Понедельник, 11 Апреля 2011, 13:13:24 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
skvaer09, array значит что переменная с массивом

 

skvaer09Дата: Понедельник, 11 Апреля 2011, 13:15:53 | Сообщение # 11
8 уровень
Группа: Проверенные
Сообщений: 602
Награды: 0
Репутация: -117
Блокировки:
"false " А это что значит ?
 

DreiiДата: Понедельник, 11 Апреля 2011, 13:16:09 | Сообщение # 12
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
skvaer09, false - ложь

 

pirat9629Дата: Понедельник, 11 Апреля 2011, 14:49:07 | Сообщение # 13
7 уровень
Группа: Проверенные
Сообщений: 422
Награды: 0
Репутация: 102
Блокировки:
Code
if true == true then  
      // Действия при выполнении условия

заместь true может стоять чтото другое? например if 1 == true then 1 ето случайное число я правильно понял или вообще не то?)




сделаю минекрафт сервер на заказ. платно
 

DreiiДата: Понедельник, 11 Апреля 2011, 14:50:11 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
pirat9629, например так

Code
local integer i=GetRanomInt(1,100)
if i==20 then
//Actions
...


 

pirat9629Дата: Понедельник, 11 Апреля 2011, 14:59:27 | Сообщение # 15
7 уровень
Группа: Проверенные
Сообщений: 422
Награды: 0
Репутация: 102
Блокировки:
ага типо сначала локальную переменную установляем случайное число от 1 до 100
а потом if названия више установ переменной <= 50 then
убить юнит
(а тут чото надо ище?)

Добавлено (11-04-2011, 14:59)
---------------------------------------------

Quote
array

ето означает что масив?




сделаю минекрафт сервер на заказ. платно
 

)blazer(Дата: Понедельник, 11 Апреля 2011, 15:16:57 | Сообщение # 16
7 уровень
Группа: Проверенные
Сообщений: 308
Награды: 0
Репутация: 49
Блокировки:
Quote (|DUОS|)
снова

Снова??? а 1ый был чтоли? или я что-то пропустил
 

DreiiДата: Понедельник, 11 Апреля 2011, 15:18:36 | Сообщение # 17
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (pirat9629)
ето означает что масив?

да
Quote (pirat9629)
ага типо сначала локальную переменную установляем случайное число от 1 до 100 а потом if названия више установ переменной <= 50 then

можно так

Code
if GetRandomInt(1,100) <20 then
//
endif


 

pirat9629Дата: Понедельник, 11 Апреля 2011, 16:44:49 | Сообщение # 18
7 уровень
Группа: Проверенные
Сообщений: 422
Награды: 0
Репутация: 102
Блокировки:
ну помоему я все понял)
всем спасибо хочу по бистрее закочить школу и знать джасс)




сделаю минекрафт сервер на заказ. платно
 

lawsonДата: Понедельник, 11 Апреля 2011, 17:50:30 | Сообщение # 19
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (|DUОS|)
Кстати, остался только один урок теории. Дальше - оттачивание скилла.

Утечки чтоли?

Добавлено (11-04-2011, 17:41)
---------------------------------------------

Quote (pirat9629)
заместь true может стоять чтото другое? например if 1 == true then 1 ето случайное число я правильно понял или вообще не то?)

сравниваються всегда одинаковые зачения.
Например 1 > 5
юнит пехотинец != юнит медведь
И неправильные сравнения
область1 == юнит пехотинец
1 < игрок(1)

Добавлено (11-04-2011, 17:50)
---------------------------------------------

Quote (|DUОS|)
Индекс массива — целое число, либо значение типа, приводимого к целому, указывающее на конкретный элемент массива.

Ну ни фига себе эйншейтн наверное в гробу перевернулся.
Если я не понял что тут говорит об новичках.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Понедельник, 11 Апреля 2011, 17:51:15
 

Blood_ElfДата: Понедельник, 11 Апреля 2011, 18:20:07 | Сообщение # 20
7 уровень
Группа: Проверенные
Сообщений: 415
Награды: 0
Репутация: 92
Блокировки:
хмм... очень похоже на то, что проходим и проходили по информатике..
условия - такая вещь ещё в excel есть. там, по-моему, на русском.
set переменная = значение
не говоря о триггере, такая же вещь есть и в простейших алгоритмах, присвоение значения (x:= a)
цикл - также есть в алгоритмах.
кстати, очень понятно. к зачёту готов!
 

[DUОS]Дата: Понедельник, 11 Апреля 2011, 18:38:14 | Сообщение # 21
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (lawson)
Утечки чтоли?

Preload, встраивание в карту кода C, просмотр исходников спеллов стандартного war3 и пр. Ну это уже если кто захочет.

Quote (lawson)
сравниваються всегда одинаковые зачения.

Исключение есть - типы integer и real можно свободно между собою сравнивать.

lawson,
Вопрос: можно ли сравнивать так и почему:

"duos" >= "handl3"


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

DreiiДата: Понедельник, 11 Апреля 2011, 18:46:22 | Сообщение # 22
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
[DUОS], Можно ибо дуос,когда родился повесил хендл)

 

lawsonДата: Понедельник, 11 Апреля 2011, 20:29:27 | Сообщение # 23
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Blood_Elf,
Сравнение есть в любом языке програмирования.
Quote (|DUОS|)
Вопрос: >

ответ: нет так как duos не может быть больше hanld!


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Вторник, 12 Апреля 2011, 17:48:07
 

Blood_ElfДата: Понедельник, 11 Апреля 2011, 20:30:46 | Сообщение # 24
7 уровень
Группа: Проверенные
Сообщений: 415
Награды: 0
Репутация: 92
Блокировки:
я лишь хотел высказать, что JASS, как и любой язык программирования, построен на алгоритмах.
 

lawsonДата: Понедельник, 11 Апреля 2011, 20:31:53 | Сообщение # 25
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Blood_Elf)
любой язык программирования, построен на алгоритмах.

!


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Урок 3] Циклы, условия, массивы
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2022 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz