вызывается один раз при запуске игры, в ней будет инициализация всех переменных, функций и "классов"
Вторая
Код
function App:Loop() return true end
Эта фунция вызывается каждый кадр пока мы находимся в игре. В не будем писать все, что обновляется/изменяется во время игры
итак, первая ф-ия:
Код
function App:Start() --эта функция вызывается один раз при запуске
-- функции движка для открытия окна и тд.. self.window=Window:Create(self.title) self.context=Context:Create(self.window,0) self.world=World:Create()
--эта переменная будет хранить координаты курсора мыши mpos = Vec2(1,1)
--создаем класс автомобилей car = {} function car:new(name,ico) local obj = {} obj.name = name or "UAZ" --имя поумолчанию obj.ico = ico or Texture:Load("auto1.tex") --картинка машины поумолчанию obj.pos = Vec2(mpos.x, mpos.y) --координаты создания автомобиля setmetatable (obj,self) self.__index = self return obj end
-- функция для отрисовки автомобиля на экране function car:draw() return self.ico,self.pos.x, self.pos.y end
--функция для смены картинки автомобиля после его создания function car:get() self.ico = Texture:Load("auto2.tex") end
-- функция для оживления автомобиля function car:upd() self.pos.x = self.pos.x + (1 * Time:GetSpeed()) --двигает авто вправо end
--создадим массив для хранения всех экземпляров автомобилей mob = {} k_mob = 0 -- эта переменная будет считать машины
------------- НАСЛЕДОВАНИЕ И ПОЛИМОРФИЗМ--------------------------- -- создание "класса" мотоциклов moto = {}
-- переопределим функцию обновления, будем двигать мотоцикл в противоположную сторону function moto:upd() self.pos.x = self.pos.x - (1 * Time:GetSpeed()) end setmetatable(moto,{__index = car})
-- создадим массив для хранения всех мотоциклов m = {} k_mot = 0 -- эта переменная будет считать мотоциклы
return true end
Теперь фторая функция:
Код
function App:Loop()
if self.window:Closed() or self.window:KeyDown(Key.Escape) then return false end --для выхода из игры
--нажатием ЛКМ создаем автомобиль поумолчанию if self.window:MouseHit(1) then k_mob = k_mob+1 --считаем машины mob[k_mob] = car:new() end --нажатием на КОЛЕСИКО мыши меняем картинку последнего созданного автомобиля if self.window:MouseHit(3) then mob[k_mob]:get() end
--нажатием ПКМ создаем мотоцикл if self.window:MouseHit(2) then k_mot = k_mot+1 m[k_mot] = moto:new(nil,Texture:Load("moto.tex")) end
--функции движка для обновления и рендера. self.world:Update() self.world:Render() self.context:Clear();
--рисуем и обновляем сразу все автомобили for i=1,#mob do self.context:DrawImage(mob[i]:draw()) mob[i]:upd() end
--рисуем и обновляем все мотоциклы for i=1,#m do self.context:DrawImage(m[i]:draw()) m[i]:upd() end
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «ООП в LUA: От слов к практике», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]