Poll

Считаете ли Вы, что игра «Pearls before swine» являтся игрой для интеллектуалов?

Да, эта игра требует определенного интеллектуального развития
1 (33.3%)
Да, но здесь играет свою роль не интеллект, а математические способности и память
0 (0%)
Не знаю, пробовал играть самостоятельно, но без подсказки быстро проигрываю
0 (0%)
Пробовал играть самостоятельно, но интересней смотреть как играет бот
1 (33.3%)
Нет, это совсем не игра, по сравнению со стрелялками это совершенно скучно
1 (33.3%)

Total Members Voted: 3

Author Topic: «Pearls before swine»  (Read 15148 times)

0 Members and 2 Guests are viewing this topic.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: «Pearls before swine»
« Reply #30 on: December 07, 2018, 11:16:52 AM »
А шикарно то другое... КАК ты так сламал кликерман, что он невидим, ни окна, ни редактора, и никак не открыть его  :o ? ПРИЗНАВАЙСЯ!!!

Просто в файле параметров кликера указано положение окна -200 -200

Graubart

  • Освоившийся
  • **
  • Posts: 44
  • Alles wird gut
    • View Profile
Re: «Pearls before swine»
« Reply #31 on: December 07, 2018, 02:29:05 PM »
Одну партию помогло и захватило мышь в центр кнопки GO.
Пока не прибил, не отпускало.

А можно, плз, поподробнее как это "помогло и захватило мышь"? И что значит "Пока не прибил, не отпускало"? Может быть мышка дернулась и Хельпер не успел сделать клик в GO?
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: «Pearls before swine»
« Reply #32 on: December 07, 2018, 02:50:23 PM »
Как обычно это происходит  :D ;)
Зависло где-то в цикле с постоянным MOVE. При сдвиге мыши, она постоянно возвращается в одно место.
Дальше 200 px сдвинуть не успеваешь.

Кликов нет, кнопка не нажималась, да и не должна. Это был второй режим с подсказками. "помогло" в смысле это же помощник  :) Наверное нужно было точку поставить после "Одну партию помогло" {сыграть}.
« Last Edit: December 07, 2018, 02:53:46 PM by Vint »


Graubart

  • Освоившийся
  • **
  • Posts: 44
  • Alles wird gut
    • View Profile
Re: «Pearls before swine»
« Reply #33 on: December 07, 2018, 03:39:53 PM »
Кликов нет, кнопка не нажималась, да и не должна. Это был второй режим с подсказками.

В режиме "2. «Референт»" игрок играет сам, то есть читает подсказку, снимает шары в рекомендованном ряду и жмет GO. Хельпер ждет пока Хуан сделает ход и тогда Хельпер считает шары и дает следующую подсказку. Так что не надо "прибивать", надо просто нажать GO.
В режиме "3. «Счетчик»" прямо написано: "Сделай ход и нажми GO"
« Last Edit: December 07, 2018, 03:58:13 PM by Graubart »
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: «Pearls before swine»
« Reply #34 on: December 07, 2018, 11:00:11 PM »
Одну партию помогло и захватило мышь в центр кнопки GO.
Пока не прибил, не отпускало.

А можно, плз, поподробнее как это "помогло и захватило мышь"? И что значит "Пока не прибил, не отпускало"? Может быть мышка дернулась и Хельпер не успел сделать клик в GO?

Строка 498
Code: (clickermann) [Select]
WHILE($_cursor ! 45)
   MOVE($gox,$goy)
   WAIT(1)
END_CYC

У меня в вин10 код курсора над кнопкой "GO" = 31. Сменил значение, и все заработало.

А что это за написание такое - WAIT(.1)  :-\ . Встретил пару раз в коде. Это наверно сокращенно WAIT(0.1), 100мс?

Еще по мелочам, ... лишний энд_иф 527 стр. ... больше не вникал, итак все работает  :D.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: «Pearls before swine»
« Reply #35 on: December 07, 2018, 11:01:19 PM »
А шикарно то другое... КАК ты так сламал кликерман, что он невидим, ни окна, ни редактора, и никак не открыть его  :o ? ПРИЗНАВАЙСЯ!!!

Просто в файле параметров кликера указано положение окна -200 -200

 :o насколько все просто, а я бы и не догадался  ;D.

