Onay Kutusu Oluştur


51

İnsanların bir fare kullanarak etkileşime girebilecekleri iki durumlu bir onay kutusu oluşturan bir program yazın .

Özellikle, programınız aşağıdakilerin hepsini gerçekleştirmelidir:

  1. Ekranın 8 × 8 piksel (veya istenirse daha büyük) bölgesini, onay kutusunun tıklanabilir alanı olan ekrana getirin. Bundan böyle bu bölgeye basitçe onay kutusu denir.

  2. Fare imleci onay kutusu içinde hareket ettiğinde ve varsayılan * fare düğmesine basıldığında, onay kutusu geçiş yapmalıdır.
    Kontrol edildi kontrol edilmedi. İşaretlenmemiş denetlenir.

  3. Onay kutusu, değiştirildiğinde hareket etmemelidir.

  4. İşaretli durumda, onay kutusu herhangi bir renkte olabilir.

  5. İşaretlenmemiş durumda, onay kutusu en az 16 piksel görsel olarak kontrol durumundan farklı olduğu sürece herhangi bir renkte olabilir .

  6. Tek bir program örneğinde, kontrol edilen tüm durumlar görsel olarak birbiriyle aynı olmalı ve kontrol edilmeyen tüm durumlar görsel olarak birbiriyle aynı olmalıdır.

  7. Açıkça sonlandırılana kadar programı sonlandırmayın (örneğin, çıkış düğmesi veya Alt + F4 aracılığıyla), böylece bir kullanıcı istediği kadar onay kutusunu tıklayabilir.

* Varsayılan fare düğmesinin her zaman sol tıklama olduğunu varsayabilirsiniz, ancak fare yazılımı veya işletim sistemi tarafından tanımlanan ve varsayılan olarak, kullanıcıya bağlı olarak sol tıklanamayan varsayılanı kullanmak da iyi olabilir.

notlar

  • Onay kutusu bölgenizin dışında ne olduğu önemli değildir. Sadece masaüstü olabilir. Her değiştirmede değişen bir konsol parçası olabilir.

  • Onay kutunuzun hangi durumda başlayacağı önemli değil.

  • Onay kutusu bölgesi 8 × 8 piksel veya daha büyük boyutlarda olabilir. Kare olması gerekmez.

  • Konsol yazı tipi boyutu, tarayıcı yakınlaştırması, monitör çözünürlüğü vb. Gibi kontrolünüz dışındaki ayarlar için küçük ödenekler sağlayabilirsiniz. Programınız makul bir test ayarında çalıştığı sürece geçerli olmalıdır.

  • Programınız bir pencere açarsa, gerekirse ekranda uygun bir yere sürüklendiğini varsayabilirsiniz (örneğin, sol üst köşe).

  • HTML veya genellikle tam teşekküllü programlama dili olarak görmediğimiz diğer diller gibi biçimlendirme dilleri kullanabilirsiniz .

  • Varsayılan fare düğmesini kullanarak onay kutunuzun değiştirilebilmesi gerekir . Fare hareketi hariç diğer girdi biçimleri için de geçiş yaparsa (örn. Farenin sağ düğmesi) de sorun değil . yani, fare yalnızca onay kutusu içinde hareket ettirildiğinde durum değişmemelidir.

  • Onay kutunuzun harekete geçirilmesinin ekran görüntüleri şiddetle tavsiye edilir!

puanlama

Bayt cinsinden en kısa kod kazanır.

Örnek

23 baytlık bir kanonik HTML örneği.

<input type="checkbox">

Benim için Google Chrome’da, bu 12 x 12 piksel onay kutusunu işaretler ve işaretli ve denetlenmeyen durumlar arasında yaklaşık 30 piksel açıkça değişir.

Tarayıcı yakınlaştırma işleminin% 100 olmasına izin veririm.


2
Onay kutusu tüm ekranı kapatabilir mi?
Kritixi Lithos,

@KritixiLithos Evet, bu geçerli olacaktır. İsterseniz, daha büyük bir bölge çalışsa bile, resmi bir onay kutusu olarak 8x8 belirli bir bölgeyi satabileceğinizi unutmayın.
Calvin'in Hobileri

