Почему код 2 не создает 10 строк окружностей в моем браузере?Но код 1 производит вывод 10x10 строк x столбцов окружностей с радиусом 10 - PullRequest
0 голосов
/ 15 октября 2018

Код 1 работает и дает 10 строк окружностей радиуса 10.

Код 2 не работает должным образом, он просто дает одну линию окружностей радиуса 10.

Я думаю, что логика верна, но все же есть кое-что, чего я, скорее всего, упускаю, когда дело доходит до бумажной документации.

canvas {
  width: 100%;
  background-color: black;
}

body,
html {
  height: 100%;
  margin: 0;
}
<!DOCTYPE html>
<html>
<head>
	<title>Patapat Sound Project</title>
	<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.9.18/paper-full.min.js"></script>
	<script type="text/paperscript" canvas="canvas">
		//Code 1
		for(var x = 0; x<1000; x += 100){
			for(var y = 0; y<1000; y += 100){
				var circle = new Path.Circle(new Point(x, y), 10);
				circle.fillColor = 'red';
			}
		}

		//Code 2
		var x = 10;
		var y = 10;
		while(x!=1010 && y!= 1010){
			var circle = new Path.Circle(new Point(x,y), 10);
			circle.fillColor = 'orange';
			if(x==1010){
				x=10;
				y+=100;
			}
			else{
				x+=100;
			}
		}
	</script>
</head>
<body>
  <canvas id="canvas" resize></canvas>
</body>
</html>

1 Ответ

0 голосов
/ 17 октября 2018

Это на самом деле проблема с вашей логикой.
Цикл while останавливается после 10-й итерации, когда значение x равно 1010.
Вы должны увеличить x перед проверкой в ​​цикле.
Вот правильный код:

//Code 2
var x = 10;
var y = 10;
while (x != 1010 && y != 1010) {
    console.log(x, y);
    var circle = new Path.Circle(new Point(x, y), 10);
    circle.fillColor = 'orange';

    // increment x every time
    x += 100;

    // then check if it will break the loop
    if (x == 1010) {
        x = 10;
        y += 100;
    }
}
...