Conseils pour jouer au golf dans Processing


13

Quelqu'un a-t conseils pour jouer au golf dans le traitement ? C'est une extension graphique de java, et est quelque peu difficile à jouer au golf.


Bonne question. Je pense que les astuces devraient être sur le wiki communautaire. Je l'ai signalé pour migration.
Level River St

4
Downvote ??? Pourquoi?
TARDIS

Ne vous inquiétez pas pour le downvote ... vous perdrez de toute façon tous les représentants que vous avez reçus de ce message après qu'il soit marqué comme wiki communautaire ...
user12205

3
@ace: La réputation acquise avant la publication d'un message CW sera conservée: meta.stackexchange.com/a/11741/229438
ProgramFOX

Réponses:


7
  • Si aucune animation n'est requise, vous pouvez ignorer void draw()et tout mettre void setup().
  • L'initialisation de la taille de la toile n'est parfois pas nécessaire - elle sera initialisée (100, 100)par défaut.
  • Si vous devez utiliser heightet widthdans votre code, il est généralement plus court d'utiliser à la place leurs valeurs numériques. Par exemple, avec un canevas de taille (100, 100), utilisez 99pour remplacer heightet widthpeut vous faire économiser 7 octets.

3

Si vous exécutez uniquement du code dans la méthode d'installation, vous n'avez pas besoin d'écrire le plan de la méthode. Par exemple, vous pouvez écrire:

rect(10,10,90,90);

au lieu de

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

Et tant que vous n'utilisez pas d'autres méthodes, tout sera mis dans la méthode de configuration avant de s'exécuter


Cela peut être un peu bogué. J'ai remarqué que si vous essayez de définir une fonction en mode statique, le traitement peut devenir un peu confus: puu.sh/tpzP8.png
quat

@quat tant que vous ne définissez aucune autre méthode, tout sera placé dans la méthode de configuration. Si vous devez définir des méthodes, vous devrez nommer explicitement la méthode de configuration.
HEGX64

2

(R, G, B)Notation des couleurs

Couleurs hexadécimales

Le traitement est très flexible en format couleur.

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

peut être écrit en utilisant la notation hexadécimale comme

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

Niveaux de gris

Voici une utilisation spéciale pour les couleurs si toutes les valeurs Rouge, Vert et Bleu sont identiques (blanc):

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

Les trois paramètres peuvent être raccourcis en un seul paramètre contenant la valeur de l'échelle de gris: du 0noir au 255blanc.

Cela peut également être étendu pour alpha:

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

Les deux signifient la même couleur, mais cette dernière façon est plus courte de 8 octets.

Alpha

Bien qu'évident, il convient de préciser que le paramètre alpha dans la spécification des couleurs est facultatif car les couleurs sont définies par défaut sur une valeur alpha de 255(100% opaque).

Résumé: formats de couleurs

Utilisez le format de couleur le plus court pour exprimer votre couleur (n'oubliez pas de laisser de côté les bits inutiles - en fonction du contexte du programme - par exemple: alpha ou niveaux de gris)

R: Rouge G: vert B: bleu A: alpha g: niveaux de gris

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

2

Abréger les constantes

Si vous utilisez un des mots clés en majuscules dans le traitement (comme DIFFERENCEou TRIANGLE_FAN), vérifiez si le nombre auquel ils correspondent est plus court.

Par exemple, DIFFERENCEest juste un intqui est égal à 32. Au lieu d'utiliser DIFFERENCE ici , je pourrais écrire 32, en sauvant 8 caractères.


2

Alternative plus courte à void keyPressed(){}

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

Le void draw(){}est nécessaire par défaut pour keyêtre mis à jour. Si l'utilisateur n'a pas appuyé sur une touche depuis le début du programme, la keyvaleur est donnée 0. En vérifiant s'il est supérieur à 0(c'est-à-dire que l'utilisateur a appuyé sur une touche), nous avons le code golfier et économisons 10 octets.


2

blanc #FFFFFF

Connexes: Notation de couleur

Au lieu d'utiliser ceci pour le blanc:

color(255)     //10 bytes

tu peux le faire:

color(-1)      //9 bytes

et enregistrez 1 octet.


1

Définition et validation des pixels à l'aide de set ()

Il est plus efficace de définir des pixels via des pixels [] :

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

Cependant, cela nécessite updatePixels()et également l'utilisation d'un index qui, selon le scénario, nécessitera la conversion d'une position x, y en un index de pixels. Pour faire court, même s'il est moins efficace en termes de CPU (car chaque appel met à jour le tampon entier), set () permet à un pixel de se mettre en place et de le mettre en mémoire tampon immédiatement en un seul appel.

set(0,0,color(255));
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.