Bonsoir !
Je viens ici car je n'ai pas trouvé de réponse à mon problème en fouillant sur le net, pourtant je suis sûr qu'il existe une solution simple ! je tiens à préciser que mes compétences en processing sont très limitées.
Mon problème est le suivant :
j'ai une liste de lignes prédéfinies, et j'aimerais que lors de l'exécution, chaque ligne ait une chance sur deux d'apparaître, donc théoriquement on devrait obtenir une figure aléatoire.
Voilà mon code :
void setup() {
fullScreen();
background(255);
strokeWeight(10); }
void draw () {
// x
//gauche
line(450, 200, 550, 300);
line(550, 300, 650, 400);
line(650, 400, 750, 500);
line(750, 500, 850, 600);
//droite
line(850, 200, 750, 300);
line(750, 300, 650, 400);
line(650, 400, 550, 500);
line(550, 500, 450, 600);
//contour
line(450, 200, 650, 200);
line(650, 200, 850, 200);
line(850, 200, 850, 400);
line(850, 400, 850, 600);
line(850, 600, 650, 600);
line(650, 600, 450, 600);
line(450, 600, 450, 400);
line(450, 400, 450, 200);
// +
line(650, 200, 650, 400);
line(650, 400, 650, 600);
line(450, 400, 650, 400);
line(650, 400, 850, 400);
// petits x
line(650, 200, 550, 300);
line(550, 300, 450, 400);
line(450, 400, 550, 500);
line(550, 500, 650, 600);
line(650, 600, 750, 500);
line(750, 500, 850, 400);
line(850, 400, 750, 300);
line(750, 300, 650, 200);
}
Merci d'avance pour votre aide !
Hors ligne
Bonjour,
Pour réaliser ce que tu souhaites, il faut pour chaque ligne faire un tirage aléatoire et mettre une condition.
Afin de simplifier la procédure, j'ai stocker toutes les valeurs des lignes dans un tableau.
L'affichage et la condition sont ainsi très simple réaliser.
Je me suis permis aussi de modifier les coordonnées des lignes pour que le motif soit centré quelque soit l'écran utilisé. en gros j'ai centré le motif sur le point (0, 0) et ensuite j'effectue une translation en fonction de l'écran.
int[][] tableau = { //gauche {-200, -200, -100, -100}, {-100, -100, 0, 00}, {0, 0, 100, 100}, {100, 100, 200, 200}, //droite {200, -200, 100, -100}, {100, -100, 0, 0}, {0, 0, -100, 100}, {-100, 100, -200, 200}, //contour {-200, -200, 0, -200}, {0, -200, 200, -200}, {200, -200, 200, 0}, {200, 0, 200, 200}, {200, 200, 0, 200}, {0, 200, -200, 200}, {-200, 200, -200, 0}, {-200, 0, -200, -200}, // + {0, -200, 0, 0}, {0, 0, 0, 200}, {-200, 0, 0, 0}, {0, 0, 200, 0}, // petits x {0, -200, -100, -100}, {-100, -100, -200, 0}, {-200, 0, -100, 100}, {-100, 100, 0, 200}, {0, 200, 100, 100}, {100, 100, 200, 0}, {200, 0, 100, -100}, {100, -100, 0, -200} }; void setup() { fullScreen(); strokeWeight(10); noLoop(); } void draw () { background(255); translate(width / 2, height / 2); for (int i = 0; i < tableau.length; i++) { if (random(0, 2) > 1) { line(tableau[i][0], tableau[i][1], tableau[i][2], tableau[i][3]); } } }
Hors ligne
Merci de ta réponse Mushussu c'est exactement ça que je voulais c'est trop bien ! J'ai mis du temps à saisir l'histoire du tableau et des variables mais là je crois comprendre un peu mieux, et en plus je vais pouvoir me resservir de la fonction translate sur mes autres projets, plutôt que de m'arracher les cheveux à chaque fois que je change d'écran !
Encore merci et bonne journée !
Hors ligne
Pages: 1