Hat jemand Code-Golf- Tipps zum Golfen in Processing ? Es ist eine grafische Erweiterung von Java und ist etwas schwierig zu golfen.
13
Hat jemand Code-Golf- Tipps zum Golfen in Processing ? Es ist eine grafische Erweiterung von Java und ist etwas schwierig zu golfen.
Antworten:
void draw()
und alles invoid setup()
.(100, 100)
standardmäßig auf initialisiert .height
undwidth
in Ihrem Code verwenden müssen, ist es normalerweise kürzer, stattdessen deren numerische Werte zu verwenden. Zum Beispiel mit einer Zeichenfläche von Größe(100, 100)
, mit99
zu ersetzenheight
undwidth
können Sie 7 Bytes speichern.quelle
Wenn Sie nur Code in der Setup-Methode ausführen, müssen Sie den Methodenumriss nicht schreiben. Zum Beispiel können Sie schreiben:
Anstatt von
Und solange Sie keine anderen Methoden verwenden, wird vor dem Ausführen alles in die Setup-Methode gestellt
quelle
Farben
(R, G, B)
NotationHexadezimalfarben
Die Verarbeitung ist im Farbformat sehr flexibel.
kann in hexadezimaler Schreibweise als geschrieben werden
Graustufen
Hier ist eine spezielle Verwendung für Farben, wenn alle Werte für Rot, Grün und Blau gleich sind (Weiß):
Alle drei Parameter können zu einem Parameter verkürzt werden, der den Graustufenwert enthält: von
0
Schwarz zu255
Weiß.Dies kann auch für Alpha erweitert werden:
Beide bedeuten die gleiche Farbe, aber der letztere Weg ist um 8 Bytes kürzer.
Alpha
Obwohl dies offensichtlich ist, sollte angegeben werden, dass der Alpha-Parameter beim Festlegen von Farben optional ist, da für Farben standardmäßig der Alpha-Wert
255
(100% opak) verwendet wird.Zusammenfassung: Farbformate
Verwenden Sie das kürzeste Farbformat, um Ihre Farbe auszudrücken (denken Sie daran, unnötige Bits - abhängig vom Kontext des Programms - auszulassen, zum Beispiel: Alpha oder Graustufen).
R
: RotG
: GrünB
: BlauA
: Alphag
: Graustufenquelle
Konstanten abkürzen
Wenn Sie jemals eines der All-Caps-Schlüsselwörter in Processing verwenden (wie z. B.
DIFFERENCE
oderTRIANGLE_FAN
), überprüfen Sie, ob die entsprechende Anzahl kürzer ist.Zum Beispiel
DIFFERENCE
ist nur eineint
, die gleich 32 ist. Anstatt zu verwendenDIFFERENCE
hier zu verwenden , könnte ich schreiben32
und 8 Zeichen sparen.quelle
Kürzere Alternative zu
void keyPressed(){}
Das
void draw(){}
wird standardmäßig benötigtkey
, um aktualisiert zu werden. Wenn der Benutzer seit dem Start des Programms keine Taste gedrückt hat,key
wird ein Wert von angegeben0
. Wenn0
wir prüfen, ob es mehr ist als (dh der Benutzer hat eine Taste gedrückt), haben wir einen Golf-Code und sparen 10 Bytes.quelle
Weiß
#FFFFFF
Verbunden: Farbnotation
Anstatt dies für Weiß zu verwenden:
du kannst das:
und 1 Byte speichern.
quelle
Pixel setzen und festschreiben mit set ()
Es ist effizienter, Pixel über Pixel einzustellen [] :
Dies erfordert jedoch
updatePixels()
und auch die Verwendung eines Index, der je nach Szenario die Konvertierung einer x, y-Position in einen Pixelindex erfordert. Um die Dinge kurz zu halten, obwohl es weniger CPU-effizient ist (da jeder Aufruf den gesamten Puffer aktualisiert), ermöglicht set (), dass ein Pixel in einem Aufruf sofort gesetzt und für den Puffer festgeschrieben wird.quelle