§ Код для встраивания

Для того, чтобы что-то работало, есть библиотека, которую надо скачать и запустить. А вот и основной обрабатывающий код для этого шаблона. Библиотека может со временем дополняться новыми функциями.
Файл app.js:
1class App extends Dos2D {
2
3    init() {
4
5        this.cls();
6
7        for (let y = 0; y < 200; y++)
8        for (let x = 0; x < 320; x++)
9            this.pset(x, y, this.dos((x*x + y*y) >> 8));
10
11        this.circle(160,100,50, this.dos(10));
12        this.circle(160,100,40, 0x0080ff, 1);
13        this.line(0,0,320,200, 0x00ffff);
14
15        this.font(8).locate(15,20).print("HELLO WORLD");
16    }
17
18    loop() { }
19}
20
21// Обновление canvas.id=viewport раз в 100 мс
22new App(100);

§ Доступные функции и описание

Методы
  • dos(id) — цвет из палитры, от 0 до 255
  • cls(cl = 0) — очистка экрана, если параметр опущен, то очищается в черный цвет
  • pset(x,y,color) — установка точки
  • point(x,y,color) — цвет точки
  • line(x1,y1,x2,y2,color) — рисование линии
  • circle(x,y,radius,color[,fill]) — рисование окружности с центром (x,y), заданным радиусом и цветом; если fill=1, то окружность закрашивается
  • block(x1,y1,x2,y2,cl) — рисовать сплошной блок
  • font(height) — выбор высоты шрифта 8 или 16
  • locate(x,y) — установка курсора по x,y; устанавливается по знакоместам, но допускаются дробные числа
  • color(fore,back) — цвет шрифта и цвет фона при печати строки, если цвет null - то не печатается такой
  • print(str) — печать строки в телетайп-режиме
  • print_font(x, y, ch, phantom = 0) — печатается символ ch (число или строка), позиция в (x,y); при указании phantom не печатает на экран, а выводит как массив 8x16 или 8x8 на выходе
  • copy(buf) — копирование буфера из массива в видеопамять
  • dim2(cols, rows, value = 0) — создается двухмерный массив
  • irand(f, t) — случайное целое от f до t
  • trand() — псевдослучайное целое РСЛОС по методу Гендальфа
  • measure(t) — профилировщик, measure() начало, measure(1) конец отсчета, выдача в Console
  • set_timeout(t) — поменять время таймаута фрейма
  • prevent() — запретить распространение события по документу
  • load_image(src) — загрузка изображения в документ, результатом функции будет объект изображения
События
  • init() — вызывается сразу после запуска
  • loop() — при каждом обновлении фрейма через некоторый таймаут
  • on_mouse_down() — при клике мышкой по canvas
  • on_mouse_up() — при отпускании мышки
  • on_mouse_move() — при любом движении
  • on_key_down(e) — при нажатии клавиши
  • on_key_up(e) — при отпускании
  • on_contextmenu(e) — клик правой кнопкой на canvas
Свойства
  • this.mouse = {x:x, y:y, btn:кнопки мыши}
  • this.keyboard = {key:клавиша, press:0|1}