Я делаю небольшое задание, которое требует следующего:
Я должен создать цикл 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);
}
}
}
Вы очень близки, вам просто не нужен этот внутренний цикл 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!
Синтаксис для 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++;
}
Вы устанавливаете цвет обводки в своем операторе if после рисования линии. Обязательно сначала установите цвета, затем нарисуйте все, что вы собираетесь нарисовать.
while (x == 40 && x == 60)
означает, что цикл продолжает работать долгоx==40
иx==60
. Посколькуx
не может иметь 2 разных значения одновременно, условие никогда не выполняется. Это означает, что тело цикла никогда не выполняется.