Suggerimenti per giocare a golf in elaborazione


13

Qualcuno ha qualche suggerimento sul per giocare a golf in Processing ? È un'estensione grafica di Java ed è alquanto difficile da golf.


Bella domanda Credo che i suggerimenti dovrebbero essere su Wiki della community. L'ho segnalato per la migrazione.
Level River St,

4
Downvote ??? perché?
TARDIS,

Non preoccuparti per il downvote ... perderai tutta la reputazione che hai ricevuto da questo post dopo che è stato contrassegnato come wiki della community ...
user12205

3
@ace: la reputazione ottenuta prima che un post sia contrassegnato come CW verrà mantenuta: meta.stackexchange.com/a/11741/229438
ProgramFOX

Risposte:


7
  • Se non è richiesta alcuna animazione, puoi saltare void draw()e inserire tutto void setup().
  • L'inizializzazione delle dimensioni della tela a volte non è necessaria: verrà inizializzata per (100, 100)impostazione predefinita.
  • Se devi usare heighte widthnel tuo codice, di solito è più breve usare i loro valori numerici. Ad esempio, con una tela di dimensioni (100, 100), utilizzare 99per sostituire heighte widthpuò salvare 7 byte.

3

Se si esegue solo codice nel metodo di installazione, non è necessario scrivere la struttura del metodo. Ad esempio puoi scrivere:

rect(10,10,90,90);

invece di

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

E fintanto che non usi altri metodi, tutto verrà inserito nel metodo di installazione prima di essere eseguito


Questo può essere un po 'difettoso. Ho notato che se provi a definire una funzione in modalità statica, l'elaborazione può essere un po 'confusa: puu.sh/tpzP8.png
quat

@quat finché non si definiscono altri metodi, tutto verrà inserito nel metodo di installazione. Se è necessario definire metodi, è necessario assegnare un nome esplicito al metodo di installazione.
HEGX64,

2

(R, G, B)Notazione di colori

Colori esadecimali

L'elaborazione è molto flessibile nel formato colore.

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

può essere scritto usando la notazione esadecimale come

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

Scala di grigi

Ecco un uso speciale per i colori se tutti i valori di Rosso, Verde e Blu sono uguali (bianco):

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

Tutti e tre i parametri possono essere abbreviati in un parametro contenente il valore della scala di grigi: dal 0nero al 255bianco.

Questo può essere esteso anche per l'alfa:

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

Entrambi significano lo stesso colore, ma quest'ultimo modo è più breve di 8 byte.

Alfa

Sebbene ovvio, si dovrebbe affermare che il parametro alfa nella specifica dei colori è facoltativo poiché i colori sono impostati su un valore alfa predefinito di 255 (al 100% opaco).

Riepilogo: formati di colore

Usa il formato colore più breve per esprimere il tuo colore (ricorda di tralasciare i bit non necessari, a seconda del contesto del programma, ad esempio: alfa o scala di grigi)

R: Rosso G: verde B: blu A: alfa g: scala di grigi

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

2

Costanti abbreviate

Se stai utilizzando una delle parole chiave in maiuscolo in Elaborazione (come DIFFERENCE oTRIANGLE_FAN ), verifica se il numero a cui corrispondono è più breve.

Ad esempio, DIFFERENCEè solo un valore intuguale a 32. Invece di utilizzare DIFFERENCE qui , potrei scrivere 32, salvando 8 caratteri.


2

Alternativa più breve a void keyPressed(){}

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

Il void draw(){}è necessario per impostazione predefinita in modo che keyper essere aggiornato. Se l'utente non ha premuto un tasto dall'inizio del programma, keyviene assegnato un valore di 0. Controllando se è maggiore di 0(ovvero l'utente ha premuto un tasto), abbiamo un codice golfista e salviamo 10 byte.



1

Impostazione e commit dei pixel usando set ()

È più efficiente impostare i pixel tramite pixel [] :

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

Tuttavia, ciò richiede updatePixels()e anche l'utilizzo di un indice che, a seconda dello scenario, richiederà la conversione di una posizione x, y in un indice di pixel. Per farla breve, anche se è meno efficiente della CPU (poiché ogni chiamata aggiorna l'intero buffer), set () consente a un pixel di essere impostato e impegnato a bufferizzare immediatamente in una chiamata.

set(0,0,color(255));
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.