您如何将if语句永久化?

时间:2019-02-07 16:46:38

标签: javascript

我对编程还很陌生,作为一个微型项目,它可以帮助我更好地使用JavaScript,因此我正在晒太阳。背景从蓝色开始,在特定的位置,背景必须变成黑色,而我做的大多数,我只是不知道如何使其永久变成黑色。

   noStroke();

   // Original y position of the sun
   var sunPosition = 50;

   function draw() {

   // Draw sky
   background("skyblue");

   // Move the sun down
   sunPosition = sunPosition + 1;

   if(sunPosition === 348){
    background("black");
   }

   // Draw sun
   fill("yellow");
   ellipse(350,sunPosition,50,50);

   // Draw grass
   fill("green");
   rect(0,300,400,100);
   }

4 个答案:

答案 0 :(得分:3)

这听起来像是一种学习的好方法。荣誉。

我假设您发布的代码正在某种循环中运行。循环的每次迭代都会使sunPosition递增。

但是,您仅检查sunPosition等于348

相反,请检查它是否大于或等于348

if(sunPosition >= 348){
  background("black");
}

或者,您可以通过某种方式在此处停止循环。

if(sunPosition === 348){
  background("black");
  stopLoopSomehow();
}

答案 1 :(得分:2)

您可以尝试更改此行: if(sunPosition === 348){

对此: if(sunPosition >= 348){

以获得所需的结果。

答案 2 :(得分:2)

您可以创建一个可变变量(例如sunPosition)来存储太阳是否已经落山:

// Original y position of the sun
var sunPosition = 50;
// Original color of sky
var skyColor = "skyblue";

function draw() {
    // Move the sun down
    sunPosition = sunPosition + 1;
    // check for sunset
    if (sunPosition === 348) {
        skyColor = "black";
    }

    // Draw sky
    background(skyColor);
    // Draw sun
    fill("yellow");
    ellipse(350,sunPosition,50,50);
    // Draw grass
    fill("green");
    rect(0,300,400,100);
}

(或者,更健壮,因为您不需要精确地满足更改条件)是根据太阳位置计算每次draw调用时的天空颜色:

function draw() {
    // Move the sun down
    sunPosition = sunPosition + 1;

    // Draw sky
    if (sunPosition >= 348) {
        background("skyblue");
    } else {
        background("black");
    }
    // Draw sun
    fill("yellow");
    ellipse(350,sunPosition,50,50);
    // Draw grass
    fill("green");
    rect(0,300,400,100);
}

有了if / else,您就会清楚为什么要使用>=

答案 3 :(得分:1)

请记住,如果if语句只是运行检查,并且如果括号内的检查返回true,则执行该语句的块将被执行,否则它将继续。

代码如下:

if(sunPosition === 348){
    background("black");
   }

仅当sunPosition恰好等于348时,此方法才返回true。因此,让我们进一步研究一下。

===比较等于“严格等于”

这意味着左侧的值在所有方面都必须与右侧的值相同。

1 === 1 // True
1 === true // False
1 === "1" // False
1 === 2 // False

==比较等于“等于”

这意味着左侧的值应与右侧的值相同,但这不是严格的比较,这意味着类型可以不同。

1 == 1 // True
1 == true // True
1 == "1" // True
1 == 2 // False

因此,在假设您的sunPosition通过循环或单击按钮递增移动的情况下,sunPosition将仅在一个特定点=== 348。一旦不相等,就不会运行该程序段。

使用该逻辑,将代码更改为:

if(sunPosition >= 348){
    background("black");
   }

您使用的是大于或等于比较。

只要sunPosition大于或等于348,比较将返回true,并且下面语句中的代码将运行。