Alguém tem alguma dica de código de golfe para jogar golfe no Processing ? É uma extensão gráfica de java e é um pouco difícil de jogar golfe.
Alguém tem alguma dica de código de golfe para jogar golfe no Processing ? É uma extensão gráfica de java e é um pouco difícil de jogar golfe.
Respostas:
void draw()
e colocar tudo void setup()
.(100, 100)
por padrão.height
e width
em seu código, é geralmente mais curto para usar seus valores numéricos, em vez. Por exemplo, com uma tela de tamanho (100, 100)
, use 99
para substituir height
e width
pode economizar 7 bytes.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
(R, G, B)
Notação de coresO 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)
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 0
preto para 255
branco.
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.
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).
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
Se você estiver usando alguma das palavras-chave com maiúsculas no Processamento (como DIFFERENCE
ou TRIANGLE_FAN
), verifique se o número a que elas correspondem é menor.
Por exemplo, DIFFERENCE
é apenas int
igual a 32. Em vez de usar DIFFERENCE
aqui , eu poderia escrever 32
, salvando 8 caracteres.
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 key
que seja atualizado. Se o usuário não pressionar uma tecla desde o início do programa, key
receberá 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.
#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.
É 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));