繁体   English   中英

你如何将if语句永久化?

[英]How do you make an if-statement permanent?

我对编程很陌生,作为一个帮助我改进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);
   }

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

对此: if(sunPosition >= 348){

获得理想的结果。

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

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

但是,您只检查sunPosition是否完全等于348

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

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

或者,你可以在某种程度上停止循环。

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

您可以创建一个可变变量(如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 ,你会明白为什么要使用>=

请记住,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,并且后面的语句中的代码将运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM