Author Topic: Начинаю работу над ботом по игре Drag racing (Уличные гонки)  (Read 6737 times)

0 Members and 1 Guest are viewing this topic.

progressiv13

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Игра на мобильной платформе, скрипт будет работать ссылаясь на программу NOX.
Впервые связался с кликерманом, да и в принципе с языками программирования.

Набросал маленько:
Code: (clickermann) [Select]

// дата 09.01.2018
#name "Drag racing(Уличные гонки)"

// ver 1.1 Полный проезд трассы v 1.1
// НАСТРОЙКИ! (Поменять под ваше разрешение и расположение)
$z=0 //начальный пиксель для поиска по оси x (расположение индикатора прогрева резины)
$x=0  //начальный пиксель для поиска по оси y (расположение индикатора прогрева резины)
$c=0  //конечный пиксель для поиска по оси x  (расположение индикатора прогрева резины)
$v=0  //конечный пиксель для поиска по оси y  (расположение индикатора прогрева резины)
$a=0  //начальный пиксель для поиска по оси x  (расположение тахометра)
$s=0  //начальный пиксель для поиска по оси y  (расположение тахометра)
$d=0  //конечный пиксель для поиска по оси x   (расположение тахометра) 
$f=0  //конечный пиксель для поиска по оси y   (расположение тахометра) 
$q=0 //начальный пиксель для поиска по оси x  (расположение спидометра) 
$w=0 //начальный пиксель для поиска по оси y  (расположение спидометра) 
$e=0 //конечный пиксель для поиска по оси x   (расположение спидометра) 
$r=0 //конечный пиксель для поиска по оси y   (расположение спидометра) 
$t=0 //начальный пиксель для поиска по оси x  (окончание заезда) 
$y=0 //начальный пиксель для поиска по оси y  (окончание заезда) 
$u=0 //конечный пиксель для поиска по оси x   (окончание заезда)
$i=0 //конечный пиксель для поиска по оси y   (окончание заезда) 

