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

Пиксельная графика [OpenComputers]

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

https://pastebin.com/4BXZP7FZ
 

Использует шрифт Брайля

 

Скрины:

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

2071285621_.png.aa4b08c27d509286db6c5057dca22774.png

 

1248087873_.png.5f477b1a6bb08a0a9bedd6dae07411e4.png

Пример:

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

require'term'.clear() --очистить экран

-----------------

--Graphics = require("путь к библиотеке")(Ширина в символах,Высота в символах) 
--По умолчанию ширина и высота - размер экрана
local g = require('graphics')()

--graphics:getWidth()      - Возвращает ширину в пикселях
local width = g:getWidth()

--graphics:getHeight()     - Возвращает высоту в пикселях
local height = g:getHeight()

--graphics:getDimensions() - Возвращает ширину и выстоту в пикселях
local w,h = g:getDimensions()

--graphics:reset()
--Очищает (но не перерисовывает) экран. 
g:reset()

--graphics:drawLine(x1:number*, y1:number*, x2:number*, y2:number*, erase:bool) 
--Рисует линию с точки (x1,y1) до (x2,y2)
g:drawLine(10,15,50,80)

--graphics:oldLine(x1:number*, y1:number*, x2:number*, y2:number*, erase:bool) 
--То же что и drawLine, но использует старый (очень кривой) алгортм

--graphics:fastLine(x:number*, y:number*, vx:number*, vy:number*, d:number*, erase:bool)
--Рисует линию с точки (x1,y1) в направлении (vx,vy) d шагов (длина). 
--Немного быстрее, чем graphics.drawLine
--vx и vy (направление) это два числа от -1 до 1.
--Наример, (1,0) это направо, (0,1) это вниз, а (-1,1) это влево-вниз
g:fastLine(20,10,1,0,20)

--graphics:drawRect(x:number*, y:number*, w:number*, h:number*, fill:bool, erase:bool) 
--Рисует прямоугольник в точке (x,y) с шириной w и высотой h
--Если fill==true, то прямоугольник будет заполнен
g:drawRect(50,50,10,10)
g:drawRect(50,70,10,10,true)

--g:setPixel(x:number*, y:number*, v:bool)
--Установить значение пикселя (x,y)
g:setPixel(40,40,true)

--g:getPixel(x:number*, y:number*)
--Получить значение пикселя (x,y)
g:getPixel(40,40) --> true

--graphics:newSprite(spriteData:string*)
--Создать спрайт
--формат:[w (1 байт)][h(1 байт)][...data...(w*h бит)]
local mushroom=g:newSprite('\16\16\7\224\29\184\49\140\115\206\95\250\204\51\136\17\136\17\152\25\252\63\255\255\242\79\98\70\32\4\48\12\31\248')

--Sprite:getWidth()
--Возвращает ширину справйта
local mushroom_width = mushroom:getWidth()

--Sprite:getHeight()
--Возвращает высоту справйта
local mushroom_height = mushroom:getHeight()

--Sprite:getDimensions()
--возвращает ширину и высоту спрайта
mushroom_width,mushroom_height = mushroom:getDimensions()

--graphics:drawSprite(sprite:Sprite*,x:number*,y:number*)
--Рисует спрайт в точке (x,y)
g:drawSprite(mushroom,50,50)
g:drawSprite(mushroom,100,60)

--graphics:redraw(x:number,y:number)
--Перерисовать всё.
--(x,y) - координаты для отрисовки

--graphics:draw(x:number,y:number)
--Перерисовать только измененные символы. (Гораздо быстрее, чем redraw)
g:draw() 

-----------------

os.sleep(2)

 

Изменено пользователем Griffi
v6/исправил ошибку

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


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

Для рисования линий рекомендую алгоритм Брезенхема. Не использует тригонометрию и линия на много ровнее получается.

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


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

Для рисования линий рекомендую алгоритм Брезенхема. Не использует тригонометрию и линия на много ровнее получается.

Спасибо.

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


Ссылка на сообщение
Поделиться на других сайтах
В 23.09.2020 в 08:35, Zer0Galaxy сказал:

Для рисования линий рекомендую алгоритм Брезенхема. Не использует тригонометрию и линия на много ровнее получается.

Добавил.

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


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

Версия 3:

Новый аглоритм для отриcовки линий

Версия 4:

autoDraw теперь не перерисовывает символ если он не изменился

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


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

Версия 5:

Убрал autodraw

Сильно ускорил отрисовку

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


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

Версия 6:

Добавил поддержку спрайтов!

Исправил 2 бага.

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

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


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

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

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

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

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

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

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

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

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


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