Herkes herhangi var mı kod golf içinde golf için ipuçları İşleme ? Java'nın grafiksel bir uzantısıdır ve golf oynamak biraz zordur.
Herkes herhangi var mı kod golf içinde golf için ipuçları İşleme ? Java'nın grafiksel bir uzantısıdır ve golf oynamak biraz zordur.
Yanıtlar:
void draw()
her şeyi atlayıp içine koyabilirsiniz void setup()
.(100, 100)
varsayılan olarak başlatılır .height
ve width
kodunuzda, bunun yerine kendi sayısal değerleri kullanmak genellikle kısadır. Örneğin, bir tuval ile (100, 100)
, 99
değiştirmek için kullanarak height
ve width
size 7 bayt kaydedebilirsiniz.Kodu yalnızca kurulum yönteminde çalıştırırsanız, yöntem anahattını yazmanız gerekmez. Örneğin şunları yazabilirsiniz:
rect(10,10,90,90);
onun yerine
void setup {
rect(10,10,90,90);
}
Başka bir yöntem kullanmadığınız sürece, her şey çalıştırmadan önce kurulum yöntemine konur
(R, G, B)
gösterimiİşleme, renk biçiminde çok esnektir.
fill(255,255,0); //16 bytes
onaltılık gösterim kullanılarak yazılabilir
fill(#ffff00); //14 bytes (2 bytes saved)
Tüm Kırmızı, Yeşil ve Mavi değerleri aynı ise (beyaz) renkler için özel bir kullanım:
fill(255,255,255); //18 bytes
fill(#ffffff); //14 bytes
fill(255); //10 bytes
Üç parametrenin hepsi gri tonlama değerini içeren bir parametreye kısaltılabilir: 0
siyahtan 255
beyaza.
Bu alfa için de genişletilebilir:
fill(175,175,175,50); //translucent gray
fill(175,50); //8 bytes shorter
Her ikisi de aynı renk anlamına gelir, ancak ikinci yol 8 bayt daha kısadır.
Açık olsa da, renkler varsayılan olarak bir alfa değerine 255
(% 100 opak) ayarlandığından, renkleri belirtmedeki alfa parametresinin isteğe bağlı olduğu belirtilmelidir .
Renklerinizi ifade etmek için en kısa renk biçimini kullanın (programın içeriğine bağlı olarak gereksiz bitleri dışarıda bırakmayı unutmayın) (örneğin: alfa veya gri tonlamalı)
R
: Kırmızı
G
: yeşil
B
: mavi
A
: alfa
g
: gri tonlamalı
RRR,GGG,BBB
#RRGGBB
ggg
RRR,GGG,BBB,AAA
ggg,AAA
İşleme'deki ( DIFFERENCE
veya gibi TRIANGLE_FAN
) tümüyle büyük harf anahtar kelimelerden birini kullanıyorsanız , karşılık gelen sayının daha kısa olup olmadığına bakın.
Örneğin, DIFFERENCE
sadece bir olan int
en kullanmak yerine 32'ye eşit olduğunu DIFFERENCE
burada , ben yazabilirim 32
8 karakter tasarruf.
void keyPressed(){}
void draw(){}void keyPressed(){foo;} //36 bytes
void draw(){if(key>0)foo;} //26 bytes
void draw(){}
İçin sırayla varsayılan olarak ihtiyaç duyulan key
güncellenmesi. Kullanıcı, programın başlangıcından bu yana bir tuşa basmadıysa, key
bir değer verilir 0
. Daha fazla olup olmadığını kontrol ederek 0
(yani kullanıcı bir tuşa basmışsa), golfçü koduna sahibiz ve 10 bayt tasarruf ediyoruz.
#FFFFFF
İlgili: Renk Gösterimi
Bunu beyaz için kullanmak yerine:
color(255) //10 bytes
Bunu yapabilirsiniz:
color(-1) //9 bytes
ve 1 bayt kaydedin.
Pikselleri pikseller [] ile ayarlamak daha etkilidir :
pixels[0] = color(255)
updatePixels();
Ancak bu updatePixels()
, senaryoya bağlı olarak x, y konumunun piksel dizinine dönüştürülmesini gerektiren bir dizin gerektirir ve kullanmaktır. İşleri daha kısa tutmak için, daha az CPU verimli olmasına rağmen (her çağrı tüm arabelleği güncellediğinden), set () , bir pikselin bir çağrıda hemen arabelleğe almasını ve ayarlanmasını sağlar.
set(0,0,color(255));