Author Topic: while-for в sub'е  (Read 6104 times)

0 Members and 1 Guest are viewing this topic.

Iblue2d2bida

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
while-for в sub'е
« on: May 31, 2014, 05:09:05 AM »
Code: [Select]
sub(g)
while($mymper5 = 0)
keydown(57)
waitms(100)
keyup(57)
print("2")
waitms(200)
end_cyc
 end_sub
sub(mp)
chick()
print("!")
if($mymper5 = 1)
print("@")
g()

end_if
end_sub

mp()
halt
так в не принтует "2",т.е. не заходит в while?
Code: [Select]
sub(g)
for($q3,$q3 < 3)
KEYDOWN(57)
print("2")
Waitms(1500)
KEYUP(57)
end_CYC
 end_sub
sub(mp)
chick()
print("!")
if($mymper5 = 1)
print("@")
g()

end_if
end_sub

mp()
halt
и так не работает.

Code: [Select]
sub(g)
if($mymper5 = 0)
else
keydown(57)
waitms(100)
keyup(57)
print("2")
waitms(200)
end_if
 end_sub
sub(mp)
chick()
print("!")
if($mymper5 = 1)
print("@")
g()

end_if
end_sub

mp()
halt
так все в порядке. v4.10,win 8.1.у всех так?или где-то ошибся?

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: while-for в sub'е
« Reply #1 on: May 31, 2014, 10:30:29 AM »
Обьяви переменную передд вызовом саба и внутри саба выведи в лог значение переменной
И понятно будет

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: while-for в sub'е
« Reply #2 on: May 31, 2014, 10:34:09 AM »
g() вызывается при $mymper5 = 1
А while внутри выполняется только при $mymper5 = 0
А что ты ожидал?


Iblue2d2bida

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: while-for в sub'е
« Reply #3 on: June 01, 2014, 04:20:29 AM »
под состоянием аффекта писал.

Code: (clickermann) [Select]
$dol = pxl(111,111)
$pd = 1111111
$dolper = 0
SUB(c)
GETSCREEN
waitms(100)
IF($dol = $pd) //  заменил на IF_PIXEL_IN(111,111,111,111, $pd)
 $dolper = 1
 ELSE //ecли нет
 $dolper = 0
 end_if
END_SUB

start:
cHICK()

