2021年10月4日 星期一

鴨力山大 week02

 延續上周內容~~~


點擊滑鼠更改背景變色,程式碼如下

void setup(){
  size(500,500);
}
void draw(){
  if(mousePressed) background(255,0,0);
  else background(0,255,0);
}



點擊滑鼠產生線條,程式碼如下

void setup(){
  size(500,500);
}
void draw(){
  if(mousePressed) line(mouseX,mouseY,0,0);
}


點擊滑鼠拖移可以畫出線條畫畫,像是小畫家一樣,程式碼如下

void setup(){
  size(500,500);
}
void draw(){
  if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY);
}


使用if寫程式,讓小畫家可以點選左上方框框顏色,畫出相對的顏色,程式碼如下

void setup(){
  size(500,500);
  fill(255,0,0);rect(0,0,100,100);
  fill(0,255,0);rect(0,100,100,100);
}
void draw(){
  if(mousePressed) {
    if(mouseX<100){
      if(mouseY<100)stroke(255,0,0);//紅色
      else if(mouseY<200)stroke(0,255,0);//綠色
    }else if(mousePressed)line(mouseX,mouseY,pmouseX,pmouseY);
  }
}


延續剛剛的程式碼,將程式碼改成選擇框框的粗細,畫出相對的粗細線條,程式碼如下

void setup(){
  size(500,500);
  rect(0,0,100,100);ellipse(50,50,8,8);
  rect(0,100,100,100);ellipse(50,150,4,4);
}
void draw(){
  if(mousePressed) {
    if(mouseX<100){
      if(mouseY<100)strokeWeight(8);
      else if(mouseY<200)strokeWeight(4);
    }else if(mousePressed)line(mouseX,mouseY,pmouseX,pmouseY);
  }
}


延伸練習(可做可不做)
利用迴圈寫出有很多筆刷大小的程式,程式碼如下
void setup(){
  size(500,500);
  for(int i=1;i<8;i++){
    rect(0,i*50,50,50);
    ellipse(25,25+i*50,i,i);
  }
}
void draw(){
  if(mousePressed) {
    if(mouseX<50){
      for(int i=1;i<8;i++){
        if(mouseY>i*50 && mouseY<i*50+50){
          strokeWeight(i);
        }
      }
    }else line(mouseX,mouseY,pmouseX,pmouseY);
  }
}


比較簡單的寫法

void setup(){
  size(500,500);
  rect(0,50,50,50);ellipse(25,25+50,1,1);
  rect(0,100,50,50);ellipse(25,25+100,2,2);
  rect(0,150,50,50);ellipse(25,25+150,3,3);
  rect(0,200,50,50);ellipse(25,25+200,4,4);
  rect(0,250,50,50);ellipse(25,25+250,5,5);
  rect(0,300,50,50);ellipse(25,25+300,6,6);
  rect(0,350,50,50);ellipse(25,25+350,7,7);
  rect(0,400,50,50);ellipse(25,25+400,8,8);
}
void draw(){
  if(mousePressed){
    if(mouseX<50){
      if(mouseY>1*50 && mouseY<1*50+50) strokeWeight(1);
      if(mouseY>2*50 && mouseY<2*50+50) strokeWeight(2);
      if(mouseY>3*50 && mouseY<3*50+50) strokeWeight(3);
      if(mouseY>4*50 && mouseY<4*50+50) strokeWeight(4);
      if(mouseY>5*50 && mouseY<5*50+50) strokeWeight(5);
      if(mouseY>6*50 && mouseY<6*50+50) strokeWeight(6);
      if(mouseY>7*50 && mouseY<7*50+50) strokeWeight(7);
      if(mouseY>8*50 && mouseY<8*50+50) strokeWeight(8);
    }else line(mouseX,mouseY,pmouseX,pmouseY);
  }
}


將剛剛線條粗細的寫法改成寫顏色的寫法,程式碼如下

void setup(){
  size(500,500);
  fill(#FF0505);rect(0,50,50,50);
  fill(#FFB005);rect(0,100,50,50);
  fill(#D0FF05);rect(0,150,50,50);
  fill(#05FF24);rect(0,200,50,50);
  fill(#05DCFF);rect(0,250,50,50);
  fill(#051BFF);rect(0,300,50,50);
  fill(#7905FF);rect(0,350,50,50);
  fill(#FF05EF);rect(0,400,50,50);
}
void draw(){
  if(mousePressed){
    if(mouseX<50){
      if(mouseY>1*50 && mouseY<1*50+50) stroke(#FF0505);
      if(mouseY>2*50 && mouseY<2*50+50) stroke(#FFB005);
      if(mouseY>3*50 && mouseY<3*50+50) stroke(#D0FF05);
      if(mouseY>4*50 && mouseY<4*50+50) stroke(#05FF24);
      if(mouseY>5*50 && mouseY<5*50+50) stroke(#05DCFF);
      if(mouseY>6*50 && mouseY<6*50+50) stroke(#051BFF);
      if(mouseY>7*50 && mouseY<7*50+50) stroke(#7905FF);
      if(mouseY>8*50 && mouseY<8*50+50) stroke(#FF05EF);
    }else line(mouseX,mouseY,pmouseX,pmouseY);
  }
}


結合剛剛的粗細跟顏色的程式碼,程式碼如下

void setup(){
  size(500,500);
  rect(0,50,50,50);ellipse(25,25+50,1,1);
  rect(0,100,50,50);ellipse(25,25+100,2,2);
  rect(0,150,50,50);ellipse(25,25+150,3,3);
  rect(0,200,50,50);ellipse(25,25+200,4,4);
  rect(0,250,50,50);ellipse(25,25+250,5,5);
  rect(0,300,50,50);ellipse(25,25+300,6,6);
  rect(0,350,50,50);ellipse(25,25+350,7,7);
  rect(0,400,50,50);ellipse(25,25+400,8,8);
  fill(#FF0505);rect(450,50,50,50);
  fill(#FFB005);rect(450,100,50,50);
  fill(#D0FF05);rect(450,150,50,50);
  fill(#05FF24);rect(450,200,50,50);
  fill(#05DCFF);rect(450,250,50,50);
  fill(#051BFF);rect(450,300,50,50);
  fill(#7905FF);rect(450,350,50,50);
  fill(#FF05EF);rect(450,400,50,50);
}
void draw(){
  if(mousePressed){
    if(mouseX<50){
      if(mouseY>1*50 && mouseY<1*50+50) strokeWeight(1);
      if(mouseY>2*50 && mouseY<2*50+50) strokeWeight(2);
      if(mouseY>3*50 && mouseY<3*50+50) strokeWeight(3);
      if(mouseY>4*50 && mouseY<4*50+50) strokeWeight(4);
      if(mouseY>5*50 && mouseY<5*50+50) strokeWeight(5);
      if(mouseY>6*50 && mouseY<6*50+50) strokeWeight(6);
      if(mouseY>7*50 && mouseY<7*50+50) strokeWeight(7);
      if(mouseY>8*50 && mouseY<8*50+50) strokeWeight(8);
    }else if(mouseX>450){
      if(mouseY>1*50 && mouseY<1*50+50) stroke(#FF0505);
      if(mouseY>2*50 && mouseY<2*50+50) stroke(#FFB005);
      if(mouseY>3*50 && mouseY<3*50+50) stroke(#D0FF05);
      if(mouseY>4*50 && mouseY<4*50+50) stroke(#05FF24);
      if(mouseY>5*50 && mouseY<5*50+50) stroke(#05DCFF);
      if(mouseY>6*50 && mouseY<6*50+50) stroke(#051BFF);
      if(mouseY>7*50 && mouseY<7*50+50) stroke(#7905FF);
      if(mouseY>8*50 && mouseY<8*50+50) stroke(#FF05EF);
    }else line(mouseX,mouseY,pmouseX,pmouseY);
  }
}


沒有留言:

張貼留言