Twój cel jest prosty: program musi całkowicie czarny ekran komputera .
Po uruchomieniu programu ekran musi szybko całkowicie zmienić kolor na czarny i pozostać nim do momentu wyjścia z programu (dowolny klawisz lub Alt + F4, ruch myszy itp.), Po czym wszystko powinno wrócić do normy. Dlatego wyłączanie komputera lub wyłączanie zasilania monitora NIE jest dozwolone . W tym czasie nie powinien być widoczny ani żaden inny niż czarny piksel, nawet migający kursor.
Użytkownik nie powinien wykonywać żadnych przygotowań (przesuwanie myszy poza ekran, odłączanie kabli itp. Lub wprowadzanie danych przez użytkownika po uruchomieniu programu), wystarczy uruchomić program.
Możesz bezpiecznie założyć, że komputer ma podłączony tylko jeden monitor. Zakładamy również standardowy komputer stacjonarny lub notebook, ponieważ robienie tego na określonym urządzeniu bez normalnego monitora byłoby zbyt proste.
Jeśli korzystasz z jakichkolwiek zasobów zewnętrznych (czarny obraz, plik GUI itp.), Ich rozmiar w bajtach jest dodawany do rozmiaru kodu.
Jest OK, jeśli działa tylko na jednej rodzinie systemów operacyjnych, lub jeśli wymaga OpenGL itp., Ale nie jest mile widziane wymaganie bardzo specyficznej konfiguracji sprzętowej.
Kod źródłowy musi być napisany w języku programowania, a nie tylko w pliku konfiguracyjnym, który będzie używany przez inny program (np. Wygaszacz ekranu).
Odpowiedzi:
Bash, 28 lub 12
Zakładając domyślną instalację Ubuntu 12.04 LTS.
Automatycznie uruchamia wygaszacz ekranu, który domyślnie jest czarnym ekranem.
Edycja : Jak sugeruje @Glenn Randers-Pehrson, oto jeden z 12 bajtami
Powiedzmy, że może to nie działać, jeśli masz w systemie inny plik, który spełnia tę nazwę
/tmp/1/gnd
. Ale kogo to obchodzi?Sprawdź moją inną odpowiedź bash, jeśli nie używasz wygaszacza ekranu Gnome!
źródło
Zestaw (bootloader) Kompilowany 131 znaków / 512 bajtów (faktycznie mniejszy, ale bootsector musi mieć 512 bajtów długości).
Jest to prosty program ładujący. Po uruchomieniu komputera BIOS załaduje go z dysku (dyskietki). Następnie przechodzi w tryb graficzny i po prostu się zawiesza. Gdy użytkownik naciśnie przycisk zasilania, program zakończy się, a komputer przejdzie w tryb, w którym był przed uruchomieniem programu.
Testowane z VirtualBox.
Skompiluje się z nasm:
Kod źródłowy:
źródło
cli
isti
? Przenosi, abySS
automatycznie wyłączać przerwania na czas trwania kolejnej instrukcji iAX
nie zostanie zmieniony, jeśli przerwanie nastąpi wcześniejMOV SS,AX
. A dlaczego nieMOV AX, 0x13
zamiast dwóchMOV
?QBASIC (31)
źródło
Java: 165
Prosta Java, po prostu tworzy pełnoekranową czarną ramkę. Aby wyjść, musisz Alt + Tab z powrotem do konsoli i Ctrl-C, ale wydaje się to dość proste.
źródło
Applesoft] [BASIC (17)
źródło
Bash - 57
26Na laptopie spowoduje to ustawienie jasności podświetlenia ekranu na 0 za pomocą
/sys/class/backlight
, na tablecie lub telefonie spowoduje ustawienie jasności podświetlenia ekranu na 0 za pomocą/sys/class/leds
źródło
Fn+F6
,Fn+<up arrow>
i wiele innych kombinacji klawiszy wpada w „dowolny klawisz” i „itd.”, i są to jedne z wielu, które przywracają światło tak, jak było.find /sys/class/{backlight,leds}/*/
?Wiem, że to jest golf golfowy ale nie mogłem się oprzeć.
Upewnij się tylko, że nie masz otwartych okien przeglądarki (w tym przypadku Chrome);
Uruchom ten PitchBlack.bat (
3124 bajtów) :Jeśli zostanie umieszczony w tym samym katalogu pliku Chrome.exe , ta partia uruchomi Chrome w trybie kiosku i otworzy plik o nazwie / 1 (
494134 bajtów) na pełnym ekranie:Gotowe!
Całkowita liczba bajtów:
807258Dzięki @ace :)
Aby wyjść z programu, musisz wybrać klasyczny ALT + F4 ; Tak naprawdę nie musisz się przygotowywać po rozpoczęciu programu (ani wcześniej, musisz tylko umieścić
/1
plik wsadowy), więc jest to zgodne z regułami.Pamiętaj, że jeśli zbliżysz kursor do krawędzi ekranu, może stać się widoczny. Od tego czasu OP nie powiedział, że to niedozwolone
To powinno być w porządku! : P
źródło
chrome --kiosk 'data:text/html,<style>body{background:#000;cursor:none;}</style>'
może działać bez dodatkowego pliku?file:
shceme nie widać paska adresu URL, ale wdata:
schemacie jest pasek adresu URL?chromium-browser --kiosk 'data:text/html,<style>body{background:#000;cursor:none;}</style>
Chromium zaczyna prawie pełnoekranowy ekran z czarną stroną bez pasków.file:///1
, że HTML jest zapisany jako/1
, a plik HTML może zostać skrócony do<body bgcolor=0 style=cursor:none>
chrome
w swojej odpowiedzi zamiastchromium
C # -
211202200196179 bajtówUkrywa kursor i pokazuje czarne okno na pełnym ekranie. Można zamknąć za pomocą Alt+F4
Kod bez golfa :
Nie muszę przesyłać do
FormBorderStyle
, ponieważ nie jest to konieczne, jeśli liczba całkowita jest0
.źródło
System.Drawing.Color.Black
,FormWindowState.Maximized
,FormWindowState.Maximized
orazFormBorderStyle.None
z odpowiadających im wartości.Color.Black
. Powinno działać od razu. LubBackColor=This.ForeColor
, które MOGĄ również działać.using System.Drawing;
, a drugi nie działa, ponieważ ustawiam wartości zmiennych w nawiasach.using System;
wtedynew Windows.Forms.Form
iBackColor=Drawing.Color.Black
. To MOŻE pracować! I zaoszczędź kilka bajtów.C #
175171167Wiele odpowiedzi tutaj nie powoduje, że ekran jest czarny : na ekranie LCD podświetlenie pozostaje włączone i przecieka, pozostawiając ciemnoszary kolor.
Ten krótki fragment faktycznie mówi systemowi Windows, aby wyłączył ekran, tak samo jak robi to zegar bezczynności (uwaga: nie narusza to zasady „braku zasilania”, ponieważ tak naprawdę powoduje tylko przejście monitora w tryb gotowości. Większość monitorów włącz ponownie po wznowieniu wprowadzania danych. Wydaje się również, że reguła ta polega na upewnieniu się, że program może ją ponownie włączyć - patrz poniżej.)
Porusz myszą lub naciśnij klawisz, aby ponownie włączyć ekran.
Monitorowanie wyłączenia zasilania dostosowane z https://stackoverflow.com/a/713519/1030702
źródło
Zgromadzenie Amigi
ASM-One -
228219 znaków, skompilowano 172 bajty (zoptymalizowano 168 bajtów)Minęło 20 lat, odkąd ostatni raz kodowałem pojedynczą linię w Amidze, więc bądźcie ze mną. :-)
Amiga była nieco bardziej zaangażowana niż komputer, jeśli chodzi o konfigurację pustego ekranu, więc starałem się pozbyć jak największej ilości konfiguracji i rozerwania. Nie ma wyłączania przerwań ani wielozadaniowości; brak podwójnego WaitTOF; brak zamiany widoku; itp. Nie napisałbym tego nawet na najszybszą i najbrudniejszą wersję demo. Co oznacza to:
... chociaż został przetestowany na emulowanych A500 i A1200, z szybką pamięcią lub bez. Kompiluje się do standardowego pliku wykonywalnego. Wyjście z kliknięcia myszą.
Mniej golfa:
źródło
Python / Pygame
19912712592Dzięki kilku wskazówkom od asa.
źródło
from pygame import*
. Nie uważam też zafill((0,0,0))
konieczne, ponieważ domyślnym kolorem jest czarny. Następnie możeszs
całkowicie usunąć . Myślę też, że niedisplay.flip()
jest to potrzebne. Ponadto użyj jednego miejsca na wcięcie zamiast 4, aby zaoszczędzić więcej miejsca. Wreszcie zamiastFULLSCREEN
iKEYDOWN
można użyć ich wartości liczbowych, a mianowicie-1<<31
(-2147483648) i2
odpowiednio.TI-BASIC,
76Działa zarówno na terminalu (ekranie głównym), jak i jako program. Naciśnięcie
ON
lub większość innych przycisków powoduje powrót do ekranu terminala / ekranu głównego.źródło
Shade(Ymin,Ymax
.Commodore 64 (16 bajtów)
Minęło ponad 20 lat, odkąd użyłem Turbo Assemblera, więc mogę podać tylko źródło do użycia w monitorze VICE. Złóż to w 032 ° C i
save
[1] do 033B $.Reset
aLOAD"PITCHDARK",8,1
. Hit good ol 'Runstop+Restore
[2], aby wrócić do normy.Jak to działa?
Oto prawdziwe źródło:
$ 032C to kernal
CLALL
lub „zamknąć wszystkie kanały i pliki” wektor. W ramach czyszczeniaLOAD
komenda BASIC wykonuje polecenie,CLR
które z kolei wywołujeCLALL
.CLALL
Wektor zastępujemy wskaźnikiem do naszej rutyny bezpośrednio po wektorze. Ustawiamy granicę na czarną i przykrywamy ekran ramką, a następnie dzwonimyRESTOR
na $ FF8A. Ostatni zastąpiony wektorRESTOR
maSAVE
wartość 0332-0333 USD, co oznacza, że ostatnie 8 bajtów jest niezakłóconych. Następnie wychodzimy za pomocą przywróconegoCLALL
wektora, aby kontynuowaćLOAD
wykonywanie.Dzięki za to, było fajnie podróżować po linii pamięci, ucząc się, jak zrobić program autorun :)
[1] użyj save, a nie bsave, aby załadować, 1 działa poprawnie
[2] Escape + PageUp w x64, prawdopodobnie.
źródło
sh / X11 na Arch Linux, 26
źródło
-set
ich obuxbacklight = 0
ixbacklight + 7
.x=xbacklight;$x +0;read;$x +7
Bash, 37 lat
Służy
unclutter
do ukrywania wskaźnika myszy i sesji pełnoekranowej wxterm
celu zaciemnienia ekranu. Kursor pojawi się ponownie na chwilę, jeśli go poruszysz, ale jeśli pozostawisz go w spokoju, ekran będzie czarny, dopóki nie naciśniesz Ctrl + C.Zniknięcie kursora myszy potrwa kilka sekund (o ile go nie przesuniesz). Jeśli to nie jest wystarczająco szybkie, dodaj
-grab
opcjęunclutter
dla dodatkowych 6 znaków.OSTRZEŻENIE: spowoduje to
unclutter
uruchomienie procesu nawet po naciśnięciu klawiszy Ctrl + C, użyj go,killall unclutter
aby go zatrzymać.Wyjaśnienie
unclutter &
uruchamiaunclutter
. The&
Jest tak możemy dostać się do następnego polecenia, zamiast czekać na ten jeden wypowiedzenia.xterm -fullscreen
uruchamia XTerm, którego tło jest domyślnie czarne.Ta
-e yes ''
opcja powoduje uruchomienie XTermyes ''
, przez co drukuje pusty ciąg na zawsze. Służy to do ukrywania kursora terminala, a także zapewnia funkcje Ctrl + C.źródło
&
aby zaoszczędzić 2 bajty.Bash, 31 (lub 52)
Na TTY użyj następującego skryptu (zakładając, że domyślne tło TTY jest czarne, co jest prawdą przynajmniej w przypadku Ubuntu 12.04 LTS):
Twój TTY nadal będzie w pełni funkcjonalny nawet po użyciu tego skryptu :)
Jeśli nie jest to dozwolone, użyj następujących (52 bajtów):
I naciśnij, Enteraby zakończyć skrypt.
Specjalne podziękowania dla @ nyuszika7h.
źródło
x='setterm -foreground';$x black;clear;read;$x white
(52 bajty).Przetwarzanie, 113
Próbowałem umieścić powyższy kod na draw (), aby zapisać niektóre bajty, ale to nie zadziałało. Naciśnij klawisze Alt-F4, aby wyjść.
źródło
ZX Spectrum Basic (29 bajtów)
Iteruje po ekranie, kreśląc czarne piksele, które są automatycznie usuwane po zakończeniu programu.
Edycja podstawowa ZX Spectrum używa pojedynczych bajtów jako poleceń i żadnych znaków nowej linii, jeśli licząc wyświetlane znaki, otrzymasz 61 znaków.
źródło
Lua + LÖVE (50)
Obie funkcje powinny przyjmować argument boolowski, ale to działa.
źródło
QBasic, 9 bajtów
CLS
czyści ekran,SLEEP
bez żadnych argumentów wstrzymuje wykonanie do momentu naciśnięcia klawisza.źródło
SmileBASIC, 15 bajtów
Naciśnięcie START lub SELECT spowoduje zakończenie programu.
XSCREEN 4
ustawia tryb wyświetlania, aby wyświetlać obraz 320 * 480 obejmujący oba ekrany. To powinno wyczyścić wszystko, więcACLS
nie jest wymagane.EXEC.
sprawia, że kod się powtarza, ciągle uruchamiając program w gnieździe 0. Nie byłem w stanie tego zrobić,XSCREEN 4EXEC.
ponieważ nie mogłeś mieć bezpośrednio numeruE
źródło
Sinclair BASIC - 28 znaków
Cechą Sinclair BASIC było to, że każde słowo kluczowe miało swój własny kod znakowy (zajmujący jeden bajt), więc faktycznie zajmowałoby 13 bajtów łącznie ze spacjami.
źródło
:NEW
), ponieważ polecenia są pojedynczymi bajtami, a nie zbiorem znaków.SmileBASIC, 23 bajty
Działa wiecznie, dopóki program nie zostanie wymuszony za pomocą START lub SELECT. To sprawia, że oba ekrany są całkowicie czarne , do tej pory wyłączono 3D (wyłączając w ten sposób diodę LED 3D w o3DS.)
źródło
Większość powłok kompatybilnych z POSIX (przynajmniej
bash
izsh
), 21Musi być uruchamiany na tty
Pierwsze polecenie ukrywa kursor, drugie usuwa ekran (duh), a trzecie polecenie odczytuje wiersz tekstu
źródło
BASH - 14 chars
pmset sleepnow
does the job!(typed into my Mac's Terminal)
źródło
Bash: 48 characters
CW because not clear whether it qualifies due to the way it works:
(Note that DP1 is the first connected display. If you have a laptop, its embedded display is eDP1.)
źródło
HTML Application (.hta), 102 bytes
źródło
TI-80 BASIC, 5 bytes
źródło
Chip-8, 0 bytes
Source: http://laurencescotford.co.uk/?p=75
źródło