Вниз  RFO BASIC
- 15.06.2018 / 22:41
Linevic
  Пользователь

Linevic 
Сейчас: Offline
Цитата b0ing:
Для этого, я бы использовал функцию Time и показывал уведомление через определенные интервалы времени. каждую секунду к примеру. Таким образом программа бы не тормозила на pause.
Пример?
- 15.06.2018 / 22:50
b0ing
  Пользователь

b0ing 
Сейчас: Offline
Это рабочий код
  1. t0=int(time()/1000)
  2. Do
  3.   t=int(time()/1000)
  4.   if t-t0=1 then
  5.     print g++
  6.     notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
  7.     t0=t
  8.   endif
  9. until 0

- 15.06.2018 / 23:00
Linevic
  Пользователь

Linevic 
Сейчас: Offline
Цитата b0ing:
Это рабочий код
  1. t0=int(time()/1000)
  2. Do
  3.   t=int(time()/1000)
  4.   if t-t0=1 then
  5.     print g++
  6.     notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
  7.     t0=t
Спасибо, код работает. Только объясните пожалуйста, что делает такое большое количество кода?
- 15.06.2018 / 23:11
b0ing
  Пользователь

b0ing 
Сейчас: Offline
Это простой вариант, можно еще сделать через функцию mod(), это остаток от деления, но это потом.

  1. ! Тут мы записываем в t0 время запуска программы, делим на 1000 - получаем секунды, int() - отсекаем все после точки, т.е приводим к целому числу.
  2. t0=int(time()/1000)
  3. Do
  4.   ! считываем показания таймера каждую иттерацию цикла
  5.   t=int(time()/1000)
  6. ! Как только разница таймера и начала отсчета секунд достигнет 1, условие окажется верным
  7.   if t-t0=1 then
  8.     print g++
  9.     notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
  10.     ! обнуляем начало отсчета до состояния "сейчас"
  11.     t0=t
  12.   endif
  13. ! И ждем когда пройдет секунда, чтобы условие стало true
  14. Until 0

- 15.06.2018 / 23:46
b0ing
  Пользователь

b0ing 
Сейчас: Offline
Вот второй вариант
  1. Do
  2.   t=time()/1000
  3.   if !mod(t,1) then
  4.     print g++
  5.     notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
  6.   endif
  7. until 0


Но он может оказаться капризным на очень быстрых устройствах и его придется дорабатывать, поэтому первый вариант проще.
- 15.06.2018 / 23:54
Linevic
  Пользователь

Linevic 
Сейчас: Offline
Цитата b0ing:
Это простой вариант, можно еще сделать через функцию mod(), это остаток от деления, но это потом.

[code]
! Тут мы записываем в t0 время запуска программы, делим на 1000 - получаем секунды, int()[
Спасибо.
- 16.06.2018 / 07:54
Linevic
  Пользователь

Linevic 
Сейчас: Offline
b0ing, Превратил твой пример в функцию.
Endif пришлось убрать. С ним функция не работает.


Прикрепленные файлы:
ongoing_notify_(…).bas (0.35 кб.) Скачано 549 раз
onnotify_test.bas (0.13 кб.) Скачано 666 раз
- 16.06.2018 / 12:34
Linevic
  Пользователь

Linevic 
Сейчас: Offline
Цитата b0ing:
Вот второй вариант
  1. Do
  2.   t=time()/1000
  3.   if !mod(t,1) then
  4.     print g++
  5.     notify "Уведомление", "Выполнение
А если цикл длинный, и имеет свои if'ы? Есть какой-нибудь выход?
- 16.06.2018 / 13:17
b0ing
  Пользователь

b0ing 
Сейчас: Offline
Цитата Linevic:
А если цикл длинный, и имеет свои if'ы? Есть какой-нибудь выход?
  1. fn.def notify(t0)
  2.     if !t0 then t0=int(time()/1000)
  3.     t=int(time()/1000)
  4.   if t-t0=1 then
  5.     print "print"
  6.     notify "Уведомление", "Выполнение процесса...", "com.rfo.basic", loop
  7.     t0=t
  8.   endif
  9.     fn.rtn t0
  10. fn.end
  11.  
  12.  
  13. Do
  14.   nt=notify(nt)
  15. Until 0

Чую недопонимаешь ты как работают условия в рфо.
Читай мануалы.
if () then sub()
и
if () then
   sub()
endif
-- разные вещи
- 16.06.2018 / 15:52
1961uvg
  Пользователь

1961uvg 
Сейчас: Offline
bOing
Спасибо за ссылку и пример.
Но пример этот не то , что я пытаюсь сделать.
Я имею ввиду под "сеткой" плоскость , например 10 на 10 узлов.
Каждый узел соединен с соседними линиями.
И узлы меняют свое положение по высоте, т.е. один выше , другой ниже - за счет этого
получается рельеф. Раньше были алгоритмы простого создания данного эффекта, но
я не могу их найти. А уже двигать саму сетку второй вопрос.
  Так из массива узлов , если точки соединять отдельными линиями , то быстро надоест.
А использовать команду GR.POLY - не соображу ни как.
Так как при создании сетки ей придется проходить через узлы по несколько , что приведет
к расслоению линий.
Ну короче читаю и ищу дальше.

Изменено 1961uvg (16.06 / 15:54) (всего 1 раз)
Наверх  Всего сообщений: 2716
Фильтровать сообщения
Поиск по теме
Файлы топика (511)