Александр (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Таблица для отслеживания состояния кода, Создание таблицы, последнее значение которой будет определять ход процесса
 
Здравствуйте.
Уважаемые форумчане, необходима ваша помощь.
Цель данного кода, найти момент касания определенной линии указанной в таблице t_Lev. Для отслеживания данного момента необходимо применить таблицу t_Sys, которая имеет три значения: 1-коснулись нижней линии; 2- не коснулись ни одной линии; 3-коснулись верхней линии. Нужна именно таблица, что бы знать какая линия была достигнута до перехода в состояние 2, это важно.
Условие касание сейчас выставлены заведомо невыполнимые и при этом код не возвращает линии, даже первые значения.
Код
function Init()   f_LEVEL= LEVEL()
   return #Settings.line
end

function OnCalculate(Index)
local S2Down, S1Down, L1Up, L2Up = f_LEVEL(Index)
   return S2Down, S1Down, L1Up, L2Up
end

function LEVEL()
   t_Sys={}
   t_Sys[1]=3
   t_Sys[2]=2
return function (I)
local S2Down, S1Down, L1Up, L2Up = nil, nil, nil, nil

if I>2 then
   if t_Sys[#t_Sys]==3 then
      S2Down, S1Down, L1Up, L2Up = nil, nil, nil, nil
--      t_Sys[#t_Sys+1]=2
   end

   if t_Sys[#t_Sys]==2 then --пока касание не произошло
      local t_Lev=LINE(I)
      S2Down, S1Down, L1Up, L2Up = t_Lev[1], t_Lev[2], t_Lev[3], t_Lev[4]

      if H(I)>=t_Lev[#t_Lev] then --произошло касание верхней линии
         t_Sys[#t_Sys+1]=3
      end
      if L(I)<=t_Lev[1] then
      t_Sys[#t_Sys+1]=1; --произошло касание нижней линии
      end
   end

   if t_Sys[#t_Sys]==1 then
      S2Down, S1Down, L1Up, L2Up = nil, nil, nil, nil
--      t_Sys_W[#t_Sys_W+1]=2
   end
end
return S2Down, S1Down, L1Up, L2Up
end
end

function LINE(I)
local t_Lev={}
if I>2 then
if t_Sys[#t_Sys-1]==3 then
   for i=1, 2 do
      t_Lev[i]=C(I-i)*0.78
      t_Lev[i+2]=C(I-i)*1.22
   end
end

if t_Sys[#t_Sys-1]==1 then
   for i=1, 2 do
      t_Lev[i]=C(I-i)*0.78
      t_Lev[i+2]=C(I-i)*1.22
   end
end

if H(I)>=t_Lev[#t_Lev] then  -- здесь сравнение указанно как еще один вариант
--   t_Sys[#t_Sys+1]=3
end
if L(I)<=t_Lev[1] then
--   t_Sys[#t_Sys+1]=1;
end
end
return t_Lev
end
Страницы: 1
Наверх