Меню сайта
Наш опрос
Как вам Уроки
Всего ответов: 55
Статистика
Форма входа
Мини-чат
200
Поиск
Друзья сайта
  • Оффициальный сайт Love2D
  • Пожертвовать
    Love 2D

    Уроки по Созданию игр и разработке приложений с Love2D

    Главная » Статьи » Уроки LUA для Новичков

    урок в Lua: метатаблицы, часть первая
    итак давайте начнём.
    что такое ООП и зачем оно нужно
    ООП это Объектно Ориентированное Программирование.
    оно предназначено для удобства для создания объектов и их обработке специальными методами.

    создадим функцию конструктор которая создаёт и возвращает объект
    Код

    Objects = {}
    Objects.__index = Objects -- это я и сам не понимаю зачем и как это работает)

    function newObject()
      a = {} -- новый объект
      a.x = 0
      a.y = 0
      return setmetatable(Objects, a)-- создаём объект типа Objects из таблицы а и возвращаем его
    end

    -- мы создали объект типа Objects в котором есть 2 параметра x и y

    --теперь создадим функцию для ихней обработки

    function Objects:setX(value)
      self.x = value -- изменяем x на value
    end

    function Objects:setY(value)
      self.y = value
    end

    function Objects:showData()
      print("x = "..self.x)
      print("y = "..self.y)
    end

    -- теперь тест

    obj1 = newObject()
    obj1:setX(12)
    obj1:setY(42)

    obj1:show()--> x = 12 y = 42



    функции встроение в объект называются методами и не существуют в пространстве имён а только в этом объекте
    параметр self это ссылка на себя, например:
    Код


    function Objects:setX(value)
      self.x = value
    end

    obj1:setX(12)

    -- в этом случае self это obj1 а значит сто self.x = obj1.x  



    теперь расскажем об операторах +, -,etc.

    Код


    someObject = {}
    someObject.__add = function(op1, op2)
      return op1.x + op1.x
    end

    obj1 = {x = 12}
    obj2 = {x = 13}

    setmetatable(someObject, obj1)
    setmetatable(someObject, obj2)

    -- как вы знаете таблицы нельзя прибавлять но в этом случае

    print(obj1 + obj2)--> 25
    -- вы наверное подумали WTF?


    сейчас объясню.
    у каждого объекта есть свой оператор (даже у чисел и строк)
    __add - это оператор прибавления
    перед именем оператора должно быть два знака подчёркивания

    Код


    someObject.__add = function(op1, op2)
      return op1.x + op1.x
    end

    -- в этот момент мы переопределили оператор прибавления
    -- чтобы он возвращал сумму x координат каждого объекта
    -- то есть в этом случае : obj1 + obj2 = obj1.x + obj2.x



    под конец первой части вот список некоторых операторов

    __add (+, прибавление)
    __sub (-, вычитание)
    __multiple (*, умножение)
    __divide (/, деление)
    __concat (.., конкатенация(это операция сложения строк))
    __index ([index], получение данных из таблицы по индексу)

    спасибо за внимание. Пожертвовать
    Категория: Уроки LUA для Новичков | Добавил: skorp337 (13.04.2013)
    Просмотров: 7672 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Смотри там все для ucoz очень много полезной инфы для ucoz.
    Вот все о роке - социальная сеть для рокеров России
    Также есть сайт, где можно посмотреть даты выхода игр без регистрации.
    Также можете посетить официальный сайт Леонова и .
    популярный сайт новинки игр на pc 2013 с обзорами авто.
    Уделите также внимание рок сайт , лучшие рок песни