2022年9月26日 星期一

09160111互動技術概論week04

 1-1
做出一顆球碰到旁邊牆壁就停止反彈。

void setup(){

size(500,500);

}

int x=250,y=250;

void draw(){

 ellipse(x,y,10,10);

 x=x+1;

 y=y-1;

}


1-2

void setup(){

size(500,500);

}

float x=250,y=250;

float vx=1.0, vy=-0.5;

void draw(){

 ellipse(x,y,10,10);

 x=x+vx;

 y=y+vy;

 if(x>500) vx=-vx;

 if(y<0) vy=-vx;

 if(x<0)vx=-vx;

}

1-3
做出可以讓球反彈的平台,求落下後用滑鼠移動平台,讓球落在上面後就會反彈。

void setup(){

size(500,500);

}

float x=250,y=250;

float vx=2.0, vy=-1.5;

void draw(){

 background(#FFFFF2);

 int boardX=mouseX;

 rect(boardX,470,100,20);

 ellipse(x,y,10,10);

 x=x+vx;

 y=y+vy;

 if(x>500) vx=-vx;

 if(y<0) vy=-vx;

 if(x<0)vx=-vx;

 if(y>470&&x>boardX&&x<boardX+100)vy=-vy;


}


2-1
平台透過滑鼠左鍵能夠變長,而滑鼠右鍵則是縮小回原來的大小。

void setup(){

size(500,500);

}

float x=250,y=250;

float vx=2.0, vy=-1.5;

float boardX,boardY=470,boardW=100,boardH=20;

void draw(){

 boardX=mouseX-boardW/2;

 background(#FFFFF2);

 rect(boardX,boardY,boardW,boardH);

 ellipse(x,y,10,10);

 x=x+vx;

 y=y+vy;

 if(x>500) vx=-vx;

 if(y<0) vy=-vx;

 if(x<0)vx=-vx;

 if((y>boardY&&y<boardY+boardH)&&(x>boardX&&x<boardX+boardW)){

 

 vy=-vy;

 vx+=(mouseX-pmouseX)/2;

 }

 if(mousePressed&&mouseButton==LEFT)boardW*=1.01;

 if(mousePressed&&mouseButton==RIGHT)boardW*=0.99;

 }


2-2
運用迴圈畫出很多的棋子。

void setup(){

 size(500,500);

}

void draw(){

 for(int x=50;x<=450;x+=50){

    for(int y=50;y<=450;y+=50){

      ellipse(x,y,50,50);
   

    } 

 }

}

2-3

void setup(){
 size(500,500);
}
int [][]go={
{0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,1},
{0,1,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,1,1},
{0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
};
void draw(){
 for(int i=0;i<9;i++){
    for(int j=0;j<9;j++){
      if(go[i][j]==1) fill(0);
      else fill(255);
      ellipse(50+j*50,50+i*50,50,50);
    
    }
 
 }

}

3-1
做出棋盤將數字改成二會變成白棋,1是黑棋

void setup(){
 size(500,500);
}
int [][]go={
{0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,1},
{0,1,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,1,1},
{0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
};
void draw(){
   background(246,194,108);
   for(int i=1;i<=9;i++){
      line(50,50*i,450,50*i);
      line(50*i,50,50*i,450);
   }
 for(int i=0;i<9;i++){
    for(int j=0;j<9;j++){
      if(go[i][j]==1){
      fill(0);
      ellipse(50+j*50,50+i*50,40,40);
      }else if(go[i][j]==2){   
      fill(255);//白棋
      ellipse(50+j*50,50+i*50,40,40);
      
      }
    
    }
 
  }

 }

3-2
按下滑鼠會先放置黑棋,在按一次則是放置白棋。

void setup(){
 size(500,500);
}
int [][]go={
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
};
int N=0;
void mousePressed()
{
 int j=(mouseX-25)/50;
 int i=(mouseY-25)/50;
 go[i][j]=(N%2==0)?1:2;
 N++;
}

void draw(){
   background(246,194,108);
   for(int i=1;i<=9;i++){
      line(50,50*i,450,50*i);
      line(50*i,50,50*i,450);
   }
 for(int i=0;i<9;i++){
    for(int j=0;j<9;j++){
      if(go[i][j]==1){
      fill(0);
      ellipse(50+j*50,50+i*50,40,40);
      }else if(go[i][j]==2){   
      fill(255);//白棋
      ellipse(50+j*50,50+i*50,40,40);
      
      }
    
    }
 
  }

 }



沒有留言:

張貼留言