Fizzbuzz с использованием фигур (p5. js) - PullRequest
1 голос
/ 31 января 2020

В настоящее время я пытаюсь создать шипение, используя формы, но не могу получить делимые на 3 и 5 квадраты, чтобы они правильно отображались. Я искал ответы, но никто, кажется, не пробовал это.

Напишите программу, которая выводит на экран aws 25 черных кругов, ориентированных горизонтально. Пожалуйста, выполните sh это с помощью для l oop, который начинается с нуля и увеличивает итерацию вперед на одну каждую итерацию.

Однако,

Когда Итеран делится на 3, вместо этого нарисуйте фиолетовый круг. Когда Итера и делится на 5, нарисуйте зеленый квадрат. Когда Итера и делится на 3 И 5, вместо этого нарисуйте синий квадрат

function setup() {
createCanvas(1500, 1500);
ellipseMode(CENTER);
}

function draw() {
  background(200);
  var y = 100;
  // 25 black squares
  for (let x = 0; x < 1250; x += 50) {
    fill(0);
    ellipse(x, y, 50, 50);
    // sets the purple circle
    if (x % 3 === 0) {
      fill(153, 31, 240);
      ellipse(x, y, 50, 50);
    }
    // sets the green squares should be on top
    if (x % 5 === 0) {
      fill(0, 255, 0);
      square(x + 25, y - 25, 50);
    }
    // sets the last blue square
    // issue is the is supposed to be only one at the 15 mark
    if (x % 3 == 0 && x % 5 == 0) {
      fill(0, 0, 255);
      square(x + 25, y - 25, 50);
    }
  }
}

1 Ответ

0 голосов
/ 31 января 2020

Основная проблема заключается в том, что ваши условия оценивают x. Обратите внимание, x - это координата x, кратная 50.
Вы должны оценить индекс поля.

Внимательно прочитайте свои собственные инструкции:

[ ...] делаете sh это с помощью для l oop, который начинается с нуля и увеличивает итерацию вперед и на одну каждую итерацию.

Кроме того, фигуры должны быть нарисованы "вместо" .

Выполните команду oop с i=0 до i<25:

for (let i = 0; i < 25; ++ i)

и используйте

if () { ... } else if () { ... } else { ... }

последовательность:

См. пример:

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

function draw() {
    background(200);
    var y = 100;
    // 25 black squares
    for (let i = 0; i < 25; ++ i) {
        let x = i*50; 
        
        if (i % 3 == 0 && i % 5 == 0) {
            // sets the last blue square
            fill(0, 0, 255);
            square(x, y, 50);
        }
        else if (i % 5 === 0) {
            // sets the green squares should be on top
            fill(0, 255, 0);
            square(x, y, 50);
        }
        else if (i % 3 === 0) {
            // sets the purple circle
            fill(153, 31, 240);
            ellipse(x+25, y+25, 50, 50);
        }
        else {
            // black circle
            fill(0);
            ellipse(x+25, y+25, 50, 50);
        }
    }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.10.2/p5.js"></script>
...