KEYPRESS(#1) // Заводим автомобиль
WAITMS(100)  // Задержка 100 мс
KEYDOWN(#2) // нажимаем на тормоз
KEYDOWN(#1) // нажимаем на газ, начинаем прогрев резины.

WHILE ($b=0)  // Поиск необходимого значения индикатора прогрева резины
WAITMS(10)
GETSCREEN ($z,$x, $c,$v)
IF_PICTURE_IN ($z,$x, $c,$v, "прогрев резины.bmp", -1, 100)
KEYUP(#2)   // отпускаем тормоз
$b=1
  END_IF
  END_CYC

WHILE ($n=0)  // Поиск своевременного нажатия на газ для максимального взаимодействия двигателя с турбиной.
WAITMS(10)
GETSCREEN ($a,$s, $d,$f)
IF_PICTURE_IN ($a,$s, $d,$f, "старт.bmp", -1, 100)
KEYUP(#1)   // отпускаем газ
$n=1
  END_IF
  END_CYC
 
KEYDOWN(#1) // Нажимаем газ (запуск отсчета старта)

WHILE ($m<6) // Своевременное переключение
WAITMS(10)
GETSCREEN ($t,$y, $u,$i)
IF_PICTURE_IN ($t,$y, $u,$i, "ОКОНЧАНИЕ.bmp", -1, 100)
KEYUP(#1)
GOTO(skip)
else
GETSCREEN ($q,$w, $e,$r)
IF_PICTURE_IN ($q,$w, $e,$r, "переключение на 2 передачу.bmp", -1, 100)
KEYDOWN(#3) // выжимаем сцепление
KEYPRESS(#4) // переключаем передачу на 2
WAITMS(5) // Задержка 5 мс
KEYUP(#3) // Отпускаем сцепление
$m+1
else
GETSCREEN ($q,$w, $e,$r)
IF_PICTURE_IN ($q,$w, $e,$r, "переключение на 3 передачу.bmp", -1, 100)
KEYDOWN(#3)
KEYPRESS(#4)
WAITMS(5)
KEYUP(#3)
$m+1
else
GETSCREEN ($q,$w, $e,$r)
IF_PICTURE_IN ($q,$w, $e,$r, "переключение на 4 передачу.bmp", -1, 100)
KEYDOWN(#3)
KEYPRESS(#4)
WAITMS(5)
KEYUP(#3)
$m+1
else
GETSCREEN ($q,$w, $e,$r)
IF_PICTURE_IN ($q,$w, $e,$r, "переключение на 5 передачу.bmp", -1, 100)
KEYDOWN(#3)
KEYPRESS(#4)
WAITMS(5)
KEYUP(#3)
$m+1
else
GETSCREEN ($q,$w, $e,$r)
IF_PICTURE_IN ($q,$w, $e,$r, "переключение на 6 передачу.bmp", -1, 100)
KEYDOWN(#3)
KEYPRESS(#4)
WAITMS(5)
KEYUP(#3)
$m+1
END_IF
END_IF
END_IF
END_IF
END_IF
skip:
END_IF
END_CYC
$m=0
$b=0
$n=0

Начал как мне кажется с самого сложного, с полного проезда трассы на механике.
Позже буду реализовывать полностью автоматизированного бота. Ну это как получится конечно.
Принимаю критику, правки и обвинение в нубстве)))

Заранее спасибо вам опытные пользователи этой чудопрограммы)))
« Last Edit: January 10, 2018, 12:52:22 PM by progressiv13 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Code: (clickermann) [Select]
        END_IF     //заканчиваем сравнение
    END_CYC    //заканчиваем цикл
END_IF     //заканчиваем сравнение
Чёт вспомнилось:
Коса, косарь, кошу...
КОСА, КОСАРЬ, КОШУ.
Лес, лесник, ...

Зачем всё забито комментариями банальных вещей. Можно написать для чего этот код или почему именно такой.
А
Code: (clickermann) [Select]
$b = 1  // присваиваем переменной b целочисленное значение 1не несёт никакой пользы, т.к. это читается из кода.

Пастернака не читал, но вижу что вот это всё
Code: (clickermann) [Select]
$m=0  //значение для цикла (цикл 3 переключение на 2 передачу)
$l=0 //значение для цикла (цикл 4 переключение на 3 передачу)
$k=0 //значение для цикла (цикл 5 переключение на 4 передачу)
$j=0 //значение для цикла (цикл 6 переключение на 5 передачу)
$h=0 //значение для цикла (цикл 7 переключение на 6 передачу)
$g=0 //значение для цикла (цикл 8 окончание заезда)
можно заменить одной переменной в которой и будет указана текущая скорость.
Соответственно и минимум 3 последних куска кода с переключением свернуться в один. Я бы свернул все 6, они ведь ничем не отличаются вроде.
« Last Edit: January 09, 2018, 06:23:46 PM by Vint »


progressiv13

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Вы бы проверочку работоспособности в игре всё -же сделали прежде чем писать 150 строк кода.
Домой доберусь протещу.

progressiv13

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Зачем всё забито комментариями банальных вещей. Можно написать для чего этот код или почему именно такой.

Так как пользоваться будут те люди которые совсем не в зуб ногой, для них и пишу.
Я думал над числовым, но как я выдерну скорость с игры?
или вы имеете ввиду с оператором "или"? и всё это совершить в одно действие, ну или в два так как у меня на машине на одной 3 передачи и мне достаточно у кого то 4-5-6. поэтому и написал после переключения на четвертую дополнительное условие с поиском.

Я только начинаю изучать Кликерман, поэтому и был принят единственный на тот момент известный вариант вариант найти картинку и когда она будет найдена совершить действие.

Как и говорил все впервые, поэтому через муки боль и страдание)))

progressiv13

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
$b=1        // меняем значение чтобы следующий поиск начинался корректно
вообще все эти смены значений непонятно зачем введены, ведь скрипт линейный в конце стоит HALT
и при новом запуске все эти переменные снова будут равны ноль.

То есть если убрать $n=1 при цикле он будет возвращаться именно к этому WHILE ($n=0), а не к какому то другому?
Если так то это упрощает задачу и укорачивает значительно код скрипта, который в дальнейшем будет только разрастаться.
Спасибо за советы! Просто хотел услышать жизнеспособные ли мои труды и в правильном ли я иду направлении.

progressiv13

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
как было сказано ранее, все прекрасно сводится к одной подпрограмме и на её основе можете продолжать дальнейшую работу над своим ботом.
Тёще привет!  ;D
Code: (clickermann) [Select]
//********** НАСТРОЙКИ*************

Спасибо попробую разобраться в вашем коде.
Обязательно передам, в апреле, когда увижу её)))