Четверг, 28 Марта 2024, 17:10

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [354]
Статьи об общих понятиях связанных с созданием игр.
Программирование [82]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [144]
Статьи о программах для создания игр, уроки и описания.
Софт [39]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [16]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [160]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [128]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Сколько вы уже создали своих игр?
Всего ответов: 16611
Главная » Статьи » Программирование

Lua. Туториал для начинающих. Часть 2
Продолжение прошлой статьи. Поехали.
--==========================
§8. Блок do ... end.

Ничего нечто особенного из себя не представляет. Туда просто можно добавить некоторую группу выполняемых операций.
Может быть полезен, допустим, для убийства локальных переменных которые потом необходимо будет объявить заново:

Код
var1 = 1;  
var2 = 2;  
var3 = 3;  
a = 11;  
b = 22;  
c = 33;


Код
do  
  local v1,v2,v3 = var1,var2,var3  
  print(v1+v2+v3);--6  
end -- теперь локальные переменные v1, v2 и v3 можно объявить снова


Код
local v1,v2,v3 = a,b,c  
print(v1*v2*v3); -- 7 986

--==========================
§9. Ещё об операторе not.

Он также имеет способность возвращать противоположное boolean-значение переменной:

Код
a = 1; -- boolean-значение переменной — true
b = true; -- здесь тоже
print(not a); -- false
print(not b); -- false

c = false;
d = nil;
print(not c); -- true
print(not d); -- true

--==========================
§10. Циклы.

-------------------------

§10.1. Арифметический цикл.

Выполняет действие заданное кол-во раз. Имеет следующую конструкцию:

Синтаксис:

Код
for ... do  
  ...  
end


Пример:

Код
for i=1,10 do  
  print("....");  
end


Число 1 — с какого числа надо начинать цикл, 10 — до скольки продолжать. Первое число не может быть меньше одного.
Переменная i может быть любой другой:

Код
for j=1,10 do  
  ...  
end


Также эта переменная является локальной — после окончания цикла она перестанет существовать. Если надо, её можно сохранить:

Код
H = 1;  
for i=1,20 do  
  print("...");  
  H = i;--сохраняем переменную  
end


Чтобы преждевременно закончить цикл, можно воспользоваться оператором break:

k = 1;
for i=1,50 do
k = k + 1;
if k == 25 then
break
end
end

Оператор break должен стоять в конце цикла. Если же этого не надо, то можно отнести его в отдельный блок do ... end, о котором говорилось ранее:

Код
k = 1;
for i=1,60 do
  k = k + 2;
  do
  break
  end
  k = k - 20;
end


Также, если написать break так:

Код
k = 1;  
for i=1,10 do  
  k = k + 1;  
  break  
end


Тогда цикл выполнится только один раз. В дополнение к скрипту выше:

Код
print(k); -- 2


-------------------------

§10.2. Цикл while.

Выполняет цикл до тех пор, пока заданное условие является истинным. Таким образом, цикл может не выполнится ни разу. Имеет следующую конструкцию:

Синтаксис:

Код
while ... do  
  ...  
end


Пример:

Код
a = 1; -- переменная а  
while a < 20 do -- выполнять цикл до тех пор, пока а меньше 20  
  a = a + 1;  
end


В данном примере цикл закончится, когда а будет равна 20.

Оператор break тут тоже уместен.

-------------------------

§10.2.1. Бесконечный цикл.
Как понятно по названию, данный цикл выполняется бесконечно. Конструкция его состоит из цикла while:

Синтаксис:

Код
while true do  
  ...  
end


На самом деле это самый обычный цикл while. Но может пригодится для бесконечного выполнения какой-либо операции.

Пример:

Код
i = 1;  
while true do  
  i = i + 1;  
  if i > 10000 then break end  
end  
print(i);


-------------------------

§10.3. Цикл repeat.

Выполняет действие, пока не выполнится заданное условие. В отличии от while всегда выполнится хотя бы один раз. Конструкция его такова:

Синтаксис:

Код
repeat  
  ...  
until ...


Пример:

Код
n = 1; -- есть переменная n со значением 1  
repeat -- начало цикла  
  n = n + 1;  
until n == 50; -- выполнять цикл, пока n не примет значение 50
print(n); -- напечатается 50


-------------------------

§10.4. Оператор return для циклов.

В случае для циклов данный оператор полностью повторяет оператор break:

Код
a = 10;
for i=1,10 do
  a = a + 1;
  if a == 15 then return end
end
print(a); -- 15


Ну, в общем, тут всё понятно.

-------------------------

§10.5. Циклы обхода элементов таблиц и массивов.

Данные два цикла пока ещё рано изучать, так как ещё не приступили к изучению таблиц. Просто скажу, что к циклам вернёмся в будущих параграфах.
--==========================
§11. Математические выражения.

Название говорит само за себя. Каждая функция начинается с «math.» (сокр. от англ. «mathematics» — 'математика'), затем следует имя функции и в скобках выражение.
Таких выражений достаточно много. О них будет сказано ниже.

