Hat jemand Code-Golf- Tipps zum Golfen in Processing ? Es ist eine grafische Erweiterung von Java und ist etwas schwierig zu golfen.
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 in void setup()
.(100, 100)
standardmäßig auf initialisiert .height
und width
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)
, mit 99
zu ersetzen height
und width
können Sie 7 Bytes speichern.Wenn Sie nur Code in der Setup-Methode ausführen, müssen Sie den Methodenumriss nicht schreiben. Zum Beispiel können Sie schreiben:
rect(10,10,90,90);
Anstatt von
void setup {
rect(10,10,90,90);
}
Und solange Sie keine anderen Methoden verwenden, wird vor dem Ausführen alles in die Setup-Methode gestellt
(R, G, B)
NotationDie Verarbeitung ist im Farbformat sehr flexibel.
fill(255,255,0); //16 bytes
kann in hexadezimaler Schreibweise als geschrieben werden
fill(#ffff00); //14 bytes (2 bytes saved)
Hier ist eine spezielle Verwendung für Farben, wenn alle Werte für Rot, Grün und Blau gleich sind (Weiß):
fill(255,255,255); //18 bytes
fill(#ffffff); //14 bytes
fill(255); //10 bytes
Alle drei Parameter können zu einem Parameter verkürzt werden, der den Graustufenwert enthält: von 0
Schwarz zu 255
Weiß.
Dies kann auch für Alpha erweitert werden:
fill(175,175,175,50); //translucent gray
fill(175,50); //8 bytes shorter
Beide bedeuten die gleiche Farbe, aber der letztere Weg ist um 8 Bytes kürzer.
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.
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
: Rot
G
: Grün
B
: Blau
A
: Alpha
g
: Graustufen
RRR,GGG,BBB
#RRGGBB
ggg
RRR,GGG,BBB,AAA
ggg,AAA
Wenn Sie jemals eines der All-Caps-Schlüsselwörter in Processing verwenden (wie z. B. DIFFERENCE
oder TRIANGLE_FAN
), überprüfen Sie, ob die entsprechende Anzahl kürzer ist.
Zum Beispiel DIFFERENCE
ist nur eine int
, die gleich 32 ist. Anstatt zu verwendenDIFFERENCE
hier zu verwenden , könnte ich schreiben 32
und 8 Zeichen sparen.
void keyPressed(){}
void draw(){}void keyPressed(){foo;} //36 bytes
void draw(){if(key>0)foo;} //26 bytes
Das void draw(){}
wird standardmäßig benötigt key
, um aktualisiert zu werden. Wenn der Benutzer seit dem Start des Programms keine Taste gedrückt hat, key
wird ein Wert von angegeben 0
. Wenn 0
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.
#FFFFFF
Verbunden: Farbnotation
Anstatt dies für Weiß zu verwenden:
color(255) //10 bytes
du kannst das:
color(-1) //9 bytes
und 1 Byte speichern.
Es ist effizienter, Pixel über Pixel einzustellen [] :
pixels[0] = color(255)
updatePixels();
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.
set(0,0,color(255));