P5.Js - как я могу изменить цвет line () в цикле while для определенных значений x?

1

Я делаю небольшое задание, которое требует следующего:

Я должен создать цикл while, который рисует 30 линий на экране. Строка № 7 и строка № 23 должны быть окрашены в красный цвет.

Поскольку я все еще пытаюсь разобраться, я пытаюсь раскрасить 2 ближайшие строки из штриха (0); to stroke (255); но что бы я ни пытался, я не могу заставить 2 строки изменить цвет

В этом примере я попытался вложить цикл while, который пока не работает. Я также попытался удалить вложенный цикл while и добавить оператор "if" с теми же переменными (x == 40 && x == 60), но все равно ничего не происходит. Что я могу сделать, чтобы это исправить?

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);
    } 
  }
}
  • 0
    Поскольку никто не упомянул об этом: while (x == 40 && x == 60) означает, что цикл продолжает работать долго x==40 и x==60 . Поскольку x не может иметь 2 разных значения одновременно, условие никогда не выполняется. Это означает, что тело цикла никогда не выполняется.
  • 1
    Кросс-пост: discourse.processing.org/t/…
Теги:
p5.js

3 ответа

1
Лучший ответ

Вы очень близки, вам просто не нужен этот внутренний цикл while!

Для полноты здесь решение p5:

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;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.2/p5.js"></script>

Вы сказали, что хотите, чтобы отображались ближайшие два, эти строки находятся в позиции x 20 и 40, а не 40 и 60!

  • 0
    Спасибо! Моя самая большая борьба была непосредственно после использования цикла while. Лично думал, что мне нужно быть вне этого.
0

Синтаксис для while loop выглядит следующим образом:

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

В твоем случае:

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++;
}
0

Вы устанавливаете цвет обводки в своем операторе if после рисования линии. Обязательно сначала установите цвета, затем нарисуйте все, что вы собираетесь нарисовать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню