Перейти к содержимому
  • 0
ipv2008

Как зациклить выполнение программы

Вопрос

Добрый, господа!

Есть некая программа. Как сделать так, чтобы программа выполнялась бесконечное количество раз?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

local gpu = component.gpu

gpu.setResolution(ширина, высота)

поиграйся со значениями, сия функция изменяет разрешение вывода на монитор.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

while true do

     код программы

     os.sleep(0)

end

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, ipv2008 сказал:

P.S. Такой еще вопрос, как можно увеличить размер шрифта?

Со шрифтами не всё так просто, в OS по умолчанию нет возможности их поменять.

Один символ на экране = одной ячейке, размер ячейки можно увеличить добавив ещё мониторов увеличив площадь.

Можно воспользоватся сторонними библиотеками и шрифтами https://computercraft.ru/topic/2336-ocbf-—-rastrovye-shrifty-dlya-opencomputers/

Предлагаю более простой вариант отрисовки времени при помощи закрашивания ячеек.

Код был взят отсюда https://computercraft.ru/blogs/entry/360-lua-programming-oc-finger-clock-—-stilno-udobno-i-bez-lishney-vyrviglaznosti/

 

Отсчёт времени большими символами

Скрытый текст

local seconds = 12000 -- секунд

local com = require("component")
local gpu = com.gpu
local w,h = gpu.getResolution()

local nums = {}
nums[0] = {"███", "█ █", "█ █", "█ █", "███"}
nums[1] = {"██ ", " █ ", " █ ", " █ ", "███"}
nums[2] = {"███", "  █", "███", "█  ", "███"}
nums[3] = {"███", "  █", "███", "  █", "███"}
nums[4] = {"█ █", "█ █", "███", "  █", "  █"}
nums[5] = {"███", "█  ", "███", "  █", "███"}
nums[6] = {"███", "█  ", "███", "█ █", "███"}
nums[7] = {"███", "  █", "  █", "  █", "  █"}
nums[8] = {"███", "█ █", "███", "█ █", "███"}
nums[9] = {"███", "█ █", "███", "  █", "███"}

local function SplitNumber(num)
  local n1, n2
  if num >= 10 then
    n1, n2 = tostring(num):match("(%d)(%d)")
    n1, n2 = tonumber(n1), tonumber(n2)
  else
    n1, n2 = 0, num
  end
  return n1, n2
end

local function DrawNumbers(hh, mm, ss)
  local n1, n2, n3, n4, n5, n6
  n1, n2 = SplitNumber(hh)
  n3, n4 = SplitNumber(mm)
  n5, n6 = SplitNumber(ss)
  for i = 1, 5, 1 do
    local lineToDraw = nums[n1][i].."  "..nums[n2][i].." : ".. nums[n3][i].."  "..nums[n4][i].." : "..nums[n5][i].."  "..nums[n6][i]
    gpu.set((w / 3), (h / 3) + i, lineToDraw)
  end
end

gpu.fill(1,1,w,h," ")

while true do
  local hh, mm, ss
  for i = seconds, 1, -1 do
    mm = math.floor(i / 60)
    ss = i % 60
    hh = math.floor(mm / 60)
    mm = mm % 60
    DrawNumbers(hh, mm, ss)
    os.sleep(1)
  end
  -- выполнить код
end

 

 

отсчёт 1200 секунд

Скрытый текст

rJ2jWuY.gif

Изменено пользователем serafim

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо огромное! )
P.S. Такой еще вопрос, как можно увеличить размер шрифта?

Суть в том, что у меня идет отсчет таймера (цифры на экране), как сделать их большими?

local component = require("component")
local sides = require("sides")
local rs = component.redstone
local term = require("term")
local seconds = 3 --секунды

while true do

term.clear()
for i = seconds, 1, -1 do
  term.write(os.date("%H:%M:%S", i))
  os.sleep(1)
  term.clearLine()
end
term.clear()
print("ПЕРЕЗАГРУГЗКА")
rs.setOutput(sides.right, 15)
rs.setOutput(sides.right, 0)

os.sleep(0)
end

 

Изменено пользователем ipv2008

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
42 минуты назад, serafim сказал:

Со шрифтами не всё так просто, в OS по умолчанию нет возможности их поменять.

Один символ на экране = одной ячейке, размер ячейки можно увеличить добавив ещё мониторов увеличив площадь.

Можно воспользоватся сторонними библиотеками и шрифтами https://computercraft.ru/topic/2336-ocbf-—-rastrovye-shrifty-dlya-opencomputers/

Предлагаю более простой вариант отрисовки времени при помощи закрашивания ячеек. 

Код был взят отсюда https://computercraft.ru/blogs/entry/360-lua-programming-oc-finger-clock-—-stilno-udobno-i-bez-lishney-vyrviglaznosti/

 

Отсчёт времени большими символами

  Показать содержимое


local seconds = 12000 -- секунд

local com = require("component")
local gpu = com.gpu
local w,h = gpu.getResolution()

local nums = {}
nums[0] = {"███", "█ █", "█ █", "█ █", "███"}
nums[1] = {"██ ", " █ ", " █ ", " █ ", "███"}
nums[2] = {"███", "  █", "███", "█  ", "███"}
nums[3] = {"███", "  █", "███", "  █", "███"}
nums[4] = {"█ █", "█ █", "███", "  █", "  █"}
nums[5] = {"███", "█  ", "███", "  █", "███"}
nums[6] = {"███", "█  ", "███", "█ █", "███"}
nums[7] = {"███", "  █", "  █", "  █", "  █"}
nums[8] = {"███", "█ █", "███", "█ █", "███"}
nums[9] = {"███", "█ █", "███", "  █", "███"}

local function SplitNumber(num)
  local n1, n2
  if num >= 10 then
    n1, n2 = tostring(num):match("(%d)(%d)")
    n1, n2 = tonumber(n1), tonumber(n2)
  else
    n1, n2 = 0, num
  end
  return n1, n2
end

local function DrawNumbers(hh, mm, ss)
  local n1, n2, n3, n4, n5, n6
  n1, n2 = SplitNumber(hh)
  n3, n4 = SplitNumber(mm)
  n5, n6 = SplitNumber(ss)
  for i = 1, 5, 1 do
    local lineToDraw = nums[n1][i].."  "..nums[n2][i].." : ".. nums[n3][i].."  "..nums[n4][i].." : "..nums[n5][i].."  "..nums[n6][i]
    gpu.set((w / 3), (h / 3) + i, lineToDraw)
  end
end

gpu.fill(1,1,w,h," ")

while true do
  local hh, mm, ss
  for i = seconds, 1, -1 do
    mm = math.floor(i / 60)
    ss = i % 60
    hh = math.floor(mm / 60)
    mm = mm % 60
    DrawNumbers(hh, mm, ss)
    os.sleep(1)
  end
  -- выполнить код
end

 

 

Разве это проще чем gpu.setResolution()?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, serafim сказал:

Предлагаю более простой вариант отрисовки времени при помощи закрашивания ячеек.

Ого! Вот это вообще СУПЕР. Благодарю, пойду свой таймер переделаю...

 

Изменено пользователем ipv2008

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, NEO сказал:

Разве это проще чем gpu.setResolution()?

Таким способом можно увеличить размер экрана, но шрифт останется по прежнему мелким

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Оба способа хороши.

 

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

 

А если хочется видеть какие-то особенные красивые шрифты, или хочется видеть их крупными также при входе в интерфейс монитора, то придётся подключить библиотеку.

 

А ещё в таблице символов есть символы двойной ширины, но они не особо крупные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...