Créer une case à cocher

51

Ecrivez un programme qui crée une case à cocher à deux états avec laquelle les gens peuvent interagir à l'aide d'une souris.

Plus précisément, votre programme doit atteindre tous les objectifs suivants:

  1. Avoir une zone de 8 × 8 pixels (ou plus grande si désiré) de l'écran qui est la zone cliquable de la case à cocher. Désormais cette région s'appelle simplement la case à cocher.

  2. Lorsque le curseur de la souris est déplacé dans la case à cocher et que le bouton de souris * par défaut est enfoncé, la case à cocher doit basculer entre les états.
    Coché devient décoché. Décoché devient coché.

  3. La case à cocher ne doit pas bouger quand on la bascule.

  4. A l'état coché, la case à cocher peut être n'importe quelle couleur.

  5. Si la case à cocher n'est pas cochée, la case à cocher peut contenir n'importe quelle couleur, à condition qu'au moins 16 pixels soient visuellement différents de l'état coché .

  6. Dans une seule instance de programme, tous les états cochés doivent être visuellement identiques les uns aux autres et tous les états non vérifiés doivent être visuellement identiques les uns aux autres.

  7. Ne terminez pas le programme tant qu'il n'est pas explicitement terminé (par exemple, via le bouton de sortie ou Alt + F4), afin qu'un utilisateur puisse cliquer autant que nécessaire sur la case à cocher.

* Vous pouvez supposer que le bouton de la souris par défaut correspond toujours à un clic gauche, mais il est également judicieux d'utiliser le paramètre par défaut défini par le logiciel de la souris ou le système d'exploitation, ce qui peut ne pas être en fait un clic gauche, en fonction de l'utilisateur.

Remarques

  • Peu importe ce qui se trouve en dehors de votre zone de case à cocher. Cela pourrait juste être le bureau. Il peut s'agir d'une partie d'une console qui change à chaque basculement.

  • Peu importe dans quel état votre case à cocher commence.

  • La zone de case à cocher peut avoir des dimensions égales ou supérieures à 8 × 8 pixels. Ce n'est pas nécessairement carré.

  • Vous pouvez accorder des tolérances mineures pour les paramètres hors de votre contrôle, tels que la taille de la police de la console, le zoom du navigateur, la résolution du moniteur, etc. Tant que votre programme fonctionne dans un paramètre de test raisonnable, il doit être valide.

  • Si votre programme ouvre une fenêtre, vous pouvez en déduire que celle-ci a été déplacée vers un emplacement approprié de l'écran si nécessaire (par exemple, le coin supérieur gauche).

  • Vous pouvez utiliser des langages de balisage tels que HTML ou d'autres langages que nous ne considérons généralement pas comme des langages de programmation à part entière.

  • Votre case à cocher doit être permutable en utilisant le bouton de la souris par défaut. C'est bien s'il bascule également pour d'autres formes de saisie (par exemple, le bouton droit de la souris), à l'exception du déplacement de la souris . c'est-à-dire que l'état ne devrait pas changer si la souris est simplement déplacée dans la case à cocher.

  • Les captures d'écran de votre case à cocher en action sont vivement encouragées!

Notation

Le code le plus court en octets gagne.

Exemple

Un exemple HTML canonique de 23 octets.

<input type="checkbox">

Pour moi, dans Google Chrome, cela fait une case à cocher de 12 × 12 pixels et environ 30 pixels changent clairement entre les états cochés et non cochés.

Je tiens compte du fait que le zoom du navigateur est à 100%.

