Introducción
Un día, le mostrabas a tu hijo cómo dibujar en una computadora. Escribe mspaint.exe
en 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!
Pen
hace 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 33h
está 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
, dejmp
vuelta al segundo en suint 0x10
lugar. La compensaciónjmp
sigue siendo la misma, ajusta la dirección enmov dx
Scratch, 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 quemargin
arroja 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
h
en elfor
inicializador para guardar dos bytes :)LOWORD
yHIWORD
son no la forma correcta para extraer las coordenadas del cursor de un abarrotadoLPARAM
. Debería estar usandoGET_X_LPARAM
yGET_Y_LPARAM
, de lo contrario, obtendrá resultados incorrectos con varios monitores.int main
lo que habría agregado 4 bytes más.(short)LOWORD()
y(short)HIWORD()
resolvería el problema?main
tipo de retorno de la función (debido a laint
regla 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
Gloss
biblioteca (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. PresioneESC
para 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
FullScreen
es nulo en brillo> = 1.11, lo que reduce la puntuación en 5. (Sinunknown GLUT entry glutInit
embargo, 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@A
ya 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
click
evento.fuente
SpecBAS -
6159 bytesEl negro ya es el color predeterminado del bolígrafo, pero el fondo suele ser un tono gris desagradable, por
CLS 15
lo que lo establece en blanco brillante.fuente
GOTO
devenirGO TO
)SmileBASIC,
705853 BytesExplicado:
fuente
Clojure,
9171 bytes-20 bytes gracias a @cfrick por señalar que puedo usar
use
para 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)))
use
porque "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
margin
del<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
Pen
comando, 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)end
que 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
buttonact
se ejecuta con cada clic del botón):Al menos, creo que esto funciona. Debería de acuerdo con la documentación , pero aparentemente la
buttonact
variable 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 haciaint
atrá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
ucblogo
en mi máquina ... Parece una condición de carrera.UCB logo, realmente trabajando en mi máquina, 80 bytes
fuente