Vous connaissez ces boîtes Windows où vous ne pouvez faire qu'une seule chose?
Prenons cela au niveau suivant!
Défi
Créez une boîte de dialogue avec un bouton qui suit votre curseur partout!
Spécifications
Aucune entrée ne peut être prise. Il peut y avoir une sortie vers STDOUT ou STDERR. Vous devez ouvrir une fenêtre avec un bouton (aucun texte n'est nécessaire, mais le texte peut être contenu dans le titre de la fenêtre, la boîte de dialogue ou le bouton). Le bouton doit être cliquable, et il doit toujours suivre sous votre curseur pour que vous ne puissiez que le cliquer. En cliquant, il peut faire tout ce que vous voulez, mais s'il vous plaît ne le faites pas planter un ordinateur car je vais tester cela ... La boîte de dialogue doit rester ouverte tant que le bouton n'est pas enfoncé, mais il n'a pas besoin de fermer lorsque le bouton est fermé.
Hypothèses que vous pouvez formuler
- Vous pouvez supposer que le curseur restera dans la zone de dessin.
- Vous pouvez supposer que la fenêtre restera au point, mais vous ne devez pas la mettre au point tant que le bouton n'est pas enfoncé.
Exemple de pseudocode
Voici un exemple de pseudocode:
Open Dialog Box
Add Button to Dialog Box at position X, Y
WHILE True:
SET Dialog Box to CursorX - X, CursorY - Y
Les cas de test ne peuvent pas être fournis pour ce défi
Il s'agit d'un défi de code-golf, donc la soumission valide la plus courte d'ici le 14 mars (Pi Day) gagne!
C # (Windows Form Application),
200114 octetsNon-golfé
Ancienne solution à 200 octets:
Non-golfé
la source
Event += listener
? C'est génial :-)+
opérateur. Toujours très succinct.AutoHotkey,
122115 octetsla source
Java 7,
294289286264220 octets-22 octets grâce à MouseInfo (volé à Zavada ) Je n'aime pas les bibliothèques awt>.>
J'ai réduit 44 octets en supprimant la méthode principale ici. La méthode principale n'est pas nécessaire si elle est lancée sous forme d'applet. Cela peut être réalisé via "Run As Java Applet" d'éclipse ou en désactivant le gestionnaire de sécurité et en utilisant l' appletviewer , qui est fourni avec le JDK (à moins que vous ne puissiez toujours afficher les applets dans les navigateurs Web. Je ne pense pas que Chrome le permette) .
la source
import java.awt.event.*;
*
caractère générique n'importe pas de manière récursive des sous-packages. J'ai besoinjava.awt.event
deMouseAdapter
etMouseEvent
Java,
172199235 octetsGolfé:
Non golfé:
Explication: J'utilise l'initialisation à double accolade sur ma déclaration d'un nouveau JDialog. Cela a permis d'économiser des octets en excluant l'extension de JDialog (ce qui m'a permis d'enregistrer des octets en excluant
public
demain
). À l'intérieur de la sous-classe anonyme de JDialog, je la rend visible (en utilisant à la1>0
place detrue
) et j'appellea()
, ce qui est nécessaire car l'initaliseur a une erreur de compilation si la boucle était normalement installée. J'ai choisi d'utiliser MouseInfo plutôt que tout le code excédentaire associé à l'ajout d'un écouteur de souris.Edit: a dû augmenter le nombre de 27 à ajouter
add(new java.awt.Button());
. Je pensais que JDialogs avait un bouton implicite par technicité, mais je semble avoir tort.Edit 2: J'ai dû ajouter
setSize
et décaler l'emplacement de la souris pour rendre le bouton cliquable.la source
Traitement modifié Js
102108 octetsEssayez-le en ligne! Je viens de mettre à jour mon lien!
Il dessine simplement un rectangle qui suit votre souris et un petit rectangle à l'intérieur duquel vous cliquez et il devient rouge. Cela fonctionne mais n'est pas étonnant. Cette version est très stricte sur les accolades et tout cela :(
la source
Clojure, 525 octets
Ne crée pas une véritable boîte de dialogue Windows. Au lieu de cela, il en crée un faux et crée un bouton factice (non fonctionnel) au milieu.
Cela a été autorisé par le PO dans les commentaires.
Utilise la bibliothèque Quil .
la source
Pug / Slim + CSS / SCSS / LESS / Stylus + ES6 Javascript (98 octets)
Essayez-le en ligne!
Carlin (10 octets UTF-8)
Stylet (18 octets UTF-8)
JS (70 octets UTF-8)
Décompilé, non-golfé et expliqué l'extrait de code:
la source
Mathematica 226 octets
La position de la souris par rapport à l'écran est suivie par l'extrémité avant et la position de la fenêtre du carnet de dialogue est déplacée chaque fois que la souris se déplace. Assez simple, mais les commandes sont très longues en termes de lettres, comme c'est souvent le cas avec Mathematica. Cliquez sur OK pour fermer la boîte de dialogue.
PS Lorsque vous avez terminé les tests, exécutez-le pour supprimer l'option front-end.
la source
Javascript (ES6) + HTML + CSS, 139 octets
HTML:
CSS:
Javascript:
Comme vous ne pouvez pas positionner les boîtes de dialogue d'alerte, j'ai créé ma boîte de dialogue personnalisée de super fantaisie en HTML. Le javascript enregistre un gestionnaire d'événements sur l'objet fenêtre et définit la position sur les coordonnées de l'événement.
Essayez-le en ligne: https://jsfiddle.net/1yohswje/
la source