2016-11-29 106 views
1
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; 
    } 

我不是在使用变量而不是幻数,伟大的,我不知道为什么,当我点击猪分裂开来在屏幕上的某个地方?我也应该使用实例变量,但我不知道如何。谁能帮忙?这是为了处理。我需要弄清楚如何正确使用变量/实例变量?

回答

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); 

自从我被.8乘以我的x值,现在我在我的x值更改为50,第二个椭圆将在40,这是从第一圈仅10像素的路程。但在第一张草图中,第二个椭圆是20像素!

two circles

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

为了解决这个问题,我需要添加值到我的变量,让我的其他形状的位置:

size(200, 100); 

float x = 150; 
float y = 50; 

ellipse(x, y, 20, 20); 
ellipse(x-20, y, 20, 20); 

现在圈会留下彼此相邻(在这种情况下,20像素除此之外)不管x的值是多少。

two circles

你必须做同样的事情,只是两个变量,而不是一个。如果没有意义,请尝试在一张纸上绘制数字,然后使用xy的几个不同示例值。其他形状的位置是什么?

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

+0

非常感谢,这对我有很大的帮助。 – santacruzbbyx