@Helka Homba - Bir uygulamanın, diğer kutucukları işaretlemesinin yanında, onay kutusunun yanında olmasına izin verilir mi?
zeplin

Onay kutusunun başka tür girişlerde geçiş yapması uygun mu? (Örneğin, bir fare tıklaması, bir fare hareketi veya bir tuş basışına bakılmaksızın, onay kutusu herhangi bir kullanıcı girişi üzerinde geçiş yaparsa, bir çözüm doğru mu? diğer uyarıcılar da.)

1
@zeppelin "Onay kutusu bölgenizin dışında ne olduğu önemli değil. Sadece masaüstü olabilir. Her açışta değişen bir konsol parçası olabilir." Yani, onay kutusu orada olduğu sürece, başka ne olduğu önemli değil.
Calvin'in Hobileri

Yanıtlar:



31

HTML, 20 bayt

Bunun bir cevap olarak ne kadar geçerli olacağını bilmiyorum. HTML, etiketin yasal olarak doğrulanması için kapatılmasını gerektirir, ancak modern tarayıcılar bunları otomatik olarak kapatır, böylece çalıştırılabilir olur.

<input type=checkbox


3
Buna daha önce bir seçenek olarak bakıyordum (tırnak işaretleri olmadan) ama kapanışı tamamen kaçırdım >. +1 ve geçerli IMHO.
ElPedro

1
Bu sitede, diller kendi uygulamalarına göre tanımlanmıştır, bu yüzden bu bana uygun görünüyor.
John Gowers

1
Teşekkürler @JohnGowers, ne kadar kötüye kullanımın kabul edilebilir olduğunun tanımını merak ediyorum.
Ocak

27

Bash , 67 55 50 35 32 31 bayt

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

Kod, bir CR baytı (ilk satır) ve bir CSI baytı (Windows-1252 kodlamalı küçük dik açılı ayraç) içerir. Xterm (veya eşdeğeri) ve ISO-8859-1 kodlamasını (veya benzeri) gerektirir.

Kod, :dönüşümlü olarak siyah dikdörtgen içinde beyaz 1 veya 0 görüntüleyen bir işlev tanımlar . Xterm'in varsayılan ayarlarıyla tam 24 farklı piksel var. ( kanıt )

Tüm terminalin rengini değiştiren daha eski bir sürüm için bu cevabın 10. revizyonunu kontrol edin .

Öneren @ ais523 sayesinde xterm, 4 bayt kazandırır!

Nasıl çalışır

:(...):yürüten adlı bir işlev yaratır ....