Les passe-temps de Calvin
la source
2
La case à cocher peut-elle couvrir la totalité de l'écran?
Kritixi Lithos
@KritixiLithos Oui, cela serait valide.Mais notez que vous pouvez, si vous le souhaitez, compter une région particulière 8x8 comme case à cocher officielle, même si une région plus grande fonctionne.
Hobbies de Calvin
@Helka Homba - est-il permis à une application d'afficher d'autres contrôles, mis à part la case à cocher elle-même?
Zeppelin
Est-il possible que la case à cocher bascule sur d'autres types d'entrées? (Par exemple, une solution est-elle correcte si la case à cocher bascule sur n'importe quel type d'entrée utilisateur, qu'il s'agisse d'un clic de souris, d'un mouvement de souris ou d'une pression sur une touche? Il basculerait d'un clic de souris mais basculerait sur autres stimuli aussi.)
1
@zeppelin "Peu importe ce qui se trouve en dehors de votre zone de case à cocher. Cela pourrait simplement être le bureau. Cela pourrait être une partie d'une console qui change à chaque basculement." Donc, tant que la case à cocher est là, peu importe ce qu'il y a d'autre.
Hobbies de Calvin

Réponses:

33

Mathematica, 10 octets

Checkbox[]

Suppose l' environnement de cahier de Mathematica .

Les deux états ressemblent à ceci:

entrez la description de l'image ici

Martin Ender
la source
73
Sûr. Mathematica triche à nouveau.
Matthew Roh
1
C'est drôle comme le commentaire a plus de votes positifs que la réponse
RudolfJelin
4
@ RudolfL.Jelínek c'est drôle comme la réponse a une hausse de vote ...
Martin Ender
31

HTML, 20 octets

Je ne sais pas à quel point cela sera valable comme réponse. HTML nécessite que la balise soit fermée pour validation légale, mais les navigateurs modernes les fermeront automatiquement afin qu'elle soit exécutable.

<input type=checkbox

Jan
la source
3
Je regardais cela comme une option plus tôt (sans guillemets), mais j'ai complètement raté la clôture >. +1 et valide IMHO.
ElPedro
1
Sur ce site, les langues sont définies par leur implémentation, donc cela me semble bien.
John Gowers
1
Merci @JohnGowers, je m'interroge sur la définition de l'abus est acceptable.
Jan
27

Bash , 67 55 50 35 32 31 octets

:()(read -p$[i^=1]
›?9h -sn6
:)

Le code contient un octet CR (première nouvelle ligne) et un octet CSI (petit crochet à angle droit avec le codage Windows-1252). Il nécessite xterm (ou équivalent) et le codage ISO-8859-1 (ou similaire).

Le code définit une fonction nommée :, qui affiche alternativement un 1 blanc ou un 0 blanc dans un rectangle noir. Il y a exactement 24 pixels différents avec les paramètres par défaut de xterm. ( preuve )

Pour une version plus ancienne qui change la couleur de tout le terminal, vérifiez la révision 10 de cette réponse.

Merci à @ ais523 d’avoir suggéré xterm, ce qui économise 4 octets!

Comment ça fonctionne

:(...)crée une fonction nommée :qui s'exécute ....

