2016-04-26 12 views
0

私のやりたいことは、たとえば10秒ごとに新しい惑星を作成し、それが動くようにして「hello」をプリントすることです。最後に私は8つの惑星(楕円)が一緒に動くことを望んでいます。処理:「x」時間ごとにオブジェクトを作成するには

私はdelay()を使用しようとしています。私は失敗しました。

誰かが私を助けてくれますか?

Planet [] planetCollection = new Planet [8]; 
float [] wid2 = {100,200,300,400,500,600,700,800}; 
float [] hig2 = {50,75,100,125,150,175,200,225}; 
int [] colorR = {100,800,300,400,500,600,700,800}; 
int [] colorG = {50,225,100,125,150,175,200,225}; 
int [] colorB = {50,225,100,125,150,175,200,225}; 
int [] size = {10,12,14,16,18,20,22,24}; 
int lastTime =0; 
int contador =0; 

void setup(){ 
     size (1600,1600); 
     smooth(); 

     //INITIALIZE 

     for (int i=0 ; i<planetCollection.length; i++){ 

     planetCollection [i] = new Planet(wid2[i], hig2[i], colorR[i], 
      colorG[i], colorB[i], size[i]); 
     } 

} 

void draw(){ 
     background (0); 

     //CALL FUNCIONALITY 

     for (int i=0 ; i<planetCollection.length; i++){ 
     planetCollection [i].run(); 
     } 
} 



    class Planet { 
    //GLOBAL VARIABLES 
    float val; 
    float x = 0; 
    float y = 0; 
    float wid2; 
    float hig2; 
    float speed; 
    int colorR; 
    int colorG; 
    int colorB; 
    int size; 
    int centerx = width/2; 
    int centery = height/4; 


    //CONTRUCTOR 
    Planet(float _w, float _h,int _colorR,int _colorG,int _colorB, int _size){ 

    wid2=_w; 
    hig2=_h; 
    colorR= _colorR; 
    colorG= _colorG; 
    colorB= _colorB; 
    size = _size; 



    speed=10/(2*PI * sqrt ((pow(wid2,2)+pow (hig2,2)/2))); ; 

    } 


    //FUNCTIONS 

    void run(){ 
    move(); 
    display(); 
    } 
    void move(){ 
     x= sin (val); 
     y= cos(val); 
     x *=wid2; 
     y *=hig2; 
     //SUN/CENTER 
     noStroke(); 
     fill (255,238,41); 
     ellipse (centerx,centery,40,40); 
     if (dist (mouseX,mouseY,centerx,centery)<20){ 
     if(mousePressed){ 
     speed =0; 
     } 
     } 
     // 
     x+= centerx; 
     y+= centery; 
     val += speed; 

     } 



     void display(){ 
     //PLanets 
     fill(colorR, colorG, colorB); 
     ellipse(x, y, size, size); 
     ///Orbits 
     noFill(); 
     stroke(255); 
    ellipse(centerx, centery, wid2*2, hig2*2); 
     println ("posicionx "+x); 
     println ("posiciony "+y); 
     println ("width "+wid2); 
     println ("high "+hig2); 
     println ("val "+val); 
     println ("speed "+speed); 


     } 


    } 
+1

それは簡単ですので、他の人はあなたがこの人物像を手に入れた –

+0

を読むためにのためにあなたのコードをインデントしてくださいでる? –

答えて

0

あなたは何ごとXフレームを行うためにdraw()関数内frameCount変数と一緒にmodulo % operatorを使用することができます。ここで

は、すべての60のフレームの小さな丸ほとんどのフレームを描画するプログラム例であるが、大きな円を描く:

void setup() { 
    size(500, 500); 
    background(0); 
} 

void draw() { 

    ellipse(mouseX, mouseY, 10, 10); 

    if (frameCount % 60 == 0) { 
    ellipse(mouseX, mouseY, 50, 50); 
    } 
} 
関連する問題