Graubart

  • Освоившийся
  • **
  • Posts: 44
  • Alles wird gut
    • View Profile
Re: «Pearls before swine»
« Reply #36 on: December 08, 2018, 03:52:44 PM »
Большое спасибо всем, кто нашел время протестировать проект.

У меня в вин10 код курсора над кнопкой "GO" = 31
Спасибо. Понятно, идея ожидания следующего левела по курсору чревата ошибками. Я совсем забыл, что не так давно установил новую тему курсоров, и у меня код курсора "рука" равен 45. Надо переделать по PXLCOUNT. Так будет универсальнее.

Quote
лишний энд_иф 527 стр.
Лишних энд_ифов нет и не может быть, иначе КМ выдаст ошибку или вовсе зависнет. Скорее всего ты принял метку в конце проекта "end:" за энд_иф. Строк в проекте всего 526.

Quote
А что это за написание такое - WAIT(.1)
Обычное короткое написание. Все языки програмирования и даже калькулятор это принимают. После того как Джонни сделал дробные значения для WAIT, я почти не пользуюсь WAITMS.
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: «Pearls before swine»
« Reply #37 on: December 08, 2018, 09:38:58 PM »
Лишних энд_ифов нет и не может быть, иначе КМ выдаст ошибку или вовсе зависнет. Скорее всего ты принял метку в конце проекта "end:" за энд_иф. Строк в проекте всего 526.
У тебя в конфиг файле syntax_check = 0, вот и не  выдает ошибку. А она есть:


Не знаю как у тебя в проекте строк 526, у меня в твоем проекте показывает вот столько  :) :




Quote
А что это за написание такое - WAIT(.1)
Обычное короткое написание. Все языки програмирования и даже калькулятор это принимают. После того как Джонни сделал дробные значения для WAIT, я почти не пользуюсь WAITMS.

 ::) ... буду знать.

Graubart

  • Освоившийся
  • **
  • Posts: 44
  • Alles wird gut
    • View Profile
Re: «Pearls before swine»
« Reply #38 on: December 09, 2018, 02:46:25 PM »
Не знаю как у тебя в проекте строк 526, у меня в твоем проекте показывает вот столько  :) :

