¿Conoces esos cuadros de Windows donde solo puedes hacer una cosa?
¡Llevemos esto al siguiente nivel!
Desafío
¡Crea un cuadro de diálogo con un botón que siga tu cursor a todas partes!
Especificaciones
No se puede tomar ninguna entrada. Puede haber salida a STDOUT o STDERR. Debe abrir una ventana con un botón (no se necesita texto, pero el texto puede estar contenido en el título de la ventana, el cuadro de diálogo o el botón). Se debe hacer clic en el botón y siempre debe seguir debajo del cursor para que solo se pueda hacer clic en él. Al hacer clic, puede hacer lo que desee, pero no haga que se bloquee una computadora porque voy a probar esto ... El cuadro de diálogo debe permanecer abierto mientras no se presione el botón, pero no es necesario que lo haga. cerrar cuando el botón está cerrado.
Suposiciones que puedes hacer
- Puede suponer que el cursor permanecerá dentro del lienzo de dibujo.
- Puede suponer que la ventana permanecerá enfocada, pero no debe desenfocarla mientras no se presione el botón.
Pseudocódigo de ejemplo
Aquí hay algunos pseudocódigo de ejemplo:
Open Dialog Box
Add Button to Dialog Box at position X, Y
WHILE True:
SET Dialog Box to CursorX - X, CursorY - Y
No se pueden proporcionar casos de prueba para este desafío
Este es un desafío de código de golf, por lo que gana la presentación válida más corta para el 14 de marzo (Día del Pi).
C # (Solicitud Formulario Windows),
200114 bytesSin golf
Antigua solución de 200 bytes:
Sin golf
fuente
Event += listener
? Eso es increíble :-)+
operador. Aún muy sucinto.AutoHotkey,
122115 bytesfuente
Java 7,
294289286264220 bytes-22 bytes gracias a MouseInfo (robado de Zavada ) No me gustan las bibliotecas awt>.>
Afeité 44 bytes eliminando el método principal aquí. El método principal no es necesario si se inicia como un applet. Esto se puede lograr a través de "Ejecutar como Java Applet" de eclipse o deshabilitando el administrador de seguridad y usando appletviewer , que viene con el JDK (a menos que aún pueda ver applets en navegadores web. No creo que Chrome lo permita) .
fuente
import java.awt.event.*;
*
comodín no importa subpaquetes de forma recursiva. Necesitojava.awt.event
paraMouseAdapter
yMouseEvent
Java,
172199235 BytesGolfizado:
Sin golf:
Explicación: Utilizo la inicialización de doble llave en mi declaración de un nuevo JDialog. Esto ahorró bytes al excluir la extensión de JDialog (lo que me permite guardar bytes excluyendo
public
demain
). Dentro de la subclase anónima de JDialog, lo hago visible (usando en1>0
lugar detrue
) y calla()
, lo cual es necesario porque el inicializador tiene un error en tiempo de compilación si el bucle se sentó en él normalmente. Opté por usar MouseInfo en lugar de todo el exceso de código asociado con la adición de un detector de mouse.Editar: Tuve que aumentar el recuento en 27 para agregar
add(new java.awt.Button());
. Pensé que JDialogs tenía un botón implícito por tecnicismo, pero parece estar equivocado.Edición 2: Tuve que agregar
setSize
y compensar la ubicación del mouse para hacer clic en el botón.fuente
Modificados Procesamiento Js
102108 bytesPruébalo en línea! Acabo de actualizar mi enlace!
Simplemente dibuja un rectángulo que sigue a su mouse y un rectángulo más pequeño dentro del que hace clic y se vuelve rojo. Funciona pero no es asombroso. Esta versión es muy estricta en llaves y todo eso :(
fuente
Clojure, 525 bytes
No no crear un diálogo de Windows original. En su lugar, crea uno falso y crea un botón ficticio (que no funciona) en el medio.
Esto fue permitido por el OP en los comentarios.
Utiliza la biblioteca Quil .
fuente
Pug / Slim + CSS / SCSS / LESS / Stylus + ES6 Javascript (98 Bytes)
Pruébalo en línea!
Pug (10 bytes UTF-8)
Stylus (18 bytes UTF-8)
JS (70 bytes UTF-8)
Descompilado, Ungolfed y explicó Snippet:
fuente
Mathematica 226 Bytes
La posición del mouse relativa a la pantalla es rastreada por el extremo frontal y la posición de la ventana del cuaderno de diálogo se mueve cada vez que se mueve el mouse. Bastante simple, pero los comandos son muy largos en términos de letras, como suele ser el caso con Mathematica. Al hacer clic en Aceptar, se cerrará el cuadro de diálogo.
PD Cuando hayas terminado de probar, ejecuta esto para eliminar la opción de front-end.
fuente
Javascript (ES6) + HTML + CSS, 139 bytes
HTML:
CSS:
Javascript:
Como no puede ubicar cuadros de diálogo de alerta, hice mi cuadro de diálogo súper elegante personalizado en HTML. El javascript registra un controlador de eventos en el objeto de la ventana y establece la posición en las coordenadas del evento.
Pruébelo en línea: https://jsfiddle.net/1yohswje/
fuente