-------------------------

§11.1. Виды математических выражений.

math.abs (x):

Возвращает модуль x.

math.acos(x):

Возвращает арккосинус x (в радианах).

math.asin(x):

Возвращает арксинус x (в радианах).

math.atan(x):

Возвращает арктангенс x (в радианах).

math.atan2(x,y):

Возвращает арктангенс x/y (в радианах), но использует знаки обоих параметров для вычисления «четверти» на плоскости. (Также корректно обрабатывает случай, когда y равен нулю.)

math.ceil(x):

Возвращает наименьшее целое число, большее или равное x. (Округление «вверх».)

math.cos(x):

Возвращает косинус x (угол — в радианах).

math.cosh(x):

Возвращает кошинус (гиперболический косинус) x.

math.deg(x):

Переводит угол, заданный в радианах (x) в градусы.

math.exp(x):

Возвращает ex.

math.floor(x):

Возвращает наибольшее целое число, меньшее или равное x. (Округление «вниз».)

math.fmod(x,y):

Возвращает остаток от деления x на y.

math.frexp(x):

Возвращает m и e такие, что x = m2e, e — целое, а модуль m находится в интервале [0.5,1) (либо ноль, если x равен нулю). (Разложение числа с фиксированной запятой.)

math.huge:

Значение HUGE_VAL, значение большее, либо равное любому числовому значению.

math.ldexp(m,e):

Возвращает m2e (e должно быть целым). (Восстановление значения по мантиссе и показателю.)

math.log(x):

Возвращает натуральный логарифм x.

math.log10(x):

Возвращает логарифм x по основанию 10.

math.max(x,...):

Возвращает максимальный из аргументов.

math.min(x,...):

Возвращает минимальный из аргументов.

math.modf(x):

Возвращает два числа, целую часть x и дробную часть x.

math.pi:

Значение pi, то есть 3,14159....

math.pow(x,y):

Возвращает x^y. (Также можно использовать запись x^y для вычисления значения этой функции.)

math.rad(x):

Конвертирует угол x, заданный в градусах, в радианы.

math.random([m [, n]]):

Эта функция является интерфейсом к простейшему генератору псевдослучайных чисел rand, предоставляемому ANSI C. (Нет никаких гарантий по поводу его статистических свойств.)

При вызове без аргументов возвращает псевдослучайное действительной число в интервале [0,1). При вызове с аргументом m math.random() возвращает псевдослучайное целое число из отрезка [1, m].
При вызове с двумя аргументами — m и n math.random() возвращает псевдослучайное целое число из отрезка [m, n].

math.randomseed(x):

Инициализирует генератор псевдослучайных чисел параметром x («seed»): каждый параметр порождает соответствующую (но одну и ту же) последовательность псевдослучайных чисел.

math.sin(x):

Возвращает синус x (аргумент — в радианах).

math.sinh(x):

Возвращает шинус (гиперболический синус) x.

math.sqrt(x):

Возвращает квадратный корень x. (Также можно использовать выражение x^0.5 для вычисления этого значения.)

math.tan(x):

Возвращает тангенс угла x (аргумент — в радианах)

math.tanh(x):

Возвращает гиперболический тангенс x.

-------------------------

§11.2. Подробный разбор некоторых функций.

math.abs:

Код
a = -1;
print(math.abs(a)); -- 1

Модуль — это положительное значение числа.

math.max:

Код
a = 1;
b = 2;
c = 3;
d = 4;
e = 5;

print(math.max(a,b,c,d,e)); -- 5, то есть e


math.min:

Код
a = 1;  
b = 2;  
c = 3;  
d = 4;  
e = 5;  

print(math.min(a,b,c,d,e)); -- 1, то есть a


math.pi:

Код
print(math.pi); -- 3,1415926535898


math.pow:

Код
a = 5;
b = 2;

print(math.pow(a,b)); -- 25

Тут происходит возведение в степень.

Можно и так:

Код
print(a^b); -- 25


math.sqrt:

Код
a = 144;

print(math.sqrt(144)); -- 12

Здесь из числа извлекается арифметический квадратный корень.

Можно и так:

Код
print(a^0.5); -- 12


math.random:

Код
print(math.random()); -- рандомная десятичная дробь в интервале от 0 до 1.
print(math.random(10)); -- рандомное число в отрезке от 1 до 10
print(math.random(5,10)); -- рандомное число в отрезке от 5 до 10


Продолжение следует...
Категория: Программирование | Добавил: TranZIt (27 Июня 2016)
Просмотров: 14851 | Рейтинг: 4.7/18 |
Теги: туториал, для новичков, уроки, язык программирования, программирование, кратко и понятно, основы, Скриптование, с подробными примерами, LUA
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Lua. Туториал для начинающих. Часть 2», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Away3D
  • Creatry
  • RealmForge
  • Starling
  • PrBoom-plus
  • PICO-8
  • Bladecoder Adventure Engine
  • Sparrow
  • QCake
  • Retro Puzzle Maker
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг