Dicas para jogar golfe no Processing

13

Alguém tem alguma dica de para jogar golfe no Processing ? É uma extensão gráfica de java e é um pouco difícil de jogar golfe.

TARDIS
fonte
Boa pergunta. Eu acredito que as dicas devem estar no Community Wiki. Eu o sinalizei para migração.
Level River St
4
Downvote ??? porque?
TARDIS
Não se preocupe com a downvote ... você vai perder todo o rep que você tem a partir deste post depois que ele é marcado como uma comunidade wiki de qualquer maneira ...
user12205
3
@ace: Reputação obtida antes de um post é marcada CW serão mantidos: meta.stackexchange.com/a/11741/229438
ProgramFOX

Respostas:

7
  • Se nenhuma animação for necessária, você pode pular void draw()e colocar tudo void setup().
  • Às vezes, não é necessário inicializar o tamanho da tela - ela será inicializada (100, 100)por padrão.
  • Se você precisa usar heighte widthem seu código, é geralmente mais curto para usar seus valores numéricos, em vez. Por exemplo, com uma tela de tamanho (100, 100), use 99para substituir heighte widthpode economizar 7 bytes.
user12205
fonte
3

Se você executar apenas o código no método de instalação, não precisará escrever o esboço do método. Por exemplo, você pode escrever:

rect(10,10,90,90);

ao invés de

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

E desde que você não use outros métodos, tudo será colocado no método de configuração antes da execução

HEGX64
fonte
Isso pode ser um pouco complicado. Tenho notado que se você tentar definir uma função no modo estático, o processamento pode ficar um pouco confuso: puu.sh/tpzP8.png
quat
@quat, desde que você não defina nenhum outro método, tudo será colocado no método de instalação. Se você precisar definir métodos, precisará nomear explicitamente o método de instalação.
precisa saber é
2

(R, G, B)Notação de cores

Cores hexadecimais

O processamento é muito flexível em formato de cor.

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

pode ser escrito usando notação hexadecimal como

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

Escala de cinza

Aqui está um uso especial para cores se todos os valores de vermelho, verde e azul forem iguais (branco):

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

Todos os três parâmetros podem ser reduzidos em um parâmetro que contém o valor da escala de cinza: de 0preto para 255branco.

Isso também pode ser estendido para alfa:

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

Ambos significam a mesma cor, mas a última maneira é mais curta em 8 bytes.

Alfa

Embora óbvio, deve-se afirmar que o parâmetro alfa na especificação de cores é opcional, pois as cores são padronizadas com um valor alfa de 255(100% opaco).

Resumo: Formatos de cores

Use o formato de cor mais curto para expressar sua cor (lembre-se de deixar de lado os bits desnecessários, dependendo do contexto do programa, por exemplo: alfa ou escala de cinza)

R: Vermelho G: verde B: azul A: alfa g: escala de cinza

RRR,GGG,BBB
#RRGGBB
ggg
RRR,GGG,BBB,AAA
ggg,AAA
user41805
fonte
2

Abrevie constantes

Se você estiver usando alguma das palavras-chave com maiúsculas no Processamento (como DIFFERENCEou TRIANGLE_FAN), verifique se o número a que elas correspondem é menor.

Por exemplo, DIFFERENCEé apenas intigual a 32. Em vez de usar DIFFERENCE aqui , eu poderia escrever 32, salvando 8 caracteres.

quat
fonte
2

Alternativa mais curta para void keyPressed(){}

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

Por void draw(){}padrão, é necessário para keyque seja atualizado. Se o usuário não pressionar uma tecla desde o início do programa, keyreceberá um valor de 0. Ao verificar se é mais do que 0(ou seja, o usuário pressionou uma tecla), temos o código de golfe e economizamos 10 bytes.

user41805
fonte
2

Branco #FFFFFF

Palavras-chave: Notação de cor

Em vez de usar isso para branco:

color(255)     //10 bytes

você consegue fazer isso:

color(-1)      //9 bytes

e economize 1 byte.

user41805
fonte
1

Definindo e confirmando pixels usando set ()

É mais eficiente definir pixels via pixels [] :

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

No entanto, isso requer updatePixels()e também o uso de um índice que, dependendo do cenário, exigirá a conversão de uma posição x, y em um índice de pixels. Para manter as coisas curtas, mesmo que seja menos eficiente da CPU (à medida que cada chamada atualiza todo o buffer), set () permite que um pixel seja definido e comprometido com o buffer imediatamente em uma chamada.

set(0,0,color(255));
George Profenza
fonte