Okuma komutu gerçek büyü yapar.

  • -p STDOUT'a yazdırılan bir giriş istemini belirtir.

    • $[i^=1]değişkeni XORs aritmetik bir genişleme i ile 1 . ı ilk tanımsız olabilir; bu olduğunda, 0 olarak kabul edilir .

    • Satır başı, imleci tekrar satırın başına getirir.

    • ›?9hfareyi desteklenen terminallerde yakalar. Her tıklama terminaline altı karakter gönderecek, yani ←[Mbxy, nerede ESC byte (temsil 0x1b ). ←[bir çıkış sırasını gösterir Mfare bbutonuna ( 0x20 + düğme sayısı) x (tıklama koordinatı 0x20 koordinat +), ve y koordinatı.xy

    • -sn6yapar okunan sessiz (fare girişi standart hataya yankılandı edilmeyecektir) ve tam 6 bayt okuduktan sonra durur. REPLY değişkenindeki girişi kaydeder , ancak ürettiği çıktıyla ilgilenmiyoruz.

Sonunda, okuma bittiğinde (tam olarak bir fare tıklatmasından sonra), :tekrarlı bir şekilde sonsuz bir döngüye girerek kendisini çağırır.

Yaratma ve çağırma

$ 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

Çıktı

screencast


Kendime benzer bir çözüm üzerinde çalışıyordum (farklı bir dilde olmasına rağmen, beni pes etmeye zorluyorum çünkü yeni bir satır olmadan giriş yapmanın bir yolunu bulamadım). Olası bir gelişme: değişim 1000hiçin 9h(fark olduğunu 1000hhem fare tuşuna kolları ve bırakın ve 9hsadece fare serbest bırakma kolları). Bu, kodda başka bir yerde değişiklik yapılması gerekebilir veya olmayabilir.

@ ais523 Denedim ama en azından terminal emülatörüm (Konsole) desteklemiyor gibi görünüyor. Bunu bilen var mı?
Dennis,

gnome-terminaliş gibi görünüyor, test için kullandığım şey buydu (düzenleme: 1 baytlık bir CSI'yi desteklediğini sanmıyorum). xtermKDE sisteminiz varsa da çalışmalı ve kurulumu daha kolay olabilir. (Bunu kendim test ettim; terminalin kendisinden ziyade stty ayarlarımla ilgili olabilir, \x1b[ancak \x9bbir sebepten dolayı çalışır .)

@ ais523 xterm var. Bilgisayarıma ne zaman döndüğümü kontrol edeceğim.
Dennis,

8
Ben o olur nasıl seviyorum :)dan :(sonuna kadar
Andras Deak

22

İşlem, 78 66 65 63 61 bayt

@TuukkaX sayesinde -a%2yerine 2 bayt kaydedildia%2*-1

@TuukkaX sayesinde 2 bayt kaydedildi a=-a

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

Onay kutusu siyah ve beyaz arasında değişir.

açıklama

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

Şimdi bunu işlemek için bir if-ifadesi kullanmak gibi birçok alternatif var, ancak daha sonra garipleşiyor ve fareye basıldığında arka planı sürekli olarak değiştiriyor. İlk önce denedim mouseButton, ama daha sonra daha fazla şartlara ve daha fazla ayrıntıya yol açacak daha fazla koda ihtiyacım olacaktı.

Şimdi mousePressed()sonsuza dek çağrılacaksınız (aksi halde program başladıktan hemen sonra durur), bir draw()işleve ihtiyacımız var .

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
}

görüntü tanımını buraya girin


Daha küçük bir onay kutusu 90 bayttır (onay kutusu sol üst köşededir, bu nedenle bazı fare koşullarını kaldırabiliriz):

int a=1;void draw(){fill(a);rect(0,0,8,8);}void mousePressed(){if(mouseX<9&mouseY<9)a=-1;}

2
İşlemenin tekli tamsayıları gri tonlamalı renkler olarak kabul etmesinin akıllıca kullanımı!
FlipTack

@FlipTack Beyaz, olarak da ifade edilebilir gibi görünüyorfill(-1)
Kritixi Lithos

1
Bir fikrim var. Başlatma a1 yerine 0. Değişiklik Yapılmasına a++için a=-ayapar, -a%2sadece a. Bu, a1 ile -1 arasında geçiş yapar . Yine de 1. rengin ne ürettiğini bilmiyorum.
Yytsi

@TuukkaX Yup çalışıyor. siyah color(1)#010101
olana


20

Unix Kabuğu (+ x11 uygulamaları), 3 bayt

feragat

Aşağıdaki cevap sıkıcı, sınırda ve "hile yapmak" (en azından benim için).

Yine de, "yazılı" veya "varsayılan boşluklar" gibi herhangi bir zorluk kuralını ihlal etmiyor gibi görünüyor, ben de gönderiyorum.

(Eğer ihlal ettiği belirli bir kuralı işaret edebilirseniz, lütfen yorum yapın!)

golfed

xgc

Xgc programı, X grafik ilkellerinin çeşitli özelliklerini gösterir.

Xgc ekranı aslında çeşitli onay kutuları ile doludur:

görüntü tanımını buraya girin

ve "yapışkan düğmeler" (bu meydan okuma kuralları uyarınca onay kutuları olarak nitelendirilir):

görüntü tanımını buraya girin


20

GitHub Flavored Markdown - 6 bayt

- [ ] 

(Sonda bir boşluk var)

Bir oyunda: kontrol et / kontrol et


Bunun, ilk cümlenin 2. yarısı ile eşleştiğinden emin olun, “ İnsanların bir fare kullanarak etkileşime girebilecekleri iki durumlu bir onay kutusu oluşturan bir program yazın .”?
Manatwork 19

1
Evet, onu bir öze yapıştırır ve özü oluşturursanız ("derleme" için), onunla etkileşime girebilirsiniz.
Axel,

İlginç. @ Ax31'e teşekkür ederiz. Asla yaldız kullanmadım.
Manatwork

1
"Github Flavored Markdown" 'ı beklemezdim.
Jonas Schäfer



14

Python REPL, 45 bayt

from tkinter import*
Checkbutton(Tk()).pack()

CG'ye katılmam ya da bu yazıları sık sık okurum. Bununla birlikte, dış modülleri kullanmanıza izin veriliyor olması beni şaşırtıyor. Bu hile yapmak değil mi? Tk kaynak kodunun kaç baytı olduğunu bilmiyorum, ama bu baytların gerçekten bayt sayınıza eklenmemesi gerekir mi?
FMaz

1
@Krazor tkinter, Python için standart bir kütüphanedir (ancak Python REPL + tkinter'ı bildirmek zorunda kalmasam bile). Bu, özelliklerini sadece içe aktararak kullanabileceğim anlamına geliyor. Önerdiğiniz ceza, kullanıcılardan bayta dahil etmelerini istemekle aynıdır. Yazdığınız dilin kaynağındaki bayt sayısını belirtin. Burada, herhangi bir dilin veya modülün daha önce halka açık bir şekilde yazıldığı ve yayınlandığı sürece rekabet etmesine izin veriyoruz. meydan gönderildi.
Mavi,

Tamam, açıklama için teşekkürler.
FMaz

14

GeoGebra , 10 bayt

Checkbox[]

Giriş çubuğuna girilir.

İşte yürütmenin bir gif:

Program yürütme


7
Whoah, GeoGebra. Onu hatırlıyorum. Uzun zaman oldu.
Nic Hartley

Bunun konu dışı olduğunu biliyorum ama Waterloo Collegiate Enstitüsü'ne gidiyor musunuz? Sadece meraktan, ismine göre. Ben bir
avukat


11

JavaScript içeren HTML - 136 124 120 115 113 111 109 79 bayt

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

-2 @KritixiLithos sayesinde

@Jan 'dan fantastik bir golf oynadıktan sonra 79' a düşürüldü. Her ne kadar yeni sürüm gereksinimlere uysa da, eski gurubu profesyonel gurur nedenleriyle tuttum.

Ankastre kullanmak tamamen geçerli olsa da, kendimi sıfırdan yaratmanın daha eğlenceli olduğunu düşündüm. Chrome ve Firefox ile test edilmiştir. border:solidIE uyumluluğu için var, ancak aslında yeni IE sürümlerinde gerekip gerekmediğini bilmiyorum - test etmek için uygun IE'm yok.

pxYüksekliğinde yüzden "gerçek" bayt sayısına dahil edilmez "Çalıştır kod parçacığı" yararına yoktur. Tarayıcıda onsuz iyi çalışıyor.

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

Önceki versiyon:

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


1
id=dKaldırmak için yapabilir misin d=this?
Kritixi Lithos,

1
@KritixiLithos - Gerçekten yapabilirim. Thanks and well spotted :)
ElPedro

1
Genişliği ayarlamanıza gerek yok, kurallar herhangi bir boyut olabileceğini söylüyor. Durumu bir mülk üzerinde thissaklarsanız, kimliği ayarlayarak kaydedersiniz. Eğer saklıyorsanız thisbir özelliğinde bir kaç bayt kaydedeceğiz. alignGereksizdir. Öznitelik dizelerinde boşluk olmadığından, tırnaklara ihtiyacınız yoktur. <p style=height:20px;border:solid onClick=t=this;t.innerHTML=(t.e=!t.e)?'x':''>79 bayt
Ocak

@Jan - Teşekkürler! Genişlik biti kendi profesyonel gururumdur. Ayarlamazsam çirkin görünüyor ve bu cevap asla kazanamayacağından ve alternatif olarak gönderildiğinden, muhtemelen orada bırakacağım. Bunun dışında bazı harika ipuçları. Çok teşekkürler. Yarın güncellenecek.
ElPedro

Teşekkürler @Easterly. Kod güncellendi, ancak diğer bitleri de unuttum. Geç oluyor.
ElPedro

9

Minecraft 1.0.0, 1 bayt

Minecraft’taki bir kol bir onay kutusu için tüm kriterleri karşılamaktadır. Bu cevap, yalnızca bir kolu delmenin hala değiştirdiği oyunun eski sürümleri için geçerlidir.

görüntü tanımını buraya girin

@Connor O'Brien tarafından önerilen bayt sayısı kullanılarak puanlandı.


İki cevap arasındaki 3'lük bir fark zorlukla bir görüş birliği yaratır veya sonlandırır, ancak Conor'un cevabının oldukça tartışmalı olduğunu (şu anda + 24 / -10'da olduğunu ) ve kabul edilen cevabın çok iyi karşılandığını ( + 17 / -0 ) düşünüyorum. ikincisi Minecraft cevaplarını puanlamak için kullanılmalıdır.
Dennis,

Ancak Minecraft
1.0.0'da

1
nConor'da biri , btw :)
Conor O'Brien,

Ya da sol ve sağ fare düğmelerini daha yeni bir sürümde geçerli hale getirmek için yeniden
bağlayabilirsiniz

@ ConorO'Brien Bu değil 1 blockmi? Neden 1 byte?
Mc'nin

8

TI-Basic, 15 bayt

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

Yeterince açıksözlü. Onay kutusu ekranın yaklaşık% 40'ını kapsıyor ve siyah ile beyaz arasında değişiyor. İşaretlendiğinde, ekran şuna benzer:

ekran


8

Herhangi bir Windows komut satırı sürümü, 3 bayt

(cmd.exe, toplu iş, powershell, start-> run, herneyse)

osk

Vardiya, ctrl, alt, capslock tuşları gibi çeşitli "onay kutularına" sahip olan klavyeyi, xgc cevabına benzer ve SmileBASIC cevap ekranından esinlenerek açar.


7

Octave, 36 20 bayt

uicontrol('sty','c')

@LuisMendo sayesinde 16 bayt kurtardı!


1
uicontrol('sty','c')ayrıca çalışır
Luis Mendo

@LuisMendo Teşekkürler! 1/2 bayt sayıları kaydedildi!
rahnema1

7

KV Lang , 8 bayt

CheckBox

görüntü tanımını buraya girin


kv lang'ın çalışabilmesi için gerçekten temel bir Python ortamı varsayarak:

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

Bu temelde çalışır CheckBox, çünkü kivy.Factorystandart kütüphanedeki her bir widget içerisinde bulunan bir Kivy widget'ıdır .

Bu basit dize bir örneğini oluşturur CheckBoxve runTouchAppçalıştırmak için bir widget beklemekten dolayı kullanabilirim Builder.load_string.

Arka plan load_stringtutamaklar temelde her kv dize ve tanımlanmış bir widget tek örneği varsa (örneğin CheckBox), o zaman yükseltilmektedir kök örneğin, widget pozisyon:

Application
    openGL Window
        root widget(mostly layout)
            main tree
            and some widgets
            ...

7

SmileBASIC, 49 bayt

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

ve SB'nin yazı tipinde boş bir kutu ve işaretli bir kutu vardır.
Ekrana dokunarak onay kutusunu işaretleyin (fareyle tıklatmak için en yakın şey)

görüntü tanımını buraya girin görüntü tanımını buraya girin

Hile cevapları:

0 bayt:

(ekran klavyesinde, caps lock ve insert tuşları gibi onay kutularına benzer düğmeler bulunur)

14 bayt:

EXEC"SYS/SBGED

Birden çok onay kutusu benzeri düğme içeren yerleşik grafik düzenleyiciyi açar


Bu sadece mükemmel, ama dördüncü satırın ne yaptığını gerçekten anlamadım. Açıklar mısın
salyangoz_

T<Oekrana dokunmayı bıraktığınızda geçerlidir ve !=mantıksal bir XOR olarak kullanılır. X=X XOR (O && !T)
12Me21

7

C #, 124 120 bayt

kapmak için 4 byte tasarruf sağladı.

onay kutusu işaretli ve işaretli değil not: düzenlemeler nedeniyle, resim kodun ne yaptığını tam olarak göstermez, "checkBox1" geçerli kodla gösterilmez.

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(); } }


Meta hakkında bunun hakkında bir şey bulamadıysanız, meta hakkında bunu sorun .
Matthew Roh

İçerideki boşluklardan kurtulabilirsiniz var a = new Form();.
clismique

@ Qwerp-Derp Onları saymak için çıkardım, yanlış şeyi yapıştırdım, teşekkürler.
satibel

a.ShowDialog();bir kaç bayt kurtarmak için kullanabilirsiniz
grabthefish

thanks @grabthefish, c # hala java'yı kaybederse:
satibel

6

Ayakkabılı Yakut, 16 karakter

Shoes.app{check}

Örnek çıktı: Ruby ile oluşturulan onay kutusu


6

JavaScript ile HTML, 46 33 28 bayt

<body onclick=innerHTML^=1>0

v2

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

v1

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

Bu, @ ElPedro'nun cevabındaki bir değişkendir: Bir Onay Kutusu oluşturun . @Albert Renshaw yardımı ile 28 bayta indi Bu daha da azaltılabilir, ancak bu bir Onay Kutusu Oluşturmak için aynı kılar.

Tüm uygulama alanı tıklanabilir. Bu görüntüler 0de offdevlet ve 1de ondevlet. Https://jsbin.com/nuhetiyocu/1/edit adresinde deneyin


1
İşte 39 baytta temiz bir varyasyon. <body onclick=t=this;t.innerHTML^=t?1:0Durum değişikliği arasındaki 16 piksel kuralı tartışmaya açıktır.
Albert Renshaw

38<body onclick=this.innerHTML^=this?1:0
Albert Renshaw

1
Oh hayır sizin yardımınızla ben aşağı 33. katında değilim zaten :)
Oca

