Author Topic: Формирование функций от переменных  (Read 7403 times)

0 Members and 4 Guests are viewing this topic.

tmp~1

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Re: Формирование функций от переменных
« Reply #15 on: September 24, 2017, 11:28:52 PM »
Вот же вопрос... (я выделил фразы, которые считаю ключевыми в этом вопросе).
А почему ты взял не первый пост с оригинальным вопросом?

Ну хорошо, вернемся к оригинальному вопросу.  :) И попробуем ответить снова. Поехали..

День добрый.

Требуется задавать масштабируемые значения для переменных, т.е. чтобы координаты для формул прописывались не в явном виде, а как функция = ($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch)) от координаты $x_ishodnoe

Вручную везде по тексту вводить конструкции типа
ldown($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_gr+INT(($y_ishodnoe-$y_gr)*$y_peresch))

или
if ((pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat)=4144959)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(4*$y_peresch))=12566527)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(17*$y_peresch))=12566527)&(pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat+INT(48*$y_peresch))=16744319))

- просто замучаешься. Наверняка есть возможность задания подобных функций, чтобы можно было сокращать до примерно
ldown(функция($x_ishodnoe),функция($y_ishodnoe))
Но увы в описаниях не нашел. Если просто через обычную подпрограмму - то надо вводить какие-то дополнительные переменные чтобы вернуть рассчитанное значение... Явно я что-то в хэлпах не обнаружил? подскажите плз...

День добрый. :)
Уважаемый gsukhado, к сожалению, на данный момент, Clickermann не обладает подобным функционалом, а именно - создание пользовательских функций, ввиду их невостребованности целевой аудиторией.
Если Вам необходима консультация специалистов по оптимизации Вашего кода, то пожалуйста выложите Ваш код здесь, на форуме, в этой теме, вместе с подробным описанием того, что он должен делать. Как показывает практика, ЭТО ЛУЧШИЙ СПОСОБ для уменьшения размера исходного кода и исправления ошибок в алгоритме (обычно, код "худеет" в несколько раз(!)).
Если Вам такой вариант не подходит, то пожалуйста, обратите Ваше внимание на следующие рекомендации. Рассмотрим пример кода из Вашего сообщения...



На изображении, для наглядности, строка разбита на несколько строк, и одинаковые куски кода выделены красным цветом.
Картинка наглядно показывает, что Ваш КОД НАПИСАН НЕ ВЕРНО. Так блин никто не делает!!! Так писать не правильно!!! Прётесь тут на... (тут вставляем отборную брань). Исправьте ОШИБКИ В НАПИСАНИИ Вашего код и проблемы с "сокращением" кода отпадут сами собой!!! (приветливо улыбаемся)

Рекомендуемый вариант оптимизации:
Code: (clickermann) [Select]
// Строка для примера:
// if ((pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat)=4144959)
 
$x = $x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch) // вычисления в переменную
 
IF(PXL($x, $y_vert_chat) = 4144959) // оптимизированная строка

Спасибо что Вы с нами! :)


Ну вот примерно так. :)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Формирование функций от переменных
« Reply #16 on: September 25, 2017, 08:49:31 AM »
Дружные, продолжительные аплодисменты.

А где автор, то?  ;D


gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Re: Формирование функций от переменных
« Reply #17 on: October 15, 2017, 02:04:46 PM »
или #include Вставляет в это место содержимое текстового файла из папки проекта. Это позволяет "прятать" объемный код, повышая таким образом читаемость скрипта.
Для другой задачи попробовал. Добавил строку
#include "Сценарий_ФармШахт_ver8_multi.cms" 
(чтобы по окончании одного сценария запустился другой)
Но при запуске основного сценария - начинает выдавать ошибку "Ошибка при вызове функции POP()".
В хэлпах про использование #include не нашел. Как его использовать?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Формирование функций от переменных
« Reply #18 on: October 15, 2017, 06:31:24 PM »
Это не 'другой сценарий', это часть одного.
С соблюдением всех правил и ограничений.
С ошибкой нудно показывать код, оба файла или сколько их там инклюдится.


gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Re: Формирование функций от переменных
« Reply #19 on: October 15, 2017, 09:36:17 PM »
Это не 'другой сценарий', это часть одного.
С соблюдением всех правил и ограничений.
Понял, спс

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Re: Формирование функций от переменных
« Reply #20 on: October 15, 2017, 09:47:09 PM »
Дружные, продолжительные аплодисменты.

А где автор, то?  ;D
О, я даже не заметил сразу что тут продолжение обсуждения было - уведомлений-то на почту или куда-либо вообще не приходит на этом форуме )))
Мою задачу идеально решил Vint вот здесь http://crapware.aidf.org/forum/index.php?topic=3536.msg23930#msg23930 с фактическим введением функции через #define