Да, ты прав стопудово!  :-[ Оказывается, я в SFX на файлообменнике залил сырой промежуточный вариант кода. А твои веские замечания сравнивал с конечным домашним файлом. Но когда я распаковал тот файл, то всё понял. Там дофига фигни :-\, даже бинар-массив в начале, который благодаря твоему алгоритму теперь совсем не нужен и энд_иф лишний и мувов лишних наворочено. Потому и строк больше. В общем надо найти время и хорошо всё отредактировать. А главное, заменить пикселькаунтом код курсора.
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

Graubart

  • Освоившийся
  • **
  • Posts: 44
  • Alles wird gut
    • View Profile
Re: «Pearls before swine»
« Reply #39 on: December 09, 2018, 03:35:05 PM »
Может достаточно просто привязаться и все заработает без  всяких постмесаджей?
Ну ты мой код просмотрел теперь. Какие замечания к привязке?
Вообще я бы хотел, чтоб привязка происходила автоматом,  без всяких хоткеев Alt+W, но так не получается. И когда окно плеера передвигаешь по экрану (правда, только при открытом меню) при следующем ходе код пересчитывает новые координаты. А вот как от этого избавиться, пока не знаю. Я понимаю так, что если привязался, то ничего не надо пересчитывать, КМ сам всё сделает.

Кстати,
  Проблемы при привязке? Есть решение!!!
Code: (clickermann) [Select]
//A_GETSCREEN
SUB(A_GETSCREEN, $A_x1, $A_y1, $A_x2, $A_y2, $A_hwnd)
   WNDGETINFO ($A_hwnd, $A_x0, $A_y0, $A_width, $A_height)
   IF($A_x1+$A_y1+$A_x2+$A_y2 = 0)
      $A_x2 = $A_width
      $A_y2 = $A_height
   END_IF
   GETSCREEN($A_x0+$A_x1,$A_y0+$A_y1,$A_x0+$A_x2,$A_y0+$A_y2)
END_SUB
попробовал этот код, выдаёт ошибку при вызове функции:РОР


« Last Edit: December 09, 2018, 03:39:23 PM by Graubart »
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: «Pearls before swine»
« Reply #40 on: December 09, 2018, 10:48:17 PM »
Ошибка POP() появляется при вызове подпрограммы выше её описания.


dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: «Pearls before swine»
« Reply #41 on: December 10, 2018, 12:22:52 AM »
Может достаточно просто привязаться и все заработает без  всяких постмесаджей?
Ну ты мой код просмотрел теперь. Какие замечания к привязке?
Вообще я бы хотел, чтоб привязка происходила автоматом,  без всяких хоткеев Alt+W, но так не получается. И когда окно плеера передвигаешь по экрану (правда, только при открытом меню) при следующем ходе код пересчитывает новые координаты. А вот как от этого избавиться, пока не знаю. Я понимаю так, что если привязался, то ничего не надо пересчитывать, КМ сам всё сделает.

Сорри, но я в твоем коде не смог разобраться  :( . Уж очень много там прыжков на метки  :(.

Взял твой  подсчет шаров... и полностью переделал :D

Если привязаться через hset по WNDFIND, то клики не проходят. Hwnd игрового поля отличается от hwnd окна. Поэтому нужно привязываться либо горячими клавишами, либо брать hwnd с помощью HGET.

Написал для теста код для работы в привязке.  Скрипт считает шары в неактивном окне и убирает лишние. Больше он ничего не делает, при старте шары должны быть на столе, и кнопку go жмем вручную.

Из минусов, у меня картинка на игровом поле при привязке иногда искожается. Скорее всего это чето плееру не нравится.

Code: (clickermann) [Select]
//размер и привязка
$hwnd=WNDFIND("Player.swf")
wait(1)
IF($hwnd = 0)
  print("окна нет")
  halt
END_IF

WNDSIZE ($hwnd,736,736)
waitms(200)


//hwnd игровой области отличен от hwnd окна
//поэтому привязку приходится делать по  HGET
//WNDGETINFO ($hwnd, $var1, $var2, $var3, $var4)
//HSET (HGET($var1+60, $var2+60) , 1)
waitms(200)

$stepx=22
$stepy=18
$stepz=0.36
$y = 456


//считаем шары
GETSCREEN
FOR($a=0,$a<7)
   $ball[$a]=0
   $ball_new[$a] = 0
   FOR($kx=0,$kx<23)
      $x=INT(($stepx+$stepz*$a)*$kx+5)
     
      IF(PXL($x,$y)>15000000)
         $ball[$a]=$ball[$a]+1
         $ball_new[$a]=$ball[$a]
         arrpush($ball_xy, $x)
         arrpush($ball_xy, $y)
      END_IF
   END_CYC
   $y = $y + $stepy
END_CYC


print("было - ",$ball[0] , " ", $ball[1], " ",$ball[2], " ", $ball[3], " ",$ball[4], " ", $ball[5], " ",$ball[6])


//расчеты
$i = 0
$l_mem = $ball_new[$i]
WHILE($ball_new[0] ^ $ball_new[1] ^ $ball_new[2] ^ $ball_new[3] ^ $ball_new[4] ^ $ball_new[5] ^ $ball_new[6])
   $ball_new[$i] = $ball_new[$i] - 1
   IF($ball_new[$i] = -1)
      $ball_new[$i] = $l_mem
      inc($i)
      $l_mem = $ball_new[$i]
   END_IF
END_CYC

print("должно быть - ",$ball_new[0] , " ", $ball_new[1], " ",$ball_new[2], " ", $ball_new[3], " ",$ball_new[4], " ", $ball_new[5], " ",$ball_new[6])

//клики по шарам
FOR($a=0,$a<7)
   IF($ball_new[$a] < $ball[$a])
     
      $i = $ball[$a]
      FOR($i_xy=0,$i_xy<$a)
         $i = $i + $ball[$i_xy]
      END_CYC
         
      LCLICK(451,678)  //клик в пустоту на всякий случай.     
      FOR($n=0,$n<$ball[$a]-$ball_new[$a])     
         $x_click = $ball_xy[$i*2 - 2]
         $y_click = $ball_xy[$i*2 - 1]
         $i = $i - 1
         lclick($x_click,$y_click)
         waitms(500)
      END_CYC

   END_IF
END_CYC


halt




По поводу ошибки POP(), Vint уже оветил. Но скорее всего ты параметр  $A_hwnd упустил.
« Last Edit: December 10, 2018, 12:33:05 AM by dramster »

Graubart

  • Освоившийся
  • **
  • Posts: 44
  • Alles wird gut
    • View Profile
Re: «Pearls before swine»
« Reply #42 on: December 22, 2018, 11:37:54 PM »
Эх, запарка была в конце года, но нашел сейчас время забежать на форум.

Сорри, но я в твоем коде не смог разобраться  :( . Уж очень много там прыжков на метки  :(.
Сам ненавижу эти ужимки и прыжки. Но когда делаешь новый проект, то без этого не обойтись. Потом всё редактируется... Вот теперь у меня ни одной метки нет.

Quote
Взял твой  подсчет шаров... и полностью переделал :D
Что-то я ничего нового не обнаружил, по мелочам больше  :D. А ты сам пробовал запустить свой код где-то после 30 левела?

Quote
Скрипт считает шары в неактивном окне и убирает лишние. Больше он ничего не делает, при старте шары должны быть на столе, и кнопку go жмем вручную.
Это у тебя типа полуавтомат? Опускается сам, а поднимается вручную. ;)

Quote
Из минусов, у меня картинка на игровом поле при привязке иногда искожается. Скорее всего это чето плееру не нравится.
А плеер тот что ты скачал или мой? Моему всё нравится.

Quote
Code: (clickermann) [Select]
IF($hwnd = 0)
  print("[b]окна нет[/b]")
  halt
END_IF
Если окна нет, надо не писать, а закрывать программу.

Quote
Code: (clickermann) [Select]
   FOR($kx=0,$kx<23)
Шаров в рядах бывает больше, чем 23, в двух последних максимум 29.

Quote
Code: (clickermann) [Select]
      LCLICK(451,678)  //клик в пустоту на всякий случай.
Этот клик - верный путь к сбою программы

Quote
По поводу ошибки POP(), Vint уже оветил. Но скорее всего ты параметр  $A_hwnd упустил.
Нет, там просто моя невнимательность и спешка  :-\
« Last Edit: December 29, 2018, 04:02:29 PM by Graubart »
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: «Pearls before swine»
« Reply #43 on: December 31, 2018, 11:49:50 AM »
Эх, запарка была в конце года, но нашел сейчас время забежать на форум.
Такая же фигня  :( . Постараюсь с большего...

Quote
Что-то я ничего нового не обнаружил, по мелочам больше  . А ты сам пробовал запустить свой код где-то после 30 левела?
Конечно нет  :D . Моя цель была - проверить, как себя поведет кликерман в привязке с игрой. Для этого пришлось набросать тестовый скрипт, так как в твоем пришлось бы разбираться для смены всех координат. С привязкой в неактивном окне при тестах проходил пару уровней и всё.

Quote
Это у тебя типа полуавтомат?
Хз что это у меня  ;D . Скрипт запускал на готовом поле с шарами, нажимаю старт, нужные шары убираются... да бля, я уже и не помню, да и не важно, привязка работает, а это главное... дальше если кому надо - сам разберется, я там вроде в скрипте немного комментировал  :D

Quote
А плеер тот что ты скачал или мой? Моему всё нравится.
В твоем. При игре с привязкой у меня там чето анимация иногда искажалось  :-\, иногда и шары подвисали. Изза этого могло сыграть в проигрыш.

Quote
Если окна нет, надо не писать, а закрывать программу.
:-\ это уж как кто пожелает. Я для себя просто сделал так, чтоб быть уверенным, что окно с игрой нашлось. Если нет, то - сообщение и стоп.

Quote
Шаров в рядах бывает больше, чем 23, в двух последних максимум 29.
Эти данные я взял гдето из твоего скрипта. 23, или 29, как было так и написал...

Quote
Этот клик - верный путь к сбою программы
С чего это вдруг? Я ж написал, то в пустоту, не по шарам, и не по кнопкам. Зачем я добавил этот клик?... было пару случаев, что первый клик по шару не срабатывал (хз почему), поэтому - первый клик на всякий случай внекуда.