Você conhece aquelas caixas do Windows em que você só pode fazer uma coisa?
Vamos levar isso para o próximo nível!
Desafio
Faça uma caixa de diálogo com um botão que segue o cursor em todos os lugares!
Especificações
Nenhuma entrada pode ser recebida. Pode haver saída para STDOUT ou STDERR. Você deve abrir uma janela com um botão (nenhum texto é necessário, mas o texto pode estar contido no título da janela, na caixa de diálogo ou no botão). O botão deve ser clicável e sempre deve seguir o cursor para que você possa clicar apenas nele. Ao clicar, ele pode fazer o que você quiser, mas não deixe o computador travar, porque testarei isso ... A caixa de diálogo deve permanecer aberta enquanto o botão não for pressionado, mas não será necessário. feche quando o botão estiver fechado.
Suposições que você pode fazer
- Você pode assumir que o cursor permanecerá dentro da tela de desenho.
- Você pode presumir que a janela permanecerá focada, mas não deve colocá-la fora de foco enquanto o botão não for pressionado.
Exemplo de pseudocódigo
Aqui está um exemplo de pseudocódigo:
Open Dialog Box
Add Button to Dialog Box at position X, Y
WHILE True:
SET Dialog Box to CursorX - X, CursorY - Y
Casos de teste não podem ser fornecidos para este desafio
Esse é um desafio de código-golfe, portanto, o menor envio válido até 14 de março (dia do Pi) vence!
C # (aplicativo Windows Form),
200114 bytesUn-Golfed
Solução antiga de 200 bytes:
Un-Golfed
fonte
Event += listener
? Isso é incrível :-) #+
operador. Ainda muito sucinto.AutoHotkey,
122115 bytesfonte
Java 7,
294289286264220 bytes-22 bytes graças ao MouseInfo (roubado do Zavada ) Eu não gosto das bibliotecas awt>.>
Raspei 44 bytes removendo o método principal aqui. O método principal não é necessário se for iniciado como um applet. Isso pode ser alcançado através do "Run As Java Applet" do eclipse ou desativando o gerenciador de segurança e usando o appletviewer , que acompanha o JDK (a menos que você ainda consiga visualizar os applets nos navegadores da Web. Não acho que o Chrome permita isso) .
fonte
import java.awt.event.*;
*
curinga não importa recursivamente subpacotes. Eu precisojava.awt.event
para oMouseAdapter
eMouseEvent
Java,
172199235 bytesGolfe:
Ungolfed:
Explicação: Uso a inicialização entre chaves na minha declaração de um novo JDialog. Isso salvou bytes excluindo a extensão do JDialog (permitindo salvar bytes excluindo
public
demain
). Dentro da subclasse anônima do JDialog, eu o mostro (usando em1>0
vez detrue
) e chamoa()
, o que é necessário porque o initalizador apresenta um erro em tempo de compilação se o loop estiver normalmente nele. Optei por usar o MouseInfo em vez de todo o excesso de código associado à adição de um ouvinte de mouse.Editar: teve que aumentar a contagem em 27 para adicionar
add(new java.awt.Button());
. Eu pensei que o JDialogs tinha um botão implícito pelo tecnicismo, mas eu pareço estar errado.Editar 2: teve que adicionar
setSize
e deslocar a localização do mouse para tornar o botão clicável.fonte
Processamento Modificado Js
102108 bytesExperimente online! Acabei de atualizar meu link!
Apenas desenha um retângulo que segue o mouse e um retângulo menor dentro do qual você clica e fica vermelho. Funciona, mas não é incrível. Esta versão é muito rigorosa entre chaves e tudo isso :(
fonte
Clojure, 525 bytes
Faz não criar um diálogo de Windows genuíno. Em vez disso, ele cria um falso e cria um botão fictício (inoperante) no meio.
Isso foi permitido pelo OP nos comentários.
Usa a biblioteca Quil .
fonte
Pug / Slim + CSS / SCSS / LESS / Stylus + ES6 Javascript (98 bytes)
Experimente online!
Pug (10 bytes UTF-8)
Caneta (18 bytes UTF-8)
JS (70 bytes UTF-8)
Descompilado, Ungolfed e explicou o Snippet:
fonte
Mathematica 226 Bytes
A posição do mouse em relação à tela é rastreada pelo front end e a posição da janela do bloco de diálogo é movida sempre que o mouse se move. Muito simples, mas os comandos são muito longos em termos de letras, como costuma acontecer no Mathematica. Clicar em OK fechará a caixa de diálogo.
PS Ao concluir o teste, execute isso para remover a opção de front-end.
fonte
Javascript (ES6) + HTML + CSS, 139 bytes
HTML:
CSS:
Javascript:
Como você não pode posicionar as caixas de diálogo de alerta, criei minha caixa de diálogo super sofisticada em HTML. O javascript registra um manipulador de eventos no objeto de janela e define a posição para as coordenadas do evento.
Experimente online: https://jsfiddle.net/1yohswje/
fonte