Author Topic: Инверсия [РЕШЕНО]  (Read 2101 times)

0 Members and 1 Guest are viewing this topic.

Artsakh

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Инверсия [РЕШЕНО]
« on: March 08, 2018, 09:26:22 AM »
Есть проблемный кусок кода, который я хотел переделать, но из этого не вышло ничего хорошего. Прошу, пожалуйста, кто-нибудь, помогите мне)
Code: (clickermann) [Select]
DEFINE($value,1)

IF(($var = 0)|($var = - 4))
   $_x = 600
   $_y = 300
   IF($var = - 4)
      $var = 0
   END_IF
END_IF
IF(($var = 1)|($var = - 3))
   $_x = 620
   $_y = 310
END_IF
IF(($var = 2)|($var = - 2))
   $_x = 600
   $_y = 320
END_IF
IF(($var = 3)|($var = - 1))
   $_x = 580
   $_y = 310
   IF($var = 3)
      $var = - 1
   END_IF
END_IF

INC($var, $value)

LCLICK($_x, $_y)
WAITMS(300)


IF($time < $_time_t)
   
   INC($count,1)
   SWITCH($count)
   CASE(1)
      $value = - 1
   CASE(2)
      $value = 1
      $count = 0
   END_SWITCH

   WAIT(1)
END_IF
« Last Edit: March 08, 2018, 03:08:27 PM by Artsakh »

Artsakh

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Инверсия
« Reply #1 on: March 08, 2018, 10:11:19 AM »
В то же самое, только по другому. Другой вариант этого же скрипта..

Artsakh

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Инверсия
« Reply #2 on: March 08, 2018, 11:04:10 AM »
Есть мысли, как можно SWITCH($count), который чередует значения, заменить на что-то вроде $var = $var ^ 1 ?

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Инверсия
« Reply #3 on: March 08, 2018, 12:14:18 PM »
куча непонятных действий, что бы получить поочередное переключение между двумя точками?
Code: (текст) [Select]
12:01:19 600 x 300
12:01:21 620 x 310
12:01:22 600 x 300
12:01:23 620 x 310
12:01:25 600 x 300
12:01:26 620 x 310
12:01:27 600 x 300
12:01:28 620 x 310
12:01:30 600 x 300
12:01:31 620 x 310
12:01:32 600 x 300
12:01:34 620 x 310
12:01:35 600 x 300
12:01:36 620 x 310
12:01:38 600 x 300
12:01:39 620 x 310
12:01:40 600 x 300
12:01:42 620 x 310
12:01:43 600 x 300
12:01:44 620 x 310
12:01:46 600 x 300
12:01:47 620 x 310
12:01:48 600 x 300
12:01:50 620 x 310
12:01:51 600 x 300
12:01:52 620 x 310
12:01:54 600 x 300
12:01:55 620 x 310
12:01:56 600 x 300
12:01:57 620 x 310
12:01:59 600 x 300
12:02:00 620 x 310
12:02:01 600 x 300
12:02:03 620 x 310
12:02:04 600 x 300
12:02:05 620 x 310
12:02:07 600 x 300
12:02:08 620 x 310
12:02:09 600 x 300
так и должно быть? к чему тогда в коде координаты    ($_x = 580 $_y = 310) и  ($_x = 600 $_y = 320)?  или это не весь код?

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

Artsakh

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Инверсия
« Reply #4 on: March 08, 2018, 01:09:17 PM »
куча непонятных действий, что бы получить поочередное переключение между двумя точками?

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

В игре это будет выглядеть так:  Бежим, Бежим... останавливаемся, совершаем действие, которое в подпрограмме "ДЕЙСТВИЕ" и бежим в обратную сторону.

Вот дополнил код для ясности.

Code: (clickermann) [Select]
SUB(ДЕЙСТВИЕ)
   IF($time < $_time_t)
      PRINT("Действие")
      $time = $_time_t + RND(5,10)
   END_IF
END_SUB

DEFINE($value,1)

IF(($var = 0)|($var = - 4))
   $_x = 600
   $_y = 300
   IF($var = - 4)
      $var = 0
   END_IF
END_IF
IF(($var = 1)|($var = - 3))
   $_x = 620
   $_y = 310
END_IF
IF(($var = 2)|($var = - 2))
   $_x = 600
   $_y = 320
END_IF
IF(($var = 3)|($var = - 1))
   $_x = 580
   $_y = 310
   IF($var = 3)
      $var = - 1
   END_IF
END_IF

INC($var, $value)

LCLICK($_x, $_y)
WAITMS(300)


IF($time < $_time_t)
   
   INC($count,1)
   SWITCH($count)
   CASE(1)
      $value = - 1
   CASE(2)
      $value = 1
      $count = 0
   END_SWITCH
   
   ДЕЙСТВИЕ()
   
END_IF
« Last Edit: March 08, 2018, 01:12:37 PM by Artsakh »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Инверсия
« Reply #5 on: March 08, 2018, 02:20:06 PM »
может так?

Code: (clickermann) [Select]
SUB(ДЕЙСТВИЕ)
   IF($time < $_time_t)
      PRINT("Действие")
      $time = $_time_t + RND(5,10)
   END_IF
END_SUB

DEFINE($value,1)

SWITCH($var) 
CASE(0)
   $_x = 600
   $_y = 300   
   IF($value < 0)
      $var = 4
   END_IF   
CASE(1)
   $_x = 620
   $_y = 310
CASE(2)
   $_x = 600
   $_y = 320
CASE(3)
   $_x = 580
   $_y = 310   
   IF($value > 0)
      $var = -1
   END_IF     
END_SWITCH


INC($var, $value)

print($_x," x ", $_y)
//LCLICK($_x, $_y)
WAITMS(300)


IF($time < $_time_t)
   
   $value = $value * (-1) //переключение -1 и 1
   ДЕЙСТВИЕ()
   
END_IF

Artsakh

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Инверсия
« Reply #6 on: March 08, 2018, 03:06:12 PM »
может так?

Этого достаточно, большое спасибо.