while($dolper = 0)
waitms(100)
keypress(#1)
waitms(200)
c()
end_cyc

halt
goto(start)
Всем спасибо,решил сам.IF не корректно работал, и даже при самостоятельной проверки на наличия пикселя нужного цвета,IF отказывался менять переменную.
Изменил на IF_PXEL_IN и все работает на ура.
« Last Edit: June 01, 2014, 12:38:38 PM by Oraven »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: while-for в sub'е
« Reply #4 on: June 01, 2014, 12:45:08 PM »
pxl(111,111) до GETSCREEN вызывает а потом в цикле два числа в двух переменных ($dol = $pd) пытается "гетскренить"  ;D

Зачем все так усложнять этими подпрограммами ?!
Code: (clickermann) [Select]
$pd = 1111111
$dolper = 0

while($dolper = 0)
   keypress(#1)
   waitms(200)
   GETSCREEN
   IF(pxl(111,111) = $pd)
      $dolper = 1
   ELSE
      $dolper = 0
   end_if
end_cyc

halt
« Last Edit: June 01, 2014, 12:52:18 PM by Oraven »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: while-for в sub'е
« Reply #5 on: June 02, 2014, 08:24:32 AM »
Да уж... А потом "IF не корректно работал".
Ну вот зачем сразу валить на программу. Прочитает посетитель такие посты и подумает, что простые условия невозможно заставить корректно работать. В программе есть баги, но не нужно вешать всех собак. В первую очередь пересмотреть скрипт.


Iblue2d2bida

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: while-for в sub'е
« Reply #6 on: June 03, 2014, 09:38:57 AM »
уважаемые.раз использовал sub,значит задумывалось сократить скрипт и сделать более читабельным.однако,уже понял,что лучше использовать то,что проверенно.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: while-for в sub'е
« Reply #7 on: June 03, 2014, 09:54:22 AM »
Да используй, кто же спорит. Только ты не правильно делаешь. Проверенность здесь не при чём.

pxl  это функция, она получает цвет пиксела во время своего вызова. В том месте, где написана. У тебя это первая строка
Code: (clickermann) [Select]
$dol = pxl(111,111)
Вот перед ней как минимум должен быть GETSCREEN.
Это одно.
В этой же 1 строке $dol  получила значение цвета и всё..., больше ты её нигде не меняешь.
А ждать и проверять IF-ом хоть в сабе, хоть без саба бесполезно.
Ну вот оно же в SUB-е
Code: (clickermann) [Select]
$pd = 1111111
$dolper = 0
SUB(c)
   GETSCREEN
   waitms(100)
   IF(pxl(111,111) = $pd)
      $dolper = 1
   ELSE //ecли нет
      $dolper = 0
   end_if
END_SUB


Iblue2d2bida

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: while-for в sub'е
« Reply #8 on: June 03, 2014, 10:40:03 AM »
еще раз ,пожалуйста,для особо отрешенных. По моей задумке в переменной ($dol) просто задается фиксированный координат,который потом будет вызывать в условии while или if для последующего сравнения с заданным цветом в другой переменной($pd).

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: while-for в sub'е
« Reply #9 on: June 03, 2014, 10:46:32 AM »
еще раз ,пожалуйста,для особо отрешенных. По моей задумке в переменной ($dol) просто задается фиксированный координат,который потом будет вызывать в условии while или if для последующего сравнения с заданным цветом в другой переменной($pd).
я понимаю почему у вас не получается написать скрипт рабочий, ваши мысли стольже сумбурны как и логика скрипта.

перефразируйте нифига не понятно

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: while-for в sub'е
« Reply #10 on: June 03, 2014, 11:15:50 AM »
еще раз ,пожалуйста,для особо отрешенных. По моей задумке в переменной ($dol) просто задается фиксированный координат,который потом будет вызывать в условии while или if для последующего сравнения с заданным цветом в другой переменной($pd).

Все понятно. функцию в переменную нельзя запихнуть, нужно использовать две переменные чтобы подставлять координаты в функцию.

Code: (clickermann) [Select]
$dol1 = 111
$dol2 = 111

$pd = 1111111
$dolper = 0
SUB(c)
   GETSCREEN
   IF(pxl($dol1,$dol2) = $pd)
      $dolper = 1
   ELSE //ecли нет
      $dolper = 0
   end_if
   waitms(100)
END_SUB

start:
cHICK()

while($dolper = 0)
   waitms(100)
   keypress(#1)
   waitms(200)
   c()
end_cyc

halt
goto(start)

Iblue2d2bida

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: while-for в sub'е
« Reply #11 on: June 03, 2014, 11:52:05 AM »
еще раз ,пожалуйста,для особо отрешенных. По моей задумке в переменной ($dol) просто задается фиксированный координат,который потом будет вызывать в условии while или if для последующего сравнения с заданным цветом в другой переменной($pd).

Все понятно. функцию в переменную нельзя запихнуть, нужно использовать две переменные чтобы подставлять координаты в функцию.

Code: (clickermann) [Select]
$dol1 = 111
$dol2 = 111

$pd = 1111111
$dolper = 0
SUB(c)
   GETSCREEN
   IF(pxl($dol1,$dol2) = $pd)
      $dolper = 1
   ELSE //ecли нет
      $dolper = 0
   end_if
   waitms(100)
END_SUB

start:
cHICK()

while($dolper = 0)
   waitms(100)
   keypress(#1)
   waitms(200)
   c()
end_cyc

halt
goto(start)

спасибо,этим я пользовался.переоценил возможности кликермана.Вопрос не в кассу: где можно посмотреть полный набор символов,которые понимает кликерман? "умножить","плюс" - это понятно интуитивно,но хотелось бы увидеть рамки применения и примеры, в частности интересны "не равно" и "или".

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: while-for в sub'е
« Reply #12 on: June 03, 2014, 12:05:20 PM »
Операции сравнения
(a > b) = 1, если a > b (вслучае если a и b строки, сравниваются их длины)
(a < b) = 1, если a < b (вслучае если a и b строки, сравниваются их длины)
(a = b) = 1, если a равно b (поддерживает строки)
(a ! b) = 1, если a неравно b (поддерживает строки)

Логические операторы
На самом деле, битовые операции (см. учебную статью на форуме). Однако в контексте данного параграфа просто позволяют объединять логические выражения и операции сравнения в комплексные условия
Логическое И: (a & b) = 1 если и a = 1 и b = 1
Логическое ИЛИ: (a | b) = 1 если a = 1 или b = 1, или оба
Логическое исключающее ИЛИ: (a ^ b) = 1 если только a = 1 или только b = 1, но не оба



Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: while-for в sub'е
« Reply #13 on: June 03, 2014, 01:21:57 PM »
еще раз ,пожалуйста,для особо отрешенных. По моей задумке в переменной ($dol) просто задается фиксированный координат,который потом будет вызывать в условии while или if для последующего сравнения с заданным цветом в другой переменной($pd).
"Задумка" у тебя отрешённая как и реализация.
« Last Edit: June 03, 2014, 01:26:21 PM by Vint »


JacsoN

  • Активный участник
  • ***
  • Posts: 152
  • извините но мне нужны полнейшие обяснения
    • View Profile
Re: while-for в sub'е
« Reply #14 on: February 21, 2021, 07:43:58 PM »
так я  думаю ету  тему стоит поднять в  верх ! ! !   есть тут   полезное  обьяснение
если  есть  возможность  объясни  по  скайпу  что  да  как