Вы знаете те окна Windows, где вы можете сделать только одну вещь?
Давайте перейдем на следующий уровень!
Вызов
Сделайте диалоговое окно с кнопкой, которая следует за вашим курсором везде!
Спекуляции
Вход не может быть принят. Может быть вывод на STDOUT или STDERR. Вы должны открыть окно одной кнопкой (текст не требуется, но текст может содержаться либо в заголовке окна, либо в диалоговом окне, либо в кнопке). Кнопка должна быть кликабельной, и она всегда должна следовать под вашим курсором, чтобы вы могли только щелкнуть по ней. После нажатия он может делать все, что угодно, но, пожалуйста, не заставляйте его разбивать компьютер, потому что я буду проверять это ... Диалоговое окно должно оставаться открытым до тех пор, пока кнопка не нажата, но это не нужно закрыть, когда кнопка закрыта.
Предположения, которые вы можете сделать
- Вы можете предположить, что курсор останется внутри холста для рисования.
- Вы можете предположить, что окно останется в фокусе, но вы не должны ставить окно не в фокусе, пока кнопка не нажата.
Пример псевдокода
Вот несколько примеров псевдокода:
Open Dialog Box
Add Button to Dialog Box at position X, Y
WHILE True:
SET Dialog Box to CursorX - X, CursorY - Y
Тестовые случаи не могут быть предоставлены для этой задачи
Это соревнование по коду для гольфа, поэтому выигрывает самое короткое время подачи заявок до 14 марта (день Пи)!
C # (Windows Form Application),
200114 байтовUn-Golfed
Старое 200-байтовое решение:
Un-Golfed
источник
Event += listener
? Это+
оператор. Все еще очень кратко.AutoHotkey,
122115 байтисточник
Java 7,
294289286264220 байт-22 байта благодаря MouseInfo (украдено из Zavada ) мне не нравятся библиотеки awt>.>
Я сбрил 44 байта, удалив основной метод здесь. Основной метод не нужен, если он запускается как апплет. Это может быть достигнуто с помощью eclipse «Запускается как Java-апплет» или путем отключения диспетчера безопасности и использования appletviewer , который поставляется с JDK (если вы все еще не можете просматривать апплеты в веб-браузерах. Я не думаю, что Chrome позволяет это) ,
источник
import java.awt.event.*;
*
знак не рекурсивно импортирует подпакеты. Мне нужноjava.awt.event
дляMouseAdapter
иMouseEvent
Ява,
172199235 байтGolfed:
Ungolfed:
Объяснение: Я использую двойную инициализацию при объявлении нового JDialog. Это позволило сохранить байты, исключив расширение JDialog (что позволяет мне сохранять байты, исключая
public
изmain
). Внутри анонимного подкласса JDialog я делаю его видимым (используя1>0
вместоtrue
) и вызываюa()
, что необходимо, потому что инициализатор имеет ошибку времени компиляции, если в нем нормально сидел цикл. Я решил использовать MouseInfo, а не весь лишний код, связанный с добавлением слушателя мыши.Изменить: пришлось увеличить количество на 27, чтобы добавить
add(new java.awt.Button());
. Я думал, что у JDialogs была подразумеваемая кнопка по техническим причинам, но я, кажется, ошибаюсь.Редактировать 2: пришлось добавить
setSize
и сместить местоположение мыши, чтобы сделать кнопку нажатой.источник
Модифицированная обработка Js
102108 байтПопробуйте онлайн! Только что обновил мою ссылку!
Он просто рисует прямоугольник, который следует за вашей мышью, и меньший прямоугольник внутри него, по которому вы щелкаете, и он становится красным. Это работает, но не удивительно. Эта версия, если очень строгие брекеты и все такое :(
источник
Clojure, 525 байтов
Имеет ли не создать подлинный диалог Windows. Вместо этого он создает поддельную и в середине создает фиктивную (неработающую) кнопку.
Это было разрешено ФП в комментариях.
Использует библиотеку Quil .
источник
Мопс / Тонкий + CSS / SCSS / LESS / Stylus + ES6 Javascript (98 байт)
Попробуйте онлайн!
Мопс (10 UTF-8 байт)
Стилус (18 UTF-8 байт)
JS (70 UTF-8 байт)
Декомпилировал, развернул и объяснил Сниппет:
источник
Mathematica 226 байт
Положение мыши относительно экрана отслеживается передним концом, а положение окна диалогового блокнота перемещается при каждом перемещении мыши. Довольно просто, но команды очень длинные с точки зрения букв, как это часто бывает с Mathematica. Нажатие ОК закроет диалог.
PS Когда вы закончите тестирование, запустите это, чтобы удалить опцию переднего конца.
источник
Javascript (ES6) + HTML + CSS, 139 байт
HTML:
CSS:
Javascript:
Поскольку вы не можете позиционировать диалоговые окна предупреждений, я создал свой собственный супер-модный диалог в HTML. Javascript регистрирует обработчик события в объекте окна и устанавливает позицию в координатах события.
Попробуйте онлайн: https://jsfiddle.net/1yohswje/
источник