Wskazówki dotyczące gry w golfa w przetwarzaniu


13

Czy ktoś ma jakieś wskazówki dotyczące gry w golfa w przetwarzaniu ? Jest to graficzne rozszerzenie javy i jest nieco trudne do gry w golfa.


Fajne pytanie. Uważam, że wskazówki powinny być na Wiki Wiki. Oflagowałem go do migracji.
Level River St

4
Głosuj ??? dlaczego?
TARDIS

Nie przejmuj się przegłosowaniem ... stracisz wszystkich przedstawicieli otrzymanych z tego postu po tym, jak i tak zostanie on oznaczony jako wiki społeczności ...
user12205

3
@ace: Reputacja zdobyta przed oznaczeniem postu CW zostanie zachowana: meta.stackexchange.com/a/11741/229438
ProgramFOX

Odpowiedzi:


7
  • Jeśli animacja nie jest wymagana, możesz pominąć void draw()i włożyć wszystko void setup().
  • Inicjowanie rozmiaru płótna czasami nie jest konieczne - zostanie ono (100, 100)domyślnie zainicjowane .
  • Jeśli trzeba użyć heighti widthw kodzie, jest zwykle krótszy zamiast używać ich wartości numerycznych. Na przykład w obszarze roboczym o rozmiarze (100, 100)używanym 99do zamiany heighti widthpozwalającym zaoszczędzić 7 bajtów.

3

Jeśli uruchamiasz kod tylko w metodzie instalacyjnej, nie musisz pisać konspektu metody. Na przykład możesz napisać:

rect(10,10,90,90);

zamiast

void setup {
    rect(10,10,90,90);
}

I dopóki nie użyjesz żadnych innych metod, wszystko zostanie umieszczone w metodzie instalacji przed uruchomieniem


To może być trochę wadliwe. Zauważyłem, że jeśli spróbujesz zdefiniować funkcję w trybie statycznym, przetwarzanie może się trochę pomylić: puu.sh/tpzP8.png
quat

@ quat, dopóki nie zdefiniujesz żadnych innych metod, wszystko zostanie umieszczone w metodzie konfiguracji. Jeśli musisz zdefiniować metody, musisz jawnie nazwać metodę instalacji.
HEGX64,

2

(R, G, B)Notacja kolorów

Kolory szesnastkowe

Przetwarzanie jest bardzo elastyczne w kolorze.

fill(255,255,0); //16 bytes

można zapisać za pomocą zapisu szesnastkowego jako

fill(#ffff00);   //14 bytes (2 bytes saved)

Skala szarości

Oto specjalne zastosowanie dla kolorów, jeśli wszystkie wartości czerwony, zielony i niebieski są takie same (biały):

fill(255,255,255); //18 bytes
fill(#ffffff);     //14 bytes
fill(255);         //10 bytes

Wszystkie trzy parametry można skrócić do jednego parametru zawierającego wartość skali szarości: od 0czerni do 255bieli.

Można to również rozszerzyć dla wersji alfa:

fill(175,175,175,50); //translucent gray
fill(175,50);         //8 bytes shorter

Oba oznaczają ten sam kolor, ale ten drugi sposób jest krótszy o 8 bajtów.

Alfa

Chociaż oczywiste, należy stwierdzić, że parametr alfa przy określaniu kolorów jest opcjonalny, ponieważ kolory są domyślnie ustawione na wartość alfa 255(100% nieprzezroczysta).

Podsumowanie: formaty kolorów

Użyj najkrótszego formatu kolorów, aby wyrazić swój kolor (pamiętaj, aby pominąć niepotrzebne bity - w zależności od kontekstu programu - na przykład: alfa lub skala szarości)

R: Czerwony G: zielony B: niebieski A: alfa g: skala szarości

RRR,GGG,BBB
#RRGGBB
ggg
RRR,GGG,BBB,AAA
ggg,AAA

2

Skracaj stałe

Jeśli kiedykolwiek używasz jednego z kluczowych słów kluczowych w Przetwarzaniu (takich jak DIFFERENCElub TRIANGLE_FAN), sprawdź, czy liczba, której odpowiadają, jest krótsza.

Na przykład, DIFFERENCEjest to tylko liczba intrówna 32. Zamiast używać DIFFERENCE tutaj , mógłbym pisać 32, oszczędzając 8 znaków.


2

Krótsza alternatywa dla void keyPressed(){}

void draw(){}void keyPressed(){foo;} //36 bytes
void draw(){if(key>0)foo;}           //26 bytes

void draw(){}Potrzebna jest domyślnie w celu keyaktualizacji. Jeśli użytkownik nie nacisnął żadnego klawisza od początku programu, keyzostanie podana wartość 0. Sprawdzając, czy jest więcej niż 0(tzn. Użytkownik nacisnął klawisz), mamy kod golfera i oszczędzamy 10 bajtów.


2

Biały #FFFFFF

Powiązane: Notacja kolorów

Zamiast używać tego dla białego:

color(255)     //10 bytes

możesz to zrobić:

color(-1)      //9 bytes

i zapisz 1 bajt.


1

Ustawianie i zatwierdzanie pikseli za pomocą set ()

Bardziej wydajne jest ustawianie pikseli za pomocą pikseli [] :

pixels[0] = color(255)
updatePixels();

Wymaga to jednak updatePixels()także użycia indeksu, który w zależności od scenariusza będzie wymagał konwersji pozycji x, y na indeks pikseli. Krótko mówiąc, pomimo mniejszej wydajności procesora (ponieważ każde wywołanie aktualizuje cały bufor), set () pozwala ustawić piksel i zatwierdzić buforowanie od razu w jednym wywołaniu.

set(0,0,color(255));
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.