1
28<body onclick=innerHTML^=1>0
Albert Renshaw

1
Artık kabın içinde her zaman bir değer olduğuna göre, bu durum bodyfarklı bir unsurdan değiştirilebilir. Ama sadece bu başka cevap için o özdeş kılacak fark codegolf.stackexchange.com/questions/109155/create-a-checkbox/... yüzden sadece kodu olduğu gibi gidiyorum
Jan

6

Powershell v5 +, 94 Bayt

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

görüntü tanımını buraya girin görüntü tanımını buraya girin

Bu oldukça korkunç, ancak ifadeleri ya Add-Typeda daha kısa bir şekilde elde edemiyorum using namespace- ve değişken gerekli, çünkü formu göstermek için nesneyi yeniden kullanmam gerekiyor ve kullanılabilir bir Controls.Add()şey döndürmüyorum.

ShowDialog Bu komutu çalıştırdıktan sonra kutunun etkileşimli olması için sistemimde gerekli olması gerekiyor, aksi halde form donuyor.

ayrıca System.Windows.Forms.Formsadece Windows.Forms.Formen azından (en azından kendi sistemim) sistemi, yeni bir oturumda otomatik olarak tamamlamayı keser.


Güzel! Bunun sürüm 5+ gerektirdiğini de eklemek istersiniz.
briantist

