2
votes

P5.Js - Comment puis-je changer la couleur de line () dans une boucle while sur des valeurs x spécifiques?

Je fais un petit travail qui nécessite ce qui suit:

Je dois créer une boucle while qui dessine 30 lignes à l'écran. Les numéros de ligne 7 et de ligne 23 doivent être de couleur rouge.

Parce que j'essaie toujours de comprendre les choses, j'essaye de colorer les 2 lignes les plus proches de stroke (0); to stroke (255) ;, mais peu importe ce que j'essaye, je n'arrive pas à faire changer la couleur des 2 lignes

Dans cet exemple, j'ai essayé d'imbriquer une boucle while, qui jusqu'à présent ne fonctionne pas. J'ai également essayé de supprimer la boucle while imbriquée et d'ajouter une instruction "if" avec les mêmes variables (x == 40 && x == 60) mais rien ne se passe. Que puis-je faire pour résoudre ce problème?

var x = 20;
var stap = 20;
var stop = 600;

function setup () {
  createCanvas(700, 700);
}

function draw () {
  stroke(0);

  while(x < stop) {
    line(x, 60, x, 80);
    x += stap;

    while (x == 40 && x == 60) {
      stroke(255);
    } 
  }
}


2 commentaires

Puisque personne ne l'a mentionné: while (x == 40 && x == 60) signifie que la boucle continue de fonctionner pendant longtemps x == 40 et x == 60 . Puisque x ne peut pas avoir 2 valeurs différentes en même temps, la condition n'est jamais remplie. Cela signifie que le corps de la boucle n'est jamais exécuté.


Crossposted: discourse.processing.org/ t /…


3 Réponses :


0
votes

Vous définissez la couleur du trait dans votre instruction if après tracer la ligne. Assurez-vous de définir d'abord les couleurs, puis dessinez ce que vous allez dessiner.


0 commentaires

0
votes

La syntaxe d'une boucle while est la suivante:

while (line_number <= 30) {
  y = step_size * line_number;
  // Determine which color to use
  if (line_number == 7 || line_number == 23) {
    // Set color to RED
    line_color = color(127, 0, 0);
  } else {
    // Set alternate color
    line_color = color(127, 127, 127);
  }
  // Set the color to draw the line
  stroke(line_color);
  // Draw a horizontal line
  line(0, y, width, y);
  // Go to the next line
  line_number++;
}

Dans votre cas:

while (condition) {
  statements to execute while the condition is true
}

p >


0 commentaires

1
votes

Vous êtes très proche, vous n'avez tout simplement pas besoin de cette boucle while interne!

Pour être complet, voici une solution p5:

<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.2/p5.js"></script>
var x = 20;
var stap = 20;
var stop = 600;

function setup() {
  createCanvas(700, 700);
}

function draw() {

  while (x < stop) {
    if (x === 20 || x === 40) {
      stroke(255, 0, 0);
    } else {
      stroke(0);
    }

    line(x, 60, x, 80);
    x += stap;
  }
}

Vous avez dit que vous aimeriez avoir les deux plus proches à afficher, ces lignes sont en x position 20 et 40, plutôt que 40 et 60!


0 commentaires