Oleshe 36 Опубликовано: 7 ноября, 2022 Нужна библиотека вектор, двух мерная, может выводить на экран (что-бы рисовала полоски), я пытался потратил 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) помогите ;-; 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Bumer_32 36 Опубликовано: 7 ноября, 2022 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 Форум или ты хочешь именно СВОЮ либу? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах