2022年9月26日 星期一

week04 互動技術 08160873

 Step01:動者恆動 靜者恆靜

void setup(){

  size(500,500);

}

int x=250,y=250;//變數(位置)

void draw(){

  ellipse(x,y,10,10);//橢圓

  x = x+1;

  y = y-1;

}

Step02:碰到牆壁立即反彈!!

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 = -vy;
}

Step03:背景,去殘影,以及新增控制板做接球的動作;
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, 300, 20);//控制的板子
  ellipse(x,y,10,10);//橢圓
  x = x + vx;
  y = y + vy;
  if( x > 500 ) vx = -vx;
  if( y < 0 ) vy = -vy;
  if( x < 0) vx = -vx;
  if( y > 470 && x>boardX && x<boardX+300) vy = -vy;
}
Step04:新增遊戲機制:如果努力用功,控制板能變大,反之,控制板縮小(滑鼠左鍵變大,右鍵變小);
void setup(){
  size(500,500);
}
float x=250,y=250;//變數(位置)精細
float  vx = 5.0 ,vy = -3.5;
float boardX,boardY=470,boardW=150,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 = -vy;
  if( x < 0) vx = -vx;
  if( ( y >boardY && y<boardY+boardH) &&
    ( x >boardX && x<boardX+boardW) ){ 
    vy = -vy;
    vx += (mouseX-pmouseX)/2;//mouse的移動速度
  }
  if(mousePressed && mouseButton==LEFT) boardW*= 1.01;//每天多努力1%
  if(mousePressed && mouseButton==RIGHT) boardW*=0.99;//每天多混1%
}

Step05:製作簡易棋盤;
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);
   }
  }
}
Step06:9X9棋盤遊戲;
Step07:畫線以及黑棋;
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,1,0,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},
};//陣列 array9x9
void draw(){//用迴圈,畫很多棋
  background(246,194,108);//木頭色的棋盤
  for(int i=0; i<9; i++){//用迴圈,畫很多線條
    line(50,50*i,450,50*i);//湊
    line(50*i,50,50*i,450);//湊
   }
   for(int i=0; i<9; i++){//左手i,對應y座標
     for(int j=0; j<9; j++){//右手j,對應x座標
       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);
        }
     }
   }
}



Step08:可下黑及白棋(一開始要清空棋盤!!);
void setup(){
  size(500,500);
}
int [][] go={//0:沒有棋子1:黑棋2:白棋
  {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},
};//陣列 array9x9
int N=0;
void mousePressed(){
  int j = (mouseX-25)/50;//右手j,對應X座標
  int i = (mouseY-25)/50;//左手i,對應Y座標
  go[i][j] = (N%2 == 0)? 1 : 2;
  N++;
}
void draw(){//用迴圈,畫很多棋
  background(246,194,108);//木頭色的棋盤
  for(int i=0; i<9; i++){//用迴圈,畫很多線條
    line(50,50*i,450,50*i);//湊
    line(50*i,50,50*i,450);//湊
   }
   for(int i=0; i<9; i++){//左手i,對應y座標
     for(int j=0; j<9; j++){//右手j,對應x座標
       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);
        }
     }
   }
}



































沒有留言:

張貼留言