Author Topic: Детектировать разнонаправленные треугольники  (Read 2948 times)

0 Members and 1 Guest are viewing this topic.

HD1521

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Всем доброго.

Появился вот такой вопрос.
На экране имеется карта, на которой "противники" отображаются в виде краных треугольников, которые могут быть ориентированы как угодно по оружности 360 градусов.
Ориентация и координаты центра треугольника  непрерывно меняются.

Как можно анализируя буфер экрана найти все координаты таких треугольников ? Поиск картинки не работает.
Памажите кто может.

Иван_Васильевич

  • Освоившийся
  • **
  • Posts: 72
    • View Profile
Сначала ищется красный пиксель, потом подсчитывается число красных пикселей в ограниченной области от найденного и если соответствует требованиям, то координаты запоминаются в массив, делается отступ на заданное число пикселей и сканирование миникарты продолжается. В игре WoT, мой бот так успешно и быстро  находил цели для арты.

HD1521

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
А можно попросить кусок кода ?

Иван_Васильевич

  • Освоившийся
  • **
  • Posts: 72
    • View Profile
А можно попросить кусок кода ?
Code: (clickermann) [Select]

SUB(тип.танка) // --- опред. тип цели на поле  --------------
   // === переменные для выбора  направления  к цели
   $cel_x=$_return1
   $cel_y=$_return2+$korr_markera
   $strelka_x = $_return1 //
   $strelka_y =  $_return2
   $opr_tip = PXLCOUNT ($_return1-7,$_return2-2, $_return1+7,$_return2+19,2039775)
   LOGWRITE($cwic_tip,"  ","тип-",$opr_tip,"  ", $cel_x,"-",$cel_y,)
   $tip_cel1 =  $opr_tip
  IF ($opr_tip >28)    //  было 28  при нормальном увеличении 
   HINTPOPUP ($cwic_tip,"тип-",$opr_tip)
   LOGWRITE("есть цель-",$cwic_tip,"  ", $cel_x,"-",$cel_y," тип",$opr_tip)
   goto(skip_cel)
ELSE
   SWITCH($cwic_tip)
      CASE(1)
         goto(skip_poisk_celi_1)
      case(2)
         goto(skip_poisk_celi_2)
      DEFAULT
         goto(skip_poisk_celi_3)
   END_SWITCH
END_IF

END_SUB

skip111:
GETSCREEN
WAITMS(30)
COLORMODE(5)    // 350,248,1070,600
WAITMS(30)
$cel_y = 400
skip_poisk_celi_1:
$cwic_tip = 1
IF_PIXEL_IN ( 680,$cel_y+5,760,485, 2039775)
   тип.танка()
END_IF  // ===== 1 поиск в центре завершён===
$cel_y = 340
skip_poisk_celi_2:
$cwic_tip = 2
IF_PIXEL_IN (620,$cel_y+5,820,545, 2039775)
   тип.танка()
END_IF   // ===== второй поиск в центре завершён===
$cel_y = 248
skip_poisk_celi_3:
$cwic_tip = 3
IF_PIXEL_IN (350,$cel_y+5,1070,600, 2039775)
   тип.танка()
ELSE
   goto(skip_2_poisk_celi)
END_IF // ===== 3 поиск в центре завершён===
// ===  поиск цели завершён  ====
Вот небольшой кусок. Насколько помню, бот проверял последовательно три сектора, чтоб выбивать сначала ближайших к себе и подсчитав число пикселей определял тип найденной цели, танк, ПТ ,арта или групповая цель если в область подсчёта попадало несколько врагов стоящих очень близко.
« Last Edit: June 04, 2022, 04:27:23 PM by Иван_Васильевич »

HD1521

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Да, идею уловил, спасибо