Author Topic: Почему долго перебирается массив координат  (Read 1894 times)

0 Members and 1 Guest are viewing this topic.

resident

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
70 итераций по 140 мс

15:23:57 54788080 скриншот
15:23:57 size=780
15:23:57 54788115 575 22 fast e1
15:23:57 54788117 row 22
15:23:57 54788251 row 23
15:23:57 54788253 575 22 70 e1 вторая строка хп
15:23:57 54788390 row 27
15:23:57 54788535 row 28
15:23:57 54788538 548 27 71 e1 вторая строка хп
15:23:58 54788663 row 38
15:23:58 54788757 row 39
15:23:58 54788760 616 38 54 e1 вторая строка хп
Code: [Select]
thread(scan_e1,0)
  if($screen_num!=$e1_num)
    $e1_num=$screen_num
    SCANPXL($e1_arr, 0,0, 1366,768, 1742)
    $e1_n=arrsize($e1_arr)
    print("size=",$e1_n)
    $e1_row=1
    $e1_start_x=0
    if($e1_n>0)
      for($e1_i=0,$e1_i<$e1_n-1)
        $e1_x=$e1_arr[$e1_i]
        $e1_y=$e1_arr[$e1_i+1]
        if($e1_start_x=0)
          $e1_start_x=$e1_x
          $e1_start_y=$e1_y
          $e1_target=strconcat($e1_start_x," ",$e1_start_y," fast e",$e1_num)
          print($_ms," ",$e1_target)
          arrpush($targets,$e1_target)
          print($_ms," row ",$e1_y)
        end_if


        if($e1_y=$e1_py|$e1_py=0)
          if($e1_x=$e1_px+1)
            inc($e1_row,1)
          else // прерывание строки
            if($e1_start_x=$e1_x) // совпал ряд
            end_if
            $e1_row=1
          end_if
        else // следующая строка

          print($_ms," row ",$e1_y)
          if($e1_x=$e1_start_x) // тот же ряд

            if($e1_start_y+1=$e1_y) // начало в предыдущей строке
              $e1_target=strconcat($e1_start_x," ",$e1_start_y," ",$e1_row," e",$e1_num)
              arrpush($targets,$e1_target)
              print($_ms," ",$e1_target," вторая строка хп")
            end_if

          else // другой ряд - другой противник
            $e1_start_x=$e1_x
            $e1_start_y=$e1_y
          end_if
          $e1_row=1
        end_if

        $e1_px=$e1_x
        $e1_py=$e1_y
        inc($e1_i,1) // +2 для массива координат
      end_cyc
    end_if
  end_if
  setthread(scan_e1,2)
end_thread