Introducción
Un día, le mostrabas a tu hijo cómo dibujar en una computadora. Escribe mspaint.exeen la barra de ejecución. Para su horror, dice "Ningún elemento coincide con su búsqueda". ¡Debes crear una versión simple de pintura para que tu hijo pueda dibujar!
Desafío
Debe crear un programa de dibujo simple. Para hacer esto, abra una ventana de visualización blanca (más grande que 99x99 píxeles). Cada vez que se presiona el mouse hacia abajo, cambie el píxel en el que se encuentra el mouse a negro.
Este es el código de golf , ¡así que la respuesta más corta en bytes gana!

Penhace exactamente esto: oRespuestas:
Código de máquina 8086,
32 31 2826 bytesAsume la presencia de una tarjeta gráfica VGA y cualquier controlador de mouse compatible con Microsoft.
-2 bytes gracias a @berendi!
Cómo funciona:
Eso es todo al respecto. No hay magia involucrada, solo algunas llamadas a funciones.
fuente
INT 33hestá devolviendo 0 inBX, y esto se reduce a FFFFh como se esperaba, pero todavía se está dibujando una línea. ¿Quizás esto se deba a que el modo 11h solo tiene una página de video y el número de página no válido se está arreglando automáticamente? Estoy probando en VM VirtualBox, así que tal vez eso es algo que está haciendo su implementación de BIOS.int 0x10, dejmpvuelta al segundo en suint 0x10lugar. La compensaciónjmpsigue siendo la misma, ajusta la dirección enmov dxScratch, 10 bytes Scratch
Scratch fue prácticamente diseñado para cosas como esta.
Pruébalo en línea!
fuente
HTML + JavaScript (ES6),
66 6462 bytesHTML
JavaScript
Ahorró 2 bytes gracias a Gustavo Rodrigues y 2 bytes de Shaggy.
fuente
<canvas id=c>?c.desde el inicio de su JS. @Anoplexian, ese es el cuerpo predeterminado quemarginarroja cosas por unos pocos píxeles.C + Win32,
209200195 bytesGracias, Cody y Quentin! Tenía la esperanza de deshacerme de
#include <windows.h>esto, pero esto conduce a todo tipo de errores. Al menos funciona correctamente con varios monitores ...Código anterior:
fuente
hen elforinicializador para guardar dos bytes :)LOWORDyHIWORDson no la forma correcta para extraer las coordenadas del cursor de un abarrotadoLPARAM. Debería estar usandoGET_X_LPARAMyGET_Y_LPARAM, de lo contrario, obtendrá resultados incorrectos con varios monitores.int mainlo que habría agregado 4 bytes más.(short)LOWORD()y(short)HIWORD()resolvería el problema?maintipo de retorno de la función (debido a laintregla implícita ). El único problema es omitir lasreturn 0;causas de comportamiento indefinido en C89 y MSVC. En C99 y C ++, necesita un tipo de retorno paramain, peroreturn 0;es implícito y, por lo tanto, innecesario. Bueno, el lenguaje no fue hecho para golf de código. :-)Procesamiento,
9879 bytes19 bytes guardados gracias a @dzaima
Explicación (obsoleta)
fuente
size(100,100);que no tiene que mencionarse, ¡gracias! (también no sé por qué no vi laif(mousePressed)parte)JavaScript ES6, 126 bytes
Probado en cromo.
Pruébalo en línea!
fuente
Haskell,
189184170169 169 bytesEsto usa la
Glossbiblioteca (v1.11). Abre una ventana de pantalla completa y pinta píxeles negros (de hecho, círculos con radio 1) presionando el botón izquierdo del mouse. PresioneESCpara salir.Cómo funciona:
Editar: @ceased to turn counterclockwis me contó sobre la versión más nueva de gloss que ahorra 5 bytes al usar ventanas de pantalla completa. ¡Gracias!
fuente
FullScreenes nulo en brillo> = 1.11, lo que reduce la puntuación en 5. (Sinunknown GLUT entry glutInitembargo, obtengo un error , pero probablemente mi configuración de exceso simplemente no funciona; nunca lo usé en esta máquina).SmileBASIC 2,
5251 bytesEste se ejecuta en el papá de SmileBASIC, Petit Computer (y es
unbyte más corto).Explicación:
fuente
GPSET TCHX,TCHY:GOTO@Aya que el color predeterminado es 0 (transparente).Javascript + jQuery 138 bytes
¡Compruébalo en línea!
Agregar soporte para hacer clic y arrastrar sería simple, establecería una variable, sin embargo, según las instrucciones y para acortar el código, no es compatible, "Cada vez que se presiona el mouse, cambie el píxel que está en negro". . Interpreté la instrucción como un
clickevento.fuente
SpecBAS -
6159 bytesEl negro ya es el color predeterminado del bolígrafo, pero el fondo suele ser un tono gris desagradable, por
CLS 15lo que lo establece en blanco brillante.fuente
GOTOdevenirGO TO)SmileBASIC,
705853 BytesExplicado:
fuente
Clojure,
9171 bytes-20 bytes gracias a @cfrick por señalar que puedo usar
usepara reducir mi importación.Utiliza la biblioteca Quil . Dibuja un punto cada vez que se arrastra el mouse.
Básicamente, la respuesta de procesamiento, ya que Quil es un contenedor de procesamiento para Clojure.
fuente
(use 'quil.core)(defsketch P :mouse-dragged #(point(mouse-x)(mouse-y)))useporque "no es apropiado". Gracias.Tcl / Tk, 45
465157fuente
Java 7, 353 bytes
Sin golf:
fuente
Python2 y Python3, 82 bytes (¿o 77?)
Usando el módulo Turtle, esto no es tan malo :)
Sin golf:
Si está bien tener líneas entre los puntos, en realidad puede guardar 5 bytes:
fuente
Excel VBA, 62 bytes
Función de ventana inmediata anónima VBE que permite al usuario dibujar en cualquier hoja simplemente seleccionándola
Salida de muestra
fuente
HTML + Javascript,
152148 bytesfuente
Turing , 77 bytes
Sin golf:
fuente
HTML + CSS + JavaScript (ES6), 8 + 31 + 64 = 103 bytes
Diversión con CSS
box-shadow!HTML + CSS + JavaScript (ES6), 8 + 22 + 69 = 99 bytes
Éste intenta compensar el valor predeterminado
margindel<body>elemento, pero puede ser diferente en los navegadores y las hojas de estilo de agente de usuario. Probado con éxito en Chrome.HTML + CSS + JavaScript (ES6), 8 + 18 + 69 = 95 bytes
Los píxeles en este pueden aparecer más grandes a medida que se dibujan en coordenadas de medio píxel.
fuente
TI-Basic, 1 byte
Estoy seguro de que la mayoría de ustedes con TI calcs pensó en el
Pencomando, pero resulta que no está tokenizado, por lo que tendría más sentido contarlo como 3 bytes. Puede leer sobre la versión interactiva dePt-Change(en http://tibasicdev.wikidot.com/pt-changefuente
Lua (marco love2d), 180 bytes
versión de golf
sin golf
Bastante fácil cómo funciona. Primero unas pocas inicializaciones para acortar las cosas. Después, comprobará que se hace clic en el mouse y guarda los puntos en la matriz. Después de eso dibuja los puntos. También establece el color en blanco y negro porque el valor predeterminado es al revés :)
Y aquí viene la imagen:
fuente
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)endque da como resultado 169 bytes!Procesando, 65 bytes
fuente
glslsandbox 232 bytes
Publicación anterior pero me pareció interesante.
Como el procesamiento ya se realizó, decidí hacer algo diferente.
Esto dibuja si el mouse está presionado o no, así que no es lo que Pydude solicitó, sino casi.
Pruébalo en glslsandbox
fuente
Procesamiento, 93 bytes, 91 bytes si los espacios no cuentan
fuente
Logotipo de UCB con wxWidgets, 65 bytes
Explicación (el código asignado a la variable
buttonactse ejecuta con cada clic del botón):Al menos, creo que esto funciona. Debería de acuerdo con la documentación , pero aparentemente la
buttonactvariable solo funciona en una compilación de wxWidgets y estoy luchando para construir UCBLogo con wxWidgets en un Linux moderno (¿waddyamean no puede lanzar un puntero haciaintatrás y hacia atrás?).Logotipo de UCB sin wxWidgets, 73 bytes
Para ver el efecto deseado, puede ejecutar esta versión más larga con un bucle infinito.
Pero esto se bloquea
ucblogoen mi máquina ... Parece una condición de carrera.UCB logo, realmente trabajando en mi máquina, 80 bytes
fuente