Author Topic: Действие если картинки небыло 10 раз  (Read 4410 times)

0 Members and 1 Guest are viewing this topic.

Mihail

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Действие если картинки небыло 10 раз
« Reply #15 on: December 19, 2018, 08:20:02 PM »
Немогу код настроить тот что мне скинули.он неправильно считает

Mihail

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Действие если картинки небыло 10 раз
« Reply #16 on: December 19, 2018, 10:59:44 PM »
он то работает но неточно пишет количество шагов

Mihail

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Действие если картинки небыло 10 раз
« Reply #17 on: December 20, 2018, 11:05:21 AM »
Спасибо.работает точно.я бы сам не долумался что в етом может быть проблема

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Действие если картинки небыло 10 раз
« Reply #18 on: December 20, 2018, 01:48:45 PM »
Щет. Я забыл образцы приложить. Да, их делал ровными по высоте.
Прикрепляю...

Поправил лог, теперь корректный при разнице больше ряда
Code: (clickermann) [Select]
//первое поле (прописываем свои координаты начала)
$startx = 500
$starty = 450

// размер клетки поля
$lx = 34
$ly = 30

// клеток поля...
$kx = 27
$ky = 10

// максимальное расстояние полей для реакции
$max_step = 10

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

IF($only = 0)
    STRSEPARATE("К,П,Ч,Б", ",", $mast)
    $endx = $startx + $lx*$kx
    $endy = $starty + $ly*$ky
    LOGCLEAR
    $only = 1
END_IF

UNDEFINE($coord)
STRSEPARATE("0,0,0,0,0,0,0,0", ",", $coord)

GETSCREEN($startx,$starty, $endx, $endy)
FOR($m=0, $m < 4)
    UNDEFINE($scan)
    SCANPICTURE($scan, $startx,$starty, $endx, $endy, STRCONCAT($mast[$m], ".bmp"))
   
    $a_size = ARRSIZE($scan)
    IF($a_size > 0)
        $coord[$m*2] = $scan[$a_size - 2]
        $coord[($m*2)+1] = $scan[$a_size - 1]
    END_IF
END_CYC

//FOR($i=0, $i < ARRSIZE($coord), 2)
//    $x = $coord[$i]
//    $y = $coord[$i+1]
//    LOGWRITE("x/y  ", $x, "/", $y)
//    MOVE($x,$y)
//    WAIT(1)
//END_CYC

// ищем последнюю букву
$curr_y = 0
FOR($i=0, $i < 8, 2)
    $y = $coord[$i+1]
    IF($y > $curr_y)
        $curr_y = $y
    END_IF
END_CYC
$curr_x = 0
FOR($i=0, $i < 8, 2)
    $x = $coord[$i]
    IF(($coord[$i+1] = $curr_y) & ($x > $curr_x))
        $curr_x = $x
    END_IF
END_CYC
LOGWRITE("current  ", $curr_x, "/", $curr_y)

// считаем расстояние
$result = 100
FOR($m=0, $m < 4)
    $x = $coord[$m*2]
    $y = $coord[($m*2)+1]
    IF(($curr_y - $y) > $ly)
        //LOGWRITE("Разница больше одного ряда")
        $result = $m
        $m = 200
    ELSE
        IF($curr_y > $y)
            $x = $startx - ($endx - $x)
        END_IF
        $step = INT((($curr_x - $x) / $lx) + 0.5)
        LOGWRITE("step ", $mast[$m], "  ", $step)
        IF($step > ($max_step-1))
            $result = $m
            $m = 100
        END_IF
    END_IF
END_CYC

// действие (клик)
IF($result < 100)
    IF($m > 150)
        LOGWRITE("масть ", $mast[$result], " не было больше 27 шагов")
    ELSE
        LOGWRITE("масть ", $mast[$result], " не было ", $step, " шагов")
    END_IF   
   
    SWITCH($result)
        CASE(0)  // К
            LCLICK(1236,388)
        CASE(1)  // П
            LCLICK(923,539)
        CASE(2)  // Ч
            LCLICK(1236,382)
        CASE(3)  // Б
            LCLICK(1257,179)
    END_SWITCH
    WAITMS(500)
END_IF

HALT
« Last Edit: December 20, 2018, 01:58:10 PM by Vint »


Mihail

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Действие если картинки небыло 10 раз
« Reply #19 on: December 20, 2018, 07:54:14 PM »
Огромнейшее спасибо.работает супер.

Mihail

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Действие если картинки небыло 10 раз
« Reply #20 on: December 20, 2018, 10:34:19 PM »
Такой вопрос,в скрипте стоит 4 масти а если мне нужно туда поставить 8 другиг картинок и чтоб он определял так само,что нужно поменять в скрипте?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Действие если картинки небыло 10 раз
« Reply #21 on: December 21, 2018, 09:26:49 AM »
Такой вопрос,в скрипте стоит 4 масти а если мне нужно туда поставить 8 другиг картинок и чтоб он определял так само,что нужно поменять в скрипте?
Дописать сюда
Code: (clickermann) [Select]
STRSEPARATE("К,П,Ч,Б", ",", $mast)
Здесь добавить нулей чтоб было количество букв*2
Code: (clickermann) [Select]
STRSEPARATE("0,0,0,0,0,0,0,0", ",", $coord)
В двух циклах поменять число 4 (кол-во букв)
Code: (clickermann) [Select]
FOR($m=0, $m < 4)
И в двух циклах поменять 8 (кол-во букв*2)
Code: (clickermann) [Select]
FOR($i=0, $i < 8, 2)
А вообще-то об этом нужно говорить до написания, тогда будет правиться в одном месте.

К чему было два раза называть 20 рядов по 50 букв, если их 10х27 ? Зачем эти непонятные шифры?
Если их бывает разное количество, то так нужно сразу и говорить обычно столько-то, но может меняться в таких-то пределах.


Mihail

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Действие если картинки небыло 10 раз
« Reply #22 on: December 21, 2018, 08:56:37 PM »
Я ничего нестараюсь скрыть просто долго обьяснять.если вам интересно то скажу карты от 2 до 7 черного цвета ето знак минус
красного цвета знак плюс
9 10 А красные красный кружок
Черные черный кружок
Валет дама король черные черная решотка
Красные красная решотка
8 черная так и есть 8 черная
8 красная так и есть 8 красная

Mihail

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Действие если картинки небыло 10 раз
« Reply #23 on: December 21, 2018, 09:02:33 PM »
ето на красное черное