Anda tahu kotak-kotak Windows di mana Anda hanya bisa melakukan satu hal?
Mari kita bawa ini ke level selanjutnya!
Tantangan
Buat kotak dialog dengan tombol yang mengikuti kursor Anda di mana-mana!
Spesifikasi
Tidak ada input yang dapat diambil. Mungkin ada output untuk STDOUT atau STDERR. Anda harus membuka jendela dengan satu tombol (tidak perlu teks, tetapi teks dapat dimuat dalam judul jendela, kotak dialog, atau tombol). Tombol harus dapat diklik, dan itu harus selalu mengikuti di bawah kursor Anda sehingga Anda hanya dapat mengkliknya. Setelah mengklik, itu dapat melakukan apa pun yang Anda inginkan, tapi tolong jangan membuatnya crash komputer karena saya akan menguji ini ... Kotak dialog harus tetap terbuka selama tombol tidak ditekan, tetapi tidak perlu tutup ketika tombol ditutup.
Asumsi yang bisa Anda buat
- Anda dapat mengasumsikan bahwa kursor akan tetap berada di dalam kanvas gambar.
- Anda mungkin berasumsi bahwa jendela akan tetap fokus, tetapi Anda tidak boleh meletakkan jendela tidak fokus selama tombol tidak ditekan.
Contoh Pseudocode
Inilah beberapa contoh pseudocode:
Open Dialog Box
Add Button to Dialog Box at position X, Y
WHILE True:
SET Dialog Box to CursorX - X, CursorY - Y
Uji Kasus tidak dapat disediakan untuk tantangan ini
Ini adalah tantangan kode-golf, sehingga pengiriman terpendek yang sah hingga 14 Maret (Hari Pi) menang!
C # (Aplikasi Formulir Windows),
200114 byteTidak Golf
Solusi 200 byte lama:
Tidak Golf
sumber
Event += listener
? Itu luar biasa :-)+
operator. Masih sangat ringkas.AutoHotkey,
122115 bytesumber
Java 7,
294289286264220 byte-22 byte berkat MouseInfo (dicuri dari Zavada ) Saya tidak suka perpustakaan awt>.>
Saya mencukur 44 byte dengan menghapus metode utama di sini. Metode utama tidak diperlukan jika ini diluncurkan sebagai applet. Ini dapat dicapai melalui eclipse's "Run As Java Applet" atau dengan menonaktifkan manajer keamanan dan menggunakan appletviewer , yang datang dengan JDK (kecuali Anda masih dapat melihat applet di browser web. Saya tidak berpikir chrome mengizinkan ini) .
sumber
import java.awt.event.*;
*
Wildcard tidak mengimpor sub paket secara rekursif. Saya perlujava.awt.event
untukMouseAdapter
danMouseEvent
Jawa,
172199235 BytesGolf:
Tidak Disatukan:
Penjelasan: Saya menggunakan inisialisasi penjepit ganda pada deklarasi JDialog baru saya. Ini menyimpan byte dengan mengecualikan ekstensi JDialog (memungkinkan saya untuk menyimpan byte yang tidak termasuk
public
darimain
). Di dalam subkelas anonim JDialog, saya membuatnya terlihat (menggunakan1>0
alih-alihtrue
) dan menelepona()
, yang diperlukan karena initalizer memiliki kesalahan waktu kompilasi jika loop duduk di dalamnya secara normal. Saya memilih untuk menggunakan MouseInfo daripada semua kode berlebih yang terkait dengan menambahkan pendengar mouse.Sunting: Harus menambah jumlah sebanyak 27 untuk ditambahkan
add(new java.awt.Button());
. Saya pikir JDialogs memiliki tombol tersirat oleh teknis, tetapi saya tampaknya salah.Sunting 2: Harus menambah
setSize
dan mengimbangi lokasi mouse untuk membuat tombol dapat diklik.sumber
Modifikasi Pemrosesan Js
102108 byteCobalah online! Baru saja memperbarui tautan saya!
Itu hanya menggambar persegi panjang yang mengikuti mouse Anda dan persegi panjang yang lebih kecil di dalamnya yang Anda klik dan berubah menjadi merah. Ini bekerja tetapi tidak luar biasa. Versi ini jika sangat ketat pada kawat gigi dan semua itu :(
sumber
Clojure, 525 byte
Apakah tidak membuat dialog Windows asli. Sebaliknya, itu membangun yang palsu, dan menciptakan tombol dummy (tidak berfungsi) di tengah.
Ini diizinkan oleh OP dalam komentar.
Menggunakan perpustakaan Quil .
sumber
Pug / Slim + CSS / SCSS / KURANG / Stylus + ES6 Javascript (98 Bytes)
Cobalah online!
Pug (10 UTF-8 Bytes)
Stylus (18 UTF-8 Bytes)
JS (70 UTF-8 Bytes)
Didekompilasi, Tidak Disatukan, dan dijelaskan Cuplikan:
sumber
Mathematica 226 Bytes
Posisi mouse relatif terhadap layar dilacak oleh ujung depan dan posisi jendela notebook dialog dipindahkan setiap kali mouse bergerak. Cukup sederhana, tetapi perintahnya sangat panjang dalam hal huruf, seperti yang sering terjadi dengan Mathematica. Mengklik OK akan menutup dialog.
PS Ketika Anda selesai menguji, jalankan ini untuk menghapus opsi ujung depan.
sumber
Javascript (ES6) + HTML + CSS, 139 byte
HTML:
CSS:
Javascript:
Karena Anda tidak dapat memposisikan dialog peringatan, saya membuat dialog super mewah khusus saya dalam HTML. Javascript mendaftarkan pengendali acara pada objek jendela dan mengatur posisi ke koordinat acara.
Cobalah online: https://jsfiddle.net/1yohswje/
sumber