La commande de lecture fait la magie réelle.

  • -p spécifie une invite d'entrée qui est imprimée sur STDOUT.

    • $[i^=1]est une expansion arithmétique qui XORs la variable i avec 1 . je peux être initialement non réglé; lorsque cela se produit, il sera traité comme 0 .

    • Le retour chariot replace le curseur au début de la ligne.

    • ›?9hcapture la souris dans les terminaux pris en charge. Chaque clic enverra six caractères au terminal, à savoir ←[Mbxy, où représente l'octet ESC ( 0x1b ). ←[indique une séquence d'échappement, Mla souris, ble bouton ( 0x20 + le numéro du bouton), xla coordonnée x du clic ( coordonnée 0x20 +) et yla coordonnée y .

    • -sn6rend la lecture silencieuse (l'entrée de la souris ne sera pas répercutée sur STDERR) et s'arrête après avoir lu exactement 6 octets. Il enregistre l'entrée dans la variable REPLY , mais le résultat qu'il produit ne nous intéresse pas.

Enfin, une fois la lecture terminée (après un clic de souris), :s’appelle de manière récursive et entre dans une boucle infinie.

Création et invocation

$ echo $':()(read -p$[i^=1]\r\x9b?9h -sn6\n:);:' > checkbox.sh
$ xxd -c 17 -g 1 checkbox.sh
0000000: 3a 28 29 28 72 65 61 64 20 2d 70 24 5b 69 5e 3d 31  :()(read -p$[i^=1
0000011: 5d 0d 9b 3f 39 68 20 2d 73 6e 36 0a 3a 29 3b 3a 0a  ]..?9h -sn6.:);:.
$ LANG=en_US xterm -e bash checkbox.sh

Sortie

screencast

Dennis
la source
Je travaillais moi-même sur une solution similaire (bien que dans une langue différente, ce qui m'obligeait à abandonner car je ne pouvais pas trouver un moyen de prendre des entrées sans nouvelle ligne). Une amélioration probable: changer 1000hà 9h(la différence est que 1000hgère à la fois appuyer et relâcher la souris, et 9hne gère que le relâchement de la souris). Cela pourrait ou non nécessiter des modifications ailleurs dans le code.
@ ais523 J'ai essayé, mais au moins mon émulateur de terminal (Konsole) ne semble pas le supporter. En connaissez-vous un qui le fait?
Dennis
gnome-terminalsemble fonctionner, c’est ce que j’utilisais pour les tests (edit: mais je ne pense pas qu’il supporte un CSI à 1 octet). xtermdevrait également fonctionner et pourrait être plus facile à installer si vous avez un système KDE. (Je viens de tester cela moi-même; cela fonctionne avec \x1b[mais pas avec, \x9bpour une raison quelconque, probablement lié à mes paramètres stty plutôt qu'au terminal lui-même.)
@ ais523 j'ai xterm. Je vérifierai quand je serai de retour sur mon PC.
Dennis
8
J'aime comment ça se passe :)d' :(ici la fin
Andras Deak
22

Traitement, 78 66 65 63 61 octets

2 octets enregistrés grâce à @TuukkaX en utilisant à la -a%2place dea%2*-1

2 octets enregistrés grâce à @TuukkaX en utilisant a=-a

int a=1;void draw(){background(a);}void mousePressed(){a=-a;}

La case à cocher alterne entre noir et blanc.

Explication

int a=1;                   //the variable that contains the state of the checkbox
void mousePressed(){a=-a;} //if the mouse is pressed, change the sign of a

Il existe maintenant de nombreuses autres solutions, telles que l’utilisation d’une instruction if pour traiter cela, mais cela devient étrange et change constamment l’arrière-plan lorsque vous appuyez sur la souris. J'ai d'abord essayé mouseButton, mais j'aurais alors besoin de plus de conditions et de code qui finirait par être beaucoup plus bavard.

Maintenant, pour mousePressed()pouvoir être appelé pour toujours (sinon, le programme s’arrêtera juste après le début du programme), nous avons besoin d’une draw()fonction.

void draw(){               //loop infinitely
  background(a);           //set the sketch's background to -a%2
  //if a ==  1, the background colour is set to almost black
  //if a == -1, the background colour is set to white
}

entrez la description de l'image ici


Une petite case à cocher serait de 90 octets (la case à cocher se trouve dans le coin supérieur gauche, nous pouvons donc supprimer certaines conditions de la souris):

int a=1;void draw(){fill(a);rect(0,0,8,8);}void mousePressed(){if(mouseX<9&mouseY<9)a=-1;}
Kritixi Lithos
la source
2
Utilisation intelligente de la façon dont Processing accepte les entiers simples comme couleurs en niveaux de gris!
FlipTack
@FlipTack Il semble que le blanc puisse aussi être exprimé parfill(-1)
Kritixi Lithos
1
J'ai une idée. Initialiser aà 1 au lieu de 0. Changer a++à a=-a, ce qui rend -a%2juste a. Cela basculera aentre 1 et -1. Je ne sais pas quelle couleur 1 produit cependant.
Yytsi
@ TuukkaX Yup cela fonctionne. color(1)produit #010101qui est très proche du noir
Kritixi Lithos
22

HTML + JavaScript, 32 30 25 caractères

<p onclick=innerHTML^=1>0

Qwertiy
la source
3
thisest implicite et peut être supprimé. Aussi, innerHTMLest plus courte.
Dennis
@Dennis, étrange avec ça ... Merci.
Qwertiy
+1 pour ne pas utiliser l' <input>élément
RedClover
20

Unix Shell (+ x11-apps), 3 octets

Avertissement

La réponse ci-dessous est ennuyeuse, limite et "sent tricher" (du moins pour moi).

Pourtant, il ne semble pas enfreindre les règles du challenge "telles qu'écrites", ni les "échappatoires par défaut", alors je les publie.

(Si vous pouvez indiquer une règle spécifique qui est enfreinte, veuillez commenter!)

Golfé

xgc

Le programme xgc illustre diverses fonctionnalités des primitives graphiques X.

L’ écran xgc contient en réalité plusieurs cases à cocher:

entrez la description de l'image ici

et "boutons collants" (qui sont considérés comme des cases à cocher, selon les règles de ce défi):

entrez la description de l'image ici

Zeppelin
la source
20

GitHub Flavored Markdown - 6 octets

- [ ] 

(Il y a un espace de fuite)

En bref: vérifier / ne pas vérifier

Axel
la source
Bien sûr, cela correspond à la deuxième moitié de la première phrase, «Écrivez un programme qui crée une case à cocher à deux états avec laquelle les gens peuvent interagir avec une souris .»?
manatwork
1
Oui, si vous le collez dans un résumé et créez le résumé (pour "compilation"), vous pourrez interagir avec celui-ci.
Axel
Intéressant. Merci @ Ax31. Je n'ai jamais utilisé de gists.
Manatwork
1
Je n'aurais pas prévu "Github Flavored Markdown".
Jonas Schäfer
18

AHK , 25 octets

Gui,Add,Checkbox
Gui,Show

Sortie -

Le pointeur de la souris n'est pas capturé dans ce gif

Gurupad Mamadapur
la source
16

Scratch, 2 blocs

entrez la description de l'image ici

Mettez ce script dans le sprite par défaut (qui vient avec 2 costumes)

SuperJedi224
la source
1
Démo en ligne: phosphorus.github.io/…
primo le
14

Python REPL, 45 octets

from tkinter import*
Checkbutton(Tk()).pack()
Bleu
la source
Je ne participe pas au CG et je ne lis pas souvent ces articles. Cependant, cela me surprend vraiment que vous soyez autorisé à utiliser des modules externes. N'est-ce pas tricher? Je ne sais pas combien d'octets sont dans le code source Tk, mais ces octets ne devraient-ils vraiment pas être ajoutés à votre nombre d'octets?
FMaz
1
@Krazor tkinterest une bibliothèque standard pour Python (mais même si ce n'était pas le cas, je n'aurais qu'à déclarer Python REPL + tkinter). Cela signifie que je peux utiliser ses fonctionnalités simplement en les important. La pénalité que vous proposez est similaire à celle que vous demandez aux utilisateurs d’inclure dans le nombre d’octets le nombre d’octets dans la source de la langue dans laquelle vous écrivez. Nous autorisons toute langue ou tout module à faire concurrence tant qu’il a été écrit et publié publiquement avant le défi a été posté.
Blue
Ok, merci pour la clarification.
FMaz
14

GeoGebra , 10 octets

Checkbox[]

Entré dans la barre de saisie.

Voici un gif de l'exécution:

Exécution du programme

TheBikingViking
la source
7
Whoah, GeoGebra. Je me souviens que. Cela fait longtemps.
Nic Hartley
Je sais que c'est hors sujet, mais est-ce que vous allez au Waterloo Collegiate Institute? Juste par curiosité, basé sur votre nom. Je ne suis pas un harceleur ne vous inquiétez pas :)
HyperNeutrino
13

Tcl / Tk, 21 octets

Golfé

grid [checkbutton .c]

entrez la description de l'image ici

Zeppelin
la source
11

HTML avec JavaScript - 136 124 120 115 113 111 109 79 octets

<p style=height:20;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>

-2 grâce à @KritixiLithos

Réduit à 79 après une partie de golf fantastique de @Jan. Bien que la nouvelle version réponde aux exigences, j'ai conservé l'ancienne version pour des raisons de fierté professionnelle.

Bien qu'il soit parfaitement valide d'utiliser les fonctions intégrées, j'ai pensé qu'il était plus amusant de créer le mien à partir de rien. Testé avec Chrome et Firefox. border:solidexiste-t-il pour la compatibilité IE mais je ne sais pas si cela est réellement nécessaire dans les nouvelles versions d'IE - je n'ai pas IE disponible pour tester.

Le pxdans la hauteur est là pour l'avantage de "Run code snippet" donc n'est pas inclus dans le "réel" nombre d'octets. Cela fonctionne bien dans le navigateur sans cela.

<p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>

La version précédente:

<p id=d style="width:20px;height:20px;border:solid 1px"onClick="d.innerHTML=d.innerHTML=='x'?'':'x'"align=center>

ElPedro
la source
1
Pouvez-vous faire id=dpour supprimer d=this?
Kritixi Lithos
1
@KritixiLithos - En effet je peux. Merci et bien repéré :)
ElPedro
1
Vous n'avez pas besoin de définir la largeur, les règles stipulent qu'il peut s'agir de n'importe quelle dimension. Si vous stockez l'état sur une propriété, thisvous enregistrez la définition de l'identifiant. Si vous stockez thisdans une propriété, vous économiserez quelques octets. Le alignest inutile. Comme il n'y a pas d'espaces dans les chaînes d'attributs, vous n'avez pas besoin des guillemets. <p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>79 octets
Jan
@Jan - Merci! Le bit de largeur est ma propre fierté professionnelle. Si je ne le fixe pas, cela a l'air moche et puisque cette réponse ne va jamais gagner et qu'elle vient d'être postée comme alternative, je la laisserai probablement là. Autre que cela quelques bons conseils. Merci beaucoup. Mettra à jour demain.
ElPedro
Merci @ Rapide. Mis à jour le code mais oublié les autres bits. Il se fait tard.
ElPedro
9

Minecraft 1.0.0, 1 octet

Un levier dans Minecraft répond à tous les critères pour une case à cocher. Cette réponse n’est valable que pour les anciennes versions du jeu où la frappe est toujours activée.

entrez la description de l'image ici

Marqué selon le nombre d'octets suggéré par @Connor O'Brien.

Zavada
la source
Une différence de 3 entre deux réponses fait à peine ou brise un consensus, mais étant donné que la réponse de Conor est assez controversée (actuellement à + 24 / -10 ) et que la réponse acceptée est extrêmement bien accueillie ( + 17 / -0 ), je pense ce dernier doit être utilisé pour noter les réponses de Minecraft.
Dennis
Cependant, Minecraft 1.0.0
ev3commander
1
Il en est une nà Conor, en passant :)
Conor O'Brien
Ou vous pouvez relier les boutons gauche et droit de la souris dans une version plus récente pour la rendre valide; D
seadoggie01
@ ConorO'Brien N'est-ce pas 1 block? Pourquoi 1 byte? Je ne pense pas que mc stocke chaque bloc sous la forme d'un octet ...
RedClover
8

TI-Basic, 15 octets

While 1:Shade(0,9:Input :ClrDraw:Input :End

Assez simple. La case à cocher couvre environ 40% de l'écran et alterne entre noir et blanc. Lorsque coché, l’écran ressemblera à quelque chose comme ceci:

écran

Timtech
la source
8

Toute version de la ligne de commande Windows, 3 octets

(cmd.exe, batch, powershell, start-> run, peu importe)

osk

Ouvre le clavier à l'écran qui comporte plusieurs "cases à cocher" telles que Maj, Ctrl, Alt, Touches majuscules. Similaire à la réponse xgc et inspiré de la capture d'écran de la réponse SmileBASIC.

utilisateur65280
la source
7

Octave, 36 20 octets

uicontrol('sty','c')

Grâce à @LuisMendo, 16 octets ont été sauvegardés!

rahnema1
la source
1
uicontrol('sty','c')fonctionne aussi
Luis Mendo
@LuisMendo Merci! Compte de 1/2 octet sauvé!
rahnema1
7

KV Lang , 8 octets

CheckBox

entrez la description de l'image ici


en supposant qu'un environnement Python vraiment basique pour que kv lang s'exécute même:

from kivy.app import runTouchApp
from kivy.lang import Builder
runTouchApp(Builder.load_string('CheckBox'))

Cela fonctionne essentiellement parce CheckBoxqu’un widget de Kivy est inclus dans kivy.Factorychaque widget de la bibliothèque standard.

Cette simple chaîne crée une instance de CheckBoxet à cause de l' runTouchAppattente d'un widget à exécuter, je peux l'utiliser Builder.load_string.

L'arrière-plan des load_stringpoignées correspond à peu près à chaque chaîne de kv. Si une seule instance d'un widget est définie (par exemple CheckBox), elle est élevée à la position d' un widget racine , par exemple:

Application
    openGL Window
        root widget(mostly layout)
            main tree
            and some widgets
            ...
KeyWeeUsr
la source
7

SmileBASIC, 49 octets

@L
O=T
TOUCH OUT T,,
X=T<O!=X
KEY 1,""[X]GOTO@L

et sont une case vide et une case cochée dans la police de SB.
Basculez la case à cocher en touchant l'écran (la chose la plus proche de cliquer avec une souris)

entrez la description de l'image ici entrez la description de l'image ici

Tricher les réponses:

0 octet:

(le clavier à l'écran comporte des boutons qui agissent comme des cases à cocher, telles que le verrouillage des majuscules et les touches d'insertion)

14 octets:

EXEC"SYS/SBGED

Ouvre l'éditeur graphique intégré, qui comporte plusieurs boutons ressemblant à des cases à cocher

12Me21
la source
C'est simplement génial, même si je ne comprends pas vraiment ce que fait la 4ème ligne. Pourriez-vous expliquer?
snail_
T<Oest vrai quand vous arrêtez de toucher l'écran, et !=est utilisé comme un XOR logique. X=X XOR (O && !T)
12Me21
7

C #, 124 120 octets

sauvé 4 octets grâce à grabthefish.

case à cocher cochée et non cochée Remarque: en raison des modifications apportées, l'image ne représente pas exactement ce que le code crée, "checkBox1" n'est pas affiché avec le code actuel.

using System.Windows.Forms;class P{static void Main(){var a=new Form();a.Controls.Add(new CheckBox());a.ShowDialog();}}

ungolfed: using System.Windows.Forms; class P{ static void Main(){ var a=new Form(); a.Controls.Add(new CheckBox()); Application.Run(a); a.ShowDialog(); } }

satibel
la source
Si vous n'avez rien trouvé à ce sujet dans meta, demandez-le à ce sujet.
Matthew Roh
Vous pouvez vous débarrasser des espaces var a = new Form();.
Clismique
@ Qwerp-Derp Je les ai supprimés pour le comptage, je viens de coller la mauvaise chose, merci.
Satibel
vous pouvez utiliser a.ShowDialog();pour économiser quelques octets
grabthefish
merci @grabthefish, bien que c # perde toujours à java :(
satibel
6

Rubis avec chaussures, 16 personnages

Shoes.app{check}

Exemple de sortie: case à cocher créée avec Ruby

homme au travail
la source
6

HTML avec JavaScript, 46 33 28 octets

<body onclick=innerHTML^=1>0

v2

<body onclick=this.innerHTML^=1>0

v1

<body onclick=t=this;t.innerHTML=t.e=!t.e||''>

Ceci est une variante de la réponse de @ ElPedro: Créer une case à cocher . Réduit à 28 octets à l'aide de @Albert Renshaw Il pourrait être encore réduit, mais cela le rendrait identique à Créer une case à cocher

Toute la zone d'application est cliquable. Il affichera 0dans l' offétat et 1dans l' onétat. Essayez-le à l' adresse https://jsbin.com/nuhetiyocu/1/edit

Jan
la source
1
Voici une variation soignée à 39 octets. <body onclick=t=this;t.innerHTML^=t?1:0La règle des 16 pixels entre les changements d’état reste toutefois à débattre.
Albert Renshaw
38<body onclick=this.innerHTML^=this?1:0
Albert Renshaw
1
Oh non avec votre aide , je suis sur 33 déjà :)
Jan
1
28<body onclick=innerHTML^=1>0
Albert Renshaw
1
Maintenant qu'il y a toujours une valeur à l'intérieur du conteneur, elle peut être changée d' bodyun élément à un autre. Mais je viens de remarquer que RENDRAIT identique à une autre réponse codegolf.stackexchange.com/questions/109155/create-a-checkbox/... donc je vais juste laisser comme cela est
Jan
6

Powershell v5 +, 94 octets

($a=[Windows.Forms.Form]::new()).Controls.Add([Windows.Forms.Checkbox]::new());$a.ShowDialog()

entrez la description de l'image ici entrez la description de l'image ici

C'est assez terrible, mais je ne peux pas raccourcir les instructions avec Add-Typeor ou using namespace- et la variable est obligatoire, car je dois réutiliser l'objet pour afficher le formulaire et Controls.Add()ne renvoie rien d'utilisation.

ShowDialog est obligatoire sur mon système pour que la boîte soit interactive après avoir exécuté cette commande, sinon le formulaire est gelé.

De plus, le système System.Windows.Forms.Formne peut être raccourci que lorsque le système Windows.Forms.Form(du moins le mien) arrête de le terminer automatiquement lors d’une nouvelle session.

Colsw
la source
Agréable! Peut-être envie d'ajouter que cela nécessite la version 5+.
Briantist
@briantist mis à jour, merci.
Colsw
6

Excel VBA, 38 32 31 29 octets

Fonction Immédiat de la fenêtre qui insère une case à cocher de hauteur = 9 et largeur = 9, dans la cellule A1de la première feuille du projet Excel VBA actif

Sheet1.CheckBoxes.Add 0,0,9,9

-6 Merci à pajonk d'avoir remplacé [A1],[A1],9,9par0,0,9,9

-1 pour remplacer Sheets(1)par[Sheet1]

-2 pour réaliser ce qui précède était stupide et utiliser à la Sheet1place

Taylor Scott
la source
Il semble que 1,1,9,9les arguments fonctionnent aussi bien.
pajonk
1
Vous n'avez pas besoin de la Sheet(1)., vous pouvez l'exécuter assez rapidement dans Excel, mais elle CheckBoxesest inhérente à la feuille active
Mr.Burns,
@ Mr.Burns J'ai vérifié cela, mais sans faire directement référence à un objet de la feuille de calcul, la CheckBoxes.Addméthode renvoie une erreur indiquant "Objet requis"
Taylor Scott le
@TaylorScott Vous avez raison, j'ai mis le code dans un module feuille plutôt que dans un module normal .. Mon erreur xD
Mr.Burns le
4

VBA (Word), 74 57 octets

-17 grâce à Taylor Scott

Sub a()
f = a.FormFields.Add(Selection.Range, 71)
End Sub

Le nom de fichier du document doit être un.

Daniel
la source
1
Vous pouvez remplacer le wdFieldFormCheckBoxavec 71(la valeur entière de la wdFieldFormCheckBoxconstante) pour une économie de 17 octets
Taylor Scott
Je pense que vous pouvez supprimer les nouvelles lignes pour -2 octets.
devRicher
4

Carlin, 20 octets

input(type=checkbox)
theonlygusti
la source
En outre, je compte en tant que 23. Si vous supprimez les guillemets, cela fonctionne toujours sur Firefox et Chrome (impossible de tester sur IE) et vous obtiendrez 21, auquel cas je considérerais cela comme une amélioration par rapport à l'exemple et donc valide.
ElPedro
@ heonlygusti - en effet, mais sans les guillemets, j'aurais voté :-) d'ailleurs, le vote par ordre de vote n'était pas moi.
ElPedro
J'aurais voté à la hausse s'il n'y avait pas eu ces citations, qui ne sont pas nécessaires.
NightSkyCode
@theonlygusti pas du tout. Essaie.
NightSkyCode
4

Clojure, 201 195 145 127 octets

(ns c(:require[quil.core :as q]))(def a(atom nil))(q/defsketch b :draw #(q/background(if@a 0 99)):mouse-clicked #(swap! a not))

-6 octets en éliminant le besoin m/fun-mode.

-50 octets en supprimant les options :setupet :size, car elles sont par défaut et inutiles en non fun-mode. Également supprimé l'importation inutile pour le middleware.

-18 octets grâce à @ ASCII uniquement. Remplacé par des couleurs "plus petites" et suppression d'un espace inutile avant l'opérateur de déréférence ( @).

Crée un croquis Quil (une bibliothèque Clojure qui fournit une couche sur Traitement), par conséquent, la bibliothèque Quil doit être exécutée.

(ns bits.golf.checkbox
  (:require [quil.core :as q]))

; Mutable global variable to hold the toggle state
(def a (atom nil))

(q/defsketch b
         ; Draw the background color to be either black or red depending on the toggle state.
         :draw #(apply q/background (if @a [0 0 0] [255 0 0]))

         ; Negate the state on mouse click
         :mouse-clicked #(swap! a not))

entrez la description de l'image ici

entrez la description de l'image ici

Carcigenicate
la source
Ne pouvez-vous pas remplacer 255 par 99? J'essayerais aussi de supprimer les espaces avant / après les symboles et de voir si cela fonctionne toujours
ASCII uniquement
@ ASCII-seulement oui, je pourrais. Cela a fait une couleur laide bien que je me sente bien, et pour une raison quelconque, j’ai priorisé cela à l’époque. Et non, c'est tout l'espace que je peux malheureusement enlever.
Carcigenicate
@ ASCII-only Le problème étant que les symboles peuvent contenir presque tous les caractères, les seuls "voisins sûrs" pour lesquels vous pouvez supprimer des espaces sont des crochets ou des crochets. Heureusement, c'est un feu follet pour l'ancien qui est assez répandu.
Carcigenicate
Hmm peut-être [0 0 99]alors? (une sorte de bleu foncé)
ASCII uniquement
@ ASCII-only En fait, je pense que je peux laisser tomber les 0 maintenant que j'y pense. Je pense que Quil auto remplit le front avec des 0 si le vecteur est trop court. Si je me souviens plus tard, je vais arranger ça. Merci de m'avoir fait réfléchir.
Carcigenicate
4

Langage de script Operation Flashpoint , 273 octets

Pour afficher la case à cocher:

createDialog"b"

Mais il faut d’abord définir:

Enregistrez ce qui suit dans un fichier nommé description.extdans le dossier de la mission:

class b{idd=999;movingEnable=1;class controls{class c{idc=457;x=0.1;y=0.1;w=0.1;h=0.1;text="";action="if(ctrlText 457=={})then{ctrlSetText[457,{V}]}else{ctrlSetText[457,{}]}";type=1;style=2;colorText[]={1,1,1,1};font="tahomaB36";sizeEx=0.1;}}}

La case à cocher en action:

Steadybox
la source
3

AutoIt , 78 octets

GUICreate(0)
GUISetState(GUICtrlCreateCheckbox(0,0,0))
Do
Until GUIGetMsg()=-3

Ouvre une fenêtre maximisée qui peut être fermée comme n'importe quelle autre fenêtre. La maximisation et ... la perfection sont un effet secondaire du golf.

entrez la description de l'image ici

mınxomaτ
la source
Comment pourrais-je l'exécuter sous Linux?
dkudriavtsev
@wat wine AutoIt3.exe script.au3, où le script.au3fichier contient ce code.
Mınxomaτ
3

Python, 62 octets

from tkinter import*
a=Tk()
Checkbutton(a).pack()
a.mainloop()
Bleu
la source