fox II/IDEC networks :: std.prog :: | Login |
-- $Name: модуль fmt при работе box$ require "fmt" global { sizeX = 16; } -- room { nam = 'main'; onenter = function () place 'vectes'; place 'modum'; end; } -- obj { nam = 'modum'; dsc = '{^^нажать, чтобы изменить шкалу}'; act = function () sizeX = rnd (16,255); return; end; }; -- obj { nam = 'vectes'; dsc = function () p (fmt.img('box:' .. tostring(sizeX) .. 'x' .. tostring(32) .. ',red,255')); p (fmt.img('box:' .. tostring(256-sizeX) .. 'x' .. tostring(32) .. ',blue,255')); -- внедрение числовой переменной в аргумент, пример данный techniX return; end; };
obj { nam = 'idti'; dsc = function () p ('{',fmt.img'data/idti.png','}'); -- кликабельная картинка кнопки. end; act = function () walk 'e0'; -- переход или любое действие по нажатию на картинку. end; }
act = function () -- тело текущей функции fire() -- имя пользовательской ф-ции со скобками end;
fire = function () -- пользовательсяка функция для многократного использования p 'Вы находитесь рядом с источником тепла.'; -- еще здесть могут быть помещены формулы, -- меняющие состояние игры -- статус игрока, комнат и объектов. end; -- room { nam = 'main'; obj = {'лес'}; } -- obj { nam = 'лес'; dsc = 'Вы в лесу, на опушке горит {костёр}.'; act = fire; -- применение пользовательской функции. };
obj { nam = 'лес'; dsc = 'Вы в лесу, на опушке горит {костёр}.'; act = function() p "Вы приблизились к костру."; Fire() end; -- применение пользовательской функции. };
fire = function () -- пользовательсяка функция для многократного использования p 'Вы находитесь рядом с источником тепла.'; -- еще здесть могут быть помещены формулы, -- меняющие состояние игры -- статус игрока, комнат и объектов. end; -- room { nam = 'main'; obj = {'лес'}; } -- obj { nam = 'лес'; dsc = 'Вы в лесу, на опушке горит {костёр}.'; act = fire; -- применение пользовательской функции. };
obj { nam = 'лес'; dsc = 'Вы в лесу, на опушке горит {костёр}.'; act = function() p "Вы приблизились к костру."; Fire() end; -- применение пользовательской функции. };
}: with { 'meal', 'wood', 'fuel'; }:close()
function round(num, numDecimalPlaces) return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num)) end obj { nam = 'вычесть'; dsc = '{Вычесть.}'; act = function () hot = round(hot - 0.2, 2) -- округляем! end; }
global { hot = 20; hotmax = 20; ... (иные числовые переменные) }
function test() return 10 end print(test()) -- выведет 10 function test2() return end print() -- выведет пустоту
if s.burned then p "сгорел" end p "не сгорел"
if s.burned then p "сгорел" return -- мы вышли из функции end p "не сгорел"
if s.burned then p "сгорел" else p "не сгорел" end
-- create own class container cont = std.class({ -- создаем класс cont display = function(s) -- переопределяем метод показа предмета local d = std.obj.display(s) if s:closed() or #s.obj == 0 then return d end local c = s.cont or 'Внутри: ' -- описатель содержимого local empty = true for i = 1, #s.obj do local o = s.obj[i] if o:visible() then empty = false if i > 1 then c = c .. ', ' end c = c..'{'..std.nameof(o)..'|'..std.dispof(o)..'}' end end if empty then return d end c = c .. '.' return std.par(std.space_delim, d, c) end; }, std.obj) -- мы наследуемся от стандартного объекта
cont { nam = 'ящик'; dsc = [[Тут есть {ящик}.]]; cont = 'В ящике: '; }: with { 'яблоко', 'груша'; }