@briantist güncellendi, teşekkürler.
colsw

6

Excel VBA, 38 32 31 29 Bayt

A1Etkin Excel VBA projesinin ilk sayfasındaki hücreye bir yükseklik = 9 ve genişlik = 9 bir onay kutusu ekleyen Pencere işlevi

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

-6 teşekkürler değiştirilmesi için Pajonk için [A1],[A1],9,9birlikte0,0,9,9

-1 değiştirilmesi için Sheets(1)olan[Sheet1]

-2 yukarıdakilerin farkına varmak için aptalca ve Sheet1bunun yerine


1,1,9,9Argümanlar gibi çalışır gibi görünüyor .
pajonk

1
İhtiyacınız yok Sheet(1)., bunu Excel'de yeterince hızlı bir şekilde çalıştırabilirsiniz ancak CheckBoxesetkin sayfaya
tabidir

@ Mr.Burns Bunu kontrol ettim, ancak herhangi bir Çalışma Sayfası nesnesine doğrudan atıfta bulunmadan, CheckBoxes.Addyöntem "Gereken Nesne" ifadesini gösteren bir hata
Taylor Scott

@TaylorScott Haklısınız, kodu normal bir modül yerine bir sayfa modülüne koydum. Hata xD
Mr.Burns

4

VBA (Word), 74 57 bayt

