2010年10月19日火曜日

自分用メモ

int acter = 2;
int times;
MyEclipse[] me = new MyEclipse[20];
MyEclipse[] win = new MyEclipse[100];
MyEclipse winner;
MyEclipse competer;

void setup()
{
  times=0;
  size(450,450);
  background(255);
  for(int i=0; i= 100){
    println("おわった!!");
    delay(1000);
    
    fill(255,255,255);
    for(int i = 0; i < acter; i++){
      me[i].display();
    }
    
    fill(100,100,230);
    for(int i = 0; i < times; i++){
      win[i].display();
      print("(" + win[i].getX() + "," + win[i].getY() + ")");
    }
  }else{
    print(times);
  
    int winnings=0;
    
    background(255);
    fill(255,255,255);
    for(int i = 0; i < acter; i++){
      me[i].display();    
    }
  
    fill(100,100,230);
    winner.display();
    competer.display();
  
    while(winnings < 700){
      int len_w = 0;
      int len_c = 0;
      for(int i = 0; i < acter; i++){
        len_w += (winner.getX() - me[i].getX())^2 
          + (winner.getY() - me[i].getY())^2;
        len_c += (competer.getX() - me[i].getX())^2 
        + (competer.getY() - me[i].getY())^2;
        len_w += sqrt(sq(winner.getX() - me[i].getX()) 
          + sq(winner.getY() - me[i].getY()));
        len_c += sqrt(sq(competer.getX() - me[i].getX()) 
        + sq(competer.getY() - me[i].getY()));
      }
      if(len_w < len_c){
        winnings++;
        competer.setX(random(450.));
        competer.setY(random(450.));
      }else{
        winnings = 0;
        winner.setX(competer.getX());
        winner.setY(competer.getY());
        competer.setX(random(450.));
        competer.setY(random(450.));
      }
    }
  
    win[times] = new MyEclipse(winner.getX(), winner.getY());
    print("(" + winner.getX() + "," + winner.getY() + ")");
  
  /** debug **
  delay(1000);
  background(255);
  win[times].display();
  */
  
    times++;
  }
}

class MyEclipse{
  private int x;
  private int y;
  
  MyEclipse(int x, int y){
    this.x = x;
    this.y = y;
  }
  
  MyEclipse(float x, float y){
    this.x = int(x);
    this.y = int(y);
  }
  
  public void setX(int x){
    this.x = x;
  }
  
  public void setY(int y){
    this.y = y;
  }
  
  public void setX(float x){
    this.x = int(x);
  }
  
  public void setY(float y){
    this.y = int(y);
  }
  
  public int getX(){
    return this.x;
  }
  
  public int getY(){
    return this.y;
  }
  
  public void display(){
    ellipse(x,y,10,10);
  }
}

ほぼ半年ぶりくらいにプログラミングした。
授業の課題を解くために。
しかし、この雑な感じ。。

そして、なんかイマイチうまく動かないのはなぜ?
processingはちょっと特殊だから、動きが掴みきれない。
デバッグするか、プログラミングをやめて手で解くか。
悩みどころ。どうしよう。


追記:
sqrtし忘れているという凡ミスだった。
うごいたー!
そんなにむずいプログラムじゃないけど、
久々なのでやっぱ達成感。

暇があればまたちゃんと勉強しようかな。

0 件のコメント: