Перейти к содержимому
Oleshe

Vector

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

Нужна библиотека вектор, двух мерная, может выводить на экран (что-бы рисовала полоски), я пытался потратил 3 часа но на 1.5 часу столкнулся с проблемой: если 1 координата больше другой оно просто плюсует ту координату и дальше рисует нормально, я устал, передаю эстафету мастерам.
то что уже есть (конечная нерабочая):

local vector = require('vector')
require('term').clear()
startx = io.read()
starty = io.read()
-- xcur сколько кругов ада прошла x парарель, тоже самое с ycur
-- ysnos сколько мы должны ждать что-бы отрисовать следущую х
x = io.read()
symbol = require('unicode').char(0xE0BF)
local gpu = require('component').gpu
y = io.read()
function draw(s) -- отвечает за просчёт и прорисовку линий
local x = tonumber(s[1])
local y = tonumber(s[2])
xx = x yy = y
if x > y then
  exit = false
  b = 1
  while exit == false do
    b = b + 1
    xx = xx / b
    a,c = math.modf(xx)
    if c == nil or c == 0.0 then
      ysnos = a 
exit = true
xcur = -1 xsnos = -1
tx = false
ty = true ycur=0
    end
  end
else
  exit = false
  b = 1
  while exit == false do
    b = b + 1
    yy = yy / b
    a,c = math.modf(yy)
    if c == nil or c == 0.0 then
      xsnos = a 
exit = true ycur = -1
tx = true ty = false
xcur = 0 ysnos = -1
    end
  end
end
if x == y then
  xcur = -1
  ycur = -1
  ysnos = -1
  xsnos = -1 -- если переменные мендально равно то не применяем никаких отступов, всё и так в шоколаде
  tx = true ty = true
end
print(xsnos)
print(ysnos)
while x ~= 0 and y ~= 0 or x ~= 0 and y == 0 or x == 0 and y ~= 0 do
  if ycur == ysnos or tx == true then
  if x ~= xsnos then
  if x > 0 then
    x = x - 1
    if tx == true then
      xcur = xcur + 1
    end
  else
    x = x + 1 
    if tx == true then
      xcur = xcur + 1
    end
 end end end
  if ysnos == ycur and ty == true then
    ycur = 0
  end
  if xsnos == xcur or ty == true then
  if y ~= ysnos then
  if y > 0 then
    y = y - 1
    if ty == true then
      ycur = ycur + 1
      
    end
  else
    if ty == true then
    ycur = ycur + 1
    end
    y = y + 1
  end end end
  if xcur == xsnos and tx == true then
    xcur = 0
  end
  gpu.set(1,50,xcur..' '..ycur..' '..x..' '..y) -- отладка, никому не сдалась
  gpu.set(startx + x,starty + y,symbol)
end 
xx = nil xxx = nil yy = nil yyy = nil
end
yx = vector.newVector2(x,y) -- вернёт переменные в списке: {x,y}
function floor(s) -- получить середину лини относительно экрана (не знаю почему так назвал)
  return {math.floor(s[1] / 2),math.floor(s[2] / 2)}
end
todraw = {yx}
b = 0
function action(todraw) -- стартует программу отрисовывая все доступные линий
while b < #todraw do
  b = b + 1
  draw(todraw[b])
end
end
a = floor(yx)
if a[1] > 0 then -- добовляем отступ, должен получиться полу треугольник
  a[1] = a[1] + 5
else a[1] = a[1] - 5
end
print(a[1],a[2],yx[1],yx[2])
--table.insert(todraw,a)
action(todraw)

помогите ;-;

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


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

Нужна библиотека вектор, двух мерная, может выводить на экран (что-бы рисовала полоски), я пытался потратил 3 часа но на 1.5 часу столкнулся с проблемой: если 1 координата больше другой оно просто плюсует ту координату и дальше рисует нормально, я устал, передаю эстафету мастерам.
то что уже есть (конечная нерабочая):


local vector = require('vector')
require('term').clear()
startx = io.read()
starty = io.read()
-- xcur сколько кругов ада прошла x парарель, тоже самое с ycur
-- ysnos сколько мы должны ждать что-бы отрисовать следущую х
x = io.read()
symbol = require('unicode').char(0xE0BF)
local gpu = require('component').gpu
y = io.read()
function draw(s) -- отвечает за просчёт и прорисовку линий
local x = tonumber(s[1])
local y = tonumber(s[2])
xx = x yy = y
if x > y then
  exit = false
  b = 1
  while exit == false do
    b = b + 1
    xx = xx / b
    a,c = math.modf(xx)
    if c == nil or c == 0.0 then
      ysnos = a 
exit = true
xcur = -1 xsnos = -1
tx = false
ty = true ycur=0
    end
  end
else
  exit = false
  b = 1
  while exit == false do
    b = b + 1
    yy = yy / b
    a,c = math.modf(yy)
    if c == nil or c == 0.0 then
      xsnos = a 
exit = true ycur = -1
tx = true ty = false
xcur = 0 ysnos = -1
    end
  end
end
if x == y then
  xcur = -1
  ycur = -1
  ysnos = -1
  xsnos = -1 -- если переменные мендально равно то не применяем никаких отступов, всё и так в шоколаде
  tx = true ty = true
end
print(xsnos)
print(ysnos)
while x ~= 0 and y ~= 0 or x ~= 0 and y == 0 or x == 0 and y ~= 0 do
  if ycur == ysnos or tx == true then
  if x ~= xsnos then
  if x > 0 then
    x = x - 1
    if tx == true then
      xcur = xcur + 1
    end
  else
    x = x + 1 
    if tx == true then
      xcur = xcur + 1
    end
 end end end
  if ysnos == ycur and ty == true then
    ycur = 0
  end
  if xsnos == xcur or ty == true then
  if y ~= ysnos then
  if y > 0 then
    y = y - 1
    if ty == true then
      ycur = ycur + 1
      
    end
  else
    if ty == true then
    ycur = ycur + 1
    end
    y = y + 1
  end end end
  if xcur == xsnos and tx == true then
    xcur = 0
  end
  gpu.set(1,50,xcur..' '..ycur..' '..x..' '..y) -- отладка, никому не сдалась
  gpu.set(startx + x,starty + y,symbol)
end 
xx = nil xxx = nil yy = nil yyy = nil
end
yx = vector.newVector2(x,y) -- вернёт переменные в списке: {x,y}
function floor(s) -- получить середину лини относительно экрана (не знаю почему так назвал)
  return {math.floor(s[1] / 2),math.floor(s[2] / 2)}
end
todraw = {yx}
b = 0
function action(todraw) -- стартует программу отрисовывая все доступные линий
while b < #todraw do
  b = b + 1
  draw(todraw[b])
end
end
a = floor(yx)
if a[1] > 0 then -- добовляем отступ, должен получиться полу треугольник
  a[1] = a[1] + 5
else a[1] = a[1] - 5
end
print(a[1],a[2],yx[1],yx[2])
--table.insert(todraw,a)
action(todraw)

помогите ;-;

а другие библиотеки? как эта:

Графическая библиотека "Граффити" - Графика - ComputerCraft.RU Форум

 

или ты хочешь именно СВОЮ либу?

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


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

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

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

Гость
Ответить в тему...

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

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

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

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

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


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