для tmp~1:
Варианты заданий новых переменных не подходят, т.к. нужны именно функции, и строки в скрипте получаются примерно такие
IF((pxl(xperesch(231)xperesch, yperesch(420)yperesch)=4144959)  и т.д.
Подобный пересчет нужен для того, чтобы найденные значения координат специальных точек на одном компьютере с конкретным разрешением экрана можно было применить на другом компьютере и другом разрешении экрана; причем за счет оконного режима тут нужна не простая пропорция а более хитрая зависимость

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Re: Формирование функций от переменных
« Reply #21 on: October 15, 2017, 09:59:11 PM »
День добрый. :)
Уважаемый gsukhado, к сожалению, на данный момент, Clickermann не обладает подобным функционалом, а именно - создание пользовательских функций, ввиду их невостребованности целевой аудиторией.
Если Вам необходима консультация специалистов по оптимизации Вашего кода, то пожалуйста выложите Ваш код здесь, на форуме, в этой теме, вместе с подробным описанием того, что он должен делать. Как показывает практика, ЭТО ЛУЧШИЙ СПОСОБ для уменьшения размера исходного кода и исправления ошибок в алгоритме (обычно, код "худеет" в несколько раз(!)).
Если Вам такой вариант не подходит, то пожалуйста, обратите Ваше внимание на следующие рекомендации. Рассмотрим пример кода из Вашего сообщения...



На изображении, для наглядности, строка разбита на несколько строк, и одинаковые куски кода выделены красным цветом.
Картинка наглядно показывает, что Ваш КОД НАПИСАН НЕ ВЕРНО. Так блин никто не делает!!! Так писать не правильно!!! Прётесь тут на... (тут вставляем отборную брань). Исправьте ОШИБКИ В НАПИСАНИИ Вашего код и проблемы с "сокращением" кода отпадут сами собой!!! (приветливо улыбаемся)

Рекомендуемый вариант оптимизации:
Code: (clickermann) [Select]
// Строка для примера:
// if ((pxl($x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch),$y_vert_chat)=4144959)
 
$x = $x_gr+INT(($x_ishodnoe-$x_gr)*$x_peresch) // вычисления в переменную
 
IF(PXL($x, $y_vert_chat) = 4144959) // оптимизированная строка

Спасибо что Вы с нами! :)


Ну вот примерно так. :)


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

Code: (clickermann) [Select]
#define xmul(:$x_gr+INT((
#define )xmul:-$x_gr)*$x_peresch)
#define ymul(:$y_gr+INT((
#define )ymul:-$y_gr)*$y_peresch)
//...вырезано
   getscreen(0,0,xmul(440)xmul,ymul(820)ymul)
   colormode(6,0,0,xmul(440)xmul,ymul(820)ymul)
   waitms(700+rnd(0,100))
//...  вырезано
   undefine($mass_monety_new)
   $nalichie_monet_new=0
   for($y_vert_chat=ymul(123)ymul, $y_vert_chat<ymul(680-50)ymul, 1) // проход по всей вертикали
      if ((pxl(xmul(394)xmul,$y_vert_chat)=4144959)&(pxl(xmul(394)xmul,$y_vert_chat+INT(4*$y_peresch))=12566527)&(pxl(xmul(394)xmul,$y_vert_chat+INT(17*$y_peresch))=12566527)&(pxl(xmul(394)xmul,$y_vert_chat+INT(48*$y_peresch))=16744319)) // поиск активной кнопкИ "Мне Повезет"
         $arrsize_monet_fict=arrsize($mass_monety_new)   //блок проверки повторов
         if(ABS($mass_monety_new[$arrsize_monet_fict-1]-$y_vert_chat)>10)
            arrpush($mass_monety_new, $y_vert_chat)   // сформировали массив из только активных кнопок
         end_if
      end_if
   end_cyc

//...  вырезано


« Last Edit: October 15, 2017, 10:04:17 PM by gsukhado »

gsukhado

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Re: Формирование функций от переменных
« Reply #22 on: October 15, 2017, 10:32:57 PM »
О, ... - уведомлений-то на почту или куда-либо вообще не приходит на этом форуме )))
А ты нажал кнопку УВЕДОМЛЯТЬ в интересующей теме или для всех новых сообщений форума?
Или даже кнопку не видал, а с детства мечтал уведомляться, без подтверждения своего желания?
Реальный ящик укажи в личных настройках. :P
Адреса указываю реальные.
После ряда попыток подписаться на уведомления и что-то отсюда получить на почту ( http://crapware.aidf.org/forum/index.php?topic=3362.0 ) - плюнул на это дело...