作者 主题: <新手求教>:for()循环里可不可以排除某一特定值啊?  (阅读 5019 次)

xubiyu9774

  • Newbie
  • *
  • 帖子: 2
<新手求教>:for()循环里可不可以排除某一特定值啊?
« 于: 十一月 16, 2011, 02:52:32 下午 »
老师布置作业要做一个和鼠标互动的小程序。就是有4*4共十六个正方形,当鼠标移动到某个正方形所在的区域是,这个正方形 会变大。
我的设想就是在void draw(){}中执行重复画十六个正方形,然后添加限制条件,即如果鼠标在某正方形的区域内,绘制大一号的正方形。但是在else中编写时应该要用到for()循环。可这个时候若不做处理,鼠标所在的那个位置就相当于画了两个正方形,一个大的一个小的。
所以我想知道在执行for()循环是是不是可以排除掉我鼠标所在的那个正方形的绘制命令?

或者是不是要用其他的思路来实现这样的构想?

求解答…… :)
« 最后编辑时间: 十一月 16, 2011, 02:56:52 下午 作者 xubiyu9774 »

RavenKwok

  • Sr. Member
  • ****
  • 帖子: 277
  • Artist/ Animator/ Coder/ Cynical Asshole
Re: <新手求教>:for()循环里可不可以排除某一特定值啊?
« 回复 #1 于: 十一月 16, 2011, 08:09:45 下午 »
俺直接上代码吧,你自己研究下。 ::)

程序代码
int spacing = 100;
Element [][] elements = new Element[4][4];
void setup() {
  size(600, 600);
  frameRate(30);
  rectMode(CENTER);
  fill(200);
  noStroke();
  for (int i=0;i<4;i++) {
    for (int j=0;j<4;j++) {
      elements[j][i] = new Element(150+j*spacing, 150+i*spacing);
    }
  }
  smooth();
}
void draw() {
  background(255);
  for (int i=0;i<4;i++) {
    for (int j=0;j<4;j++) {
      elements[j][i].judge();
      elements[j][i].transform();
      elements[j][i].display();
    }
  }
}
class Element{
  float x,y;
  float w,wT;
  Element(float x_,float y_){
    wT = 60;
    x = x_;
    y = y_;
  }
  void transform(){
    w = lerp(w,wT,0.3);
  }
  void display(){
    rect(x,y,w,w);
  }
  void judge(){
    if(mouseX>x-w/2&&mouseX<x+w/2&&mouseY>y-w/2&&mouseY<y+w/2){
      wT = 100;
    }else{
      wT = 60;
    }
  }
}

Tags: processing