Введение
Однажды ты показывал своему ребенку, как рисовать на компьютере. Вы вводите mspaint.exe
в строке запуска. К вашему ужасу, он говорит: «Ни один элемент не соответствует вашему поиску». Вы должны создать простую версию краски, чтобы ваш ребенок мог рисовать!
Вызов
Вы должны создать простую программу для рисования. Для этого откройте белое окно дисплея (размером более 99x99 пикселей). Каждый раз, когда мышь нажимается, измените пиксель, на котором она находится, на черный.
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах!
Pen
делает именно это: oОтветы:
8086 машинный код,
32 31 2826 байтПредполагается наличие видеокарты VGA и любого совместимого с Microsoft драйвера мыши.
-2 байта благодаря @berendi!
Как это устроено:
Это все, что нужно сделать. Никакой магии, только несколько вызовов функций.
источник
INT 33h
возвращает 0 вBX
, и это уменьшается до FFFFh, как и ожидалось, но линия все еще рисуется. Возможно, это связано с тем, что в режиме 11h имеется только одна страница видео, и номер неверной страницы автоматически исправляется? Я тестирую на VM VirtualBox, так что, возможно, это то, что делает его реализация BIOS.int 0x10
, вместо этогоjmp
возвращаются ко второмуint 0x10
. Смещение вjmp
остается тем же, настроить адрес вmov dx
Scratch, 10 Scratch Bytes
Царапина была практически разработана для таких вещей.
Попробуйте онлайн!
источник
HTML + JavaScript (ES6),
66 6462 байтаHTML
JavaScript
Сохранено 2 байта благодаря Густаво Родригесу и 2 байта от Шегги.
источник
<canvas id=c>
?c.
с начала вашего JS. @Anoplexian, это тело по умолчанию,margin
отбрасывающее вещи на несколько пикселей.C + Win32,
209200195 байтСпасибо, Коди и Квентин! Я надеялся избавиться от этого,
#include <windows.h>
но это приводит к всевозможным ошибкам. По крайней мере, он работает правильно с несколькими мониторами ...Предыдущий код:
источник
h
вfor
инициализаторе, чтобы сохранить два байта :)LOWORD
иHIWORD
являюсь не правильным способом извлечения координат курсора из упакованныхLPARAM
. Вы должны использоватьGET_X_LPARAM
иGET_Y_LPARAM
, в противном случае вы получите неправильные результаты с несколькими мониторами.int main
что бы добавить еще 4 байта.(short)LOWORD()
и(short)HIWORD()
будете решать этот вопрос?main
тип возвращаемого значения функции (из-за неявногоint
правила). Единственная проблема заключается в исключенииreturn 0;
причин неопределенного поведения в C89 и MSVC. В C99 и C ++ вам нужен тип возвращаемого значения дляmain
, ноreturn 0;
он неявный и поэтому не нужен. Ну, язык не был создан для игры в гольф. :-)Обработка
9879 байт19 байтов сохранено благодаря @dzaima
Объяснение (устарело)
источник
size(100,100);
, не должен быть упомянут, спасибо! (также я не знаю, почему я не виделif(mousePressed)
бит)JavaScript ES6, 126 байт
Проверено в хром.
Попробуйте онлайн!
источник
Haskell,
189184170169 байтЭто использует
Gloss
библиотеку (v1.11). Он открывает полноэкранное окно и рисует черные пиксели (фактически круги с радиусом 1), нажимая левую кнопку мыши. НажмитеESC
для выхода.Как это устроено:
Редактировать: @ceased to turn counterclockwis рассказал мне о новой версии глянца, которая экономит 5 байт при использовании полноэкранных окон. Спасибо!
источник
FullScreen
является нулевым в глянце> = 1.11, уменьшая счет на 5. (Я получаю ошибку,unknown GLUT entry glutInit
хотя, возможно, моя настройка перенасыщения просто не работает; никогда не использовала ее на этом компьютере.)SmileBASIC 2,
5251 байтЭто один работает в папочке SmileBASIC в Пти компьютер (и
одиндва байта короче.)Объяснение:
источник
GPSET TCHX,TCHY:GOTO@A
так как цвет по умолчанию - 0 (прозрачный).Javascript + JQuery 138 байт
Проверьте это онлайн!
Добавление поддержки щелчка и перетаскивания было бы простым, однако вы бы задали переменную в соответствии с инструкциями и, чтобы сократить код, она не поддерживается: «Каждый раз, когда мышь нажимается, измените пиксель, на котором она находится, на черный» , Я истолковал инструкцию как
click
событие.источник
SpecBAS -
6159 байтЧерный уже является цветом пера по умолчанию, но фон, как правило, имеет неприятный оттенок серого, поэтому
CLS 15
устанавливает его на ярко-белый.источник
GOTO
становлениеGO TO
)SmileBASIC,
705853 байтаРазъяснение:
источник
Clojure,
9171 байт-20 байт спасибо @cfrick за указание, что я могу использовать
use
для сокращения моего импорта.Использует библиотеку Quil . Рисует точку всякий раз, когда мышь перетаскивают.
В основном ответ на процессинг, поскольку Quil - это оболочка для обработки Clojure.
источник
(use 'quil.core)(defsketch P :mouse-dragged #(point(mouse-x)(mouse-y)))
use
потому что это "не правильно". Спасибо.Tcl / Tk, 45
465157источник
Java 7, 353 байта
Ungolfed:
источник
Python2 и Python3, 82 байта (или 77?)
Используя модуль Turtle, это не так уж плохо :)
Ungolfed:
Если между точками все в порядке, вы можете сохранить 5 байтов:
источник
Excel VBA, 62 байта
Функция анонимного непосредственного окна VBE, которая позволяет пользователю рисовать на любом листе, просто выбрав его
Пример вывода
источник
HTML + Javascript,
152148 байтисточник
Тьюринг , 77 байтов
Ungolfed:
источник
HTML + CSS + JavaScript (ES6), 8 + 31 + 64 = 103 байта
Весело с CSS
box-shadow
!HTML + CSS + JavaScript (ES6), 8 + 22 + 69 = 99 байт
Это один из попыток смещения по умолчанию
margin
в<body>
элементе, но она может быть разной в разных браузерах и таблицы стилей агента пользователя. Успешно протестировано в Chrome.HTML + CSS + JavaScript (ES6), 8 + 18 + 69 = 95 байт
Пиксели в этом могут казаться больше, поскольку они нарисованы в полпиксельных координатах.
источник
TI-Basic, 1 байт
Я уверен, что большинство из вас с TI calcs подумали об этой
Pen
команде, но оказывается, что она не токенизирована, поэтому было бы разумнее считать это как 3 байта. Вы можете прочитать об интерактивной версииPt-Change(
на http://tibasicdev.wikidot.com/pt-changeисточник
Lua (love2d Framework), 180 байт
версия для гольфа
ungolfed
довольно легко, как это работает. Сначала несколько инициализаций, чтобы сделать вещи короче. После этого он проверит щелчок мышью и сохранит точки в массив. После этого он рисует точки. Также он устанавливает цвет на белый и черный, потому что по умолчанию все наоборот :)
И вот картинка:
источник
l=love v,g,m,p=255,l.graphics,l.mouse,{}function l.draw()g.setBackgroundColor(v,v,v)if m.isDown(1)then p[#p+1],p[#p+2]=m.getPosition()end g.setColor(0,0,0)g.points(p)end
это приводит к 169 байтов!Обработка, 65 байт
источник
glslsandbox 232 байта
Старый пост, но нашел это интересным.
Так как обработка уже была сделана, я решил сделать что-то другое.
Это рисует, нажата ли мышь или нет, поэтому не то, о чем просил pydude, а почти.
Попробуйте это на glslsandbox
источник
Обработка, 93 байта, 91 байт, если пробелы не учитываются
источник
UCBlogo с wxWidgets, 65 байт
Пояснение (код, присвоенный переменной
buttonact
, выполняется при каждом нажатии кнопки):По крайней мере, я думаю, что это работает. Это должно в соответствии с документацией , но, очевидно,
buttonact
переменная работает только в сборке wxWidgets, и я изо всех сил пытаюсь собрать UCBLogo с wxWidgets в современном Linux (waddyamean, вы не можете привести указательint
и обратно?).UCBlogo без wxWidgets, 73 байта
Чтобы увидеть ожидаемый эффект, вы можете запустить эту более длинную версию с бесконечным циклом.
Но это вылетает
ucblogo
на моей машине ... Похоже на состояние гонки.UCBlogo, фактически работает на моей машине, 80 байтов
источник