-17 Taylor Scott'a teşekkürler

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

Belgenin dosya adı bir olmalıdır.


1
17 byte tasarruf wdFieldFormCheckBoxile 71( wdFieldFormCheckBoxsabitin tamsayı değeri) ile değiştirebilirsiniz
Taylor Scott

Bence -2 baytlık yeni satırları kaldırabilirsin.
devRicher

4

Pug, 20 bayt

input(type=checkbox)

Ayrıca saydığım 23. 23. Alıntıları kaldırırsanız, Firefox ve Chrome'da hala çalışıyor (IE'de test edemiyorsunuz) ve 21'de girecekti. Bu durumda, örnek üzerinde bir gelişme olduğunu ve bu nedenle geçerli olduğunu düşünürdüm.
ElPedro

@heonlygusti - gerçekten ama alıntılar olmasaydı, :-) btw'dan daha fazla oy alırdım, en düşük oy benim değildi.
ElPedro

Gerekmeyen teklifler için olmasaydı, yüksek oy kullanırdım.
NightSkyCode

@ theonlygusti hiç de değil. Bir şans ver.
NightSkyCode

4

Clojure, 201 195 145 127 bayt

(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 byte ihtiyacından kurtularak m/fun-mode.

-50 byte :setupve :sizeseçenekleri kaldırarak, onlar-olmayan varsayılan ve gereksiz çünkü fun-mode. Ayrıca ara katman yazılımı için gereksiz ithalat kaldırıldı.

Sadece ASCII @ -18 bayt sayesinde. "Daha küçük" renklere değiştirildi ve dereference operatöründen ( @) önce gereksiz bir alan kaldırıldı .

Bir Quil çizimi (İşleme üzerinde bir katman sağlayan bir Clojure kütüphanesi) oluşturur, bu nedenle Quil kütüphanesinin çalışmasını gerektirir.

(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))

