我需要弄清楚如何正确使用变量/实例变量?

时间:2016-11-29 18:47:18

标签: processing

float x = 100;
float y = 100;
float p = 150;
float l = 10;
int r = 150;
int t = 100;
int s = 100;
int w = 60;
int h = 60;
int z = 11; 
int eyeSize = 10;
int pigNose = 30;
int pigBody = 30;
int pigEars = 35;
int pigTail = 20;
int speed = 1;

void setup () {
  size (600, 600);

}

void draw () {
  background(255);

   //Draw legs
  fill(255);
  rect(x+(2*w), y+h/3.5, z, 2*z);
  rect(x+(w), y+h/3, z, 2*z);
  rect(x+(1.5*w), y+h/3, z, 2*z);
   rect(x+(2.5*w), y+h/3.5, z, 2*z);


  ////draw body 
  fill(255);
  ellipse(2.1*x,y-pigBody, p, p-(2*l));

 //draw tail
 fill(0);
 line(2.85*x, y-pigTail, (6+l)*pigTail, pigTail*3);


   // Draw payer's head
  fill(255);
  ellipse(x,y-pigNose,t,t);

  // Draw player's eyes
  fill(0);
  ellipse(x-w/3+1,y-h/2,eyeSize,eyeSize);
  ellipse(x+w/3-1,y-h/2,eyeSize,eyeSize);

  //Draw nose
  fill(0);
  ellipse(x, y, pigNose, pigNose);

  //draw ears
  fill(0);
  ellipse(x-(w/2),y-h, pigEars, pigEars);

  fill(0);
  ellipse(x+(w/2),y-h, pigEars, pigEars);
}


  void mousePressed(){
  x = mouseX;
  y = mouseY;
  }

我在使用变量而不是魔术数字时表现不佳,我想知道为什么当我点击屏幕上的某个地方时,猪会分开?我也应该使用实例变量,但我不确定如何。有人可以帮忙吗?这是为了处理。

1 个答案:

答案 0 :(得分:0)

通过使用xy变量并将所有形状基于这些变量,您已经找到了正确的想法。但是你有一件事是错的:当你真的添加到这些变量时,你将这些变量乘以不同的值来得到你的形状的位置得到你的形状的位置。

以这种方式思考,使用一个更简单的例子:

size(200, 100);

float x = 100;
float y = 50;

ellipse(x, y, 20, 20);
ellipse(x*.8, y, 20, 20);

这会创建一个彼此相邻的两个圆圈的图形:

two circles

这似乎是正确的,但现在如果我更改x变量会发生什么?

size(200, 100);

float x = 50;
float y = 50;

ellipse(x, y, 20, 20);
ellipse(x*.8, y, 20, 20);

由于我将x值乘以.8,现在我将x值更改为50,第二个椭圆将位于{{ 1}},距离第一个圆圈仅40像素。但是在第一个草图中,第二个椭圆距离是10像素!

two circles

请注意,如果我增加20,同样的事情会发生,圆圈之间的空间会增加。这就是你的例子中发生的事情。

要解决此问题,我需要值添加到我的变量中以获取其他形状的位置:

x

现在,无论size(200, 100); float x = 150; float y = 50; ellipse(x, y, 20, 20); ellipse(x-20, y, 20, 20); 的值是什么,圈子都会彼此相邻(在这种情况下,20像素分开)。

two circles

你必须做类似的事情,只需要两个变量而不是一个。如果没有意义,请尝试在一张纸上绘制图形,并为xx使用一些不同的示例值。其他形状的位置是什么?

此外,您已经在使用实例变量。这些只是草图顶部的变量。 (除非你原本应该使用课程,但我怀疑这是否属于这种情况。)