İşlemde golf için ipuçları


13

Herkes herhangi var mı içinde golf için ipuçları İşleme ? Java'nın grafiksel bir uzantısıdır ve golf oynamak biraz zordur.


Güzel soru. Topluluk Wiki'de ipuçları olması gerektiğine inanıyorum. Göç için işaretledim.
Level River St

4
Downvote ??? neden?
TARDIS

Downvote için endişelenme ... yine de topluluk wiki olarak işaretlendikten sonra bu yazıdan aldığınız tüm temsilcisi kaybedeceksiniz ...
user12205

3
@ace: Bir gönderi CW olarak işaretlenmeden önce kazanılan itibar korunur: meta.stackexchange.com/a/11741/229438
ProgramFOX

Yanıtlar:


7
  • Animasyon gerekmiyorsa, void draw()her şeyi atlayıp içine koyabilirsiniz void setup().
  • Tuvalin boyutunu başlatmak bazen gerekli değildir - (100, 100)varsayılan olarak başlatılır .
  • Eğer kullanım gerekiyorsa heightve widthkodunuzda, bunun yerine kendi sayısal değerleri kullanmak genellikle kısadır. Örneğin, bir tuval ile (100, 100), 99değiştirmek için kullanarak heightve widthsize 7 bayt kaydedebilirsiniz.

3

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


Bu biraz buggy olabilir. Statik modda bir işlev tanımlamaya çalışırsanız, İşleme biraz karışabilir: puu.sh/tpzP8.png
quat

@quat, başka bir yöntem tanımlamadığınız sürece her şey kurulum yöntemine konacaktır. Yöntemleri tanımlamanız gerekiyorsa, kurulum yöntemini açıkça adlandırmanız gerekir.
HEGX64

2

Renkler (R, G, B)gösterimi

Onaltılık renkler

İş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)

Gri tonlama

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: 0siyahtan 255beyaza.

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.

Alfa

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 .

Özet: Renk formatları

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

2

Kısaltmaları kısalt

İşleme'deki ( DIFFERENCEveya 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, DIFFERENCEsadece bir olan inten kullanmak yerine 32'ye eşit olduğunu DIFFERENCE burada , ben yazabilirim 328 karakter tasarruf.


2

Kısa alternatif 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 keygüncellenmesi. Kullanıcı, programın başlangıcından bu yana bir tuşa basmadıysa, keybir 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.


2

Beyaz #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.


1

Set () kullanarak pikselleri ayarlama ve işleme

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));
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.