görüntü tanımını buraya girin

görüntü tanımını buraya girin


255'i 99 ile değiştiremez misin? Ayrıca, simgelerden önce / sonra boşlukları kaldırmayı ve hala çalışıp çalışmadığını görmeyi denerdim
ASCII-yalnızca

@ ASCII-sadece evet, yapabilirim. Iirc olsa çirkin bir renk yaptı, ve nedense o zaman öncelikli. Ve hayır, bu maalesef kaldırabildiğim kadar yer.
Carcigenicate

@ ASCII-only Sorun, sembollerin hemen hemen her karakter içerebilmesidir, yani etrafındaki boşlukları kaldırabileceğiniz gerçekten "güvenli komşular" her tür parantez veya tırnak şeklindedir. Neyse ki bu eski bir lisp oldukça yaygındır.
Carcigenicate

Hmm belki [0 0 99]o zaman? (bir tür koyu mavi renk)
ASCII-yalnızca

@ ASCII-Yalnızca Aslında, sanırım 0s bırakabilirim. Bence Quil otomatik, vektör kısa devre yapıyorsa cepheyi 0'larla doldurur. En son hatırlarsam düzelteceğim. Beni düşündürdüğün için teşekkürler.
Carcigenicate

4

İşlem Flashpoint kodlama dili, 273 bayt

Onay kutusunu göstermek için:

createDialog"b"

Ancak önce tanımlanması gerekir:

Aşağıdakileri description.extgörev klasöründe adlandırılmış bir dosyaya kaydedin:

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;}}}

İşlemdeki onay kutusu:


3

AutoIt , 78 Bayt

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

Diğer pencereler gibi kapatılabilen bir büyütülmüş pencere açar. En üst düzeye çıkarma ve ... üste geçme, golf oynamaya katkısı oluyor.

görüntü tanımını buraya girin


Bunu Linux'ta nasıl çalıştırırım?
dkudriavtsev

@wat wine AutoIt3.exe script.au3, script.au3dosyanın bu kodu içerdiği yer.
mınxomaτ

3

Python, 62 bayt

from tkinter import*
a=Tk()
Checkbutton(a).pack()
a.mainloop()
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.