2025年2月27日 星期四

12750530李忻穎_week02

作業1:畫出3個四邊形

 size(400,400);//視窗大小

background(255);//白色的背景

fill(238);//填充的色彩

noStroke();//不要畫框線

rect(0,0,20,20);//四邊形 rectangle,x,y,w,h

rect(0,40,20,20);

rect(0,80,20,20);











作業2:

//week02_2_for_for_if_rect

size(400,400);

background(255);

fill(238);

noStroke();

float s=400/14; //計算每個格子大小

 for(int i=0;i<14;i++){ //左手i 對應y座標

   for(int j=0;j<14;j++){ //右手j 對應x座標

     //rect(j*s,i*s,s,s); //先試一下位置

     if( i+j%2==0) rect(j*s,i*s,s,s);

   }//下面才是真的程式碼 開始執行程式

 }









作業3:用紅色線條畫畫

//week02_3_void_setup_void_draw_stroke_if_mousePressed_line

void setup(){

  size(400,400);

  background(255);

  fill(238);

  noStroke();

  float s=400/14; //計算 每個格子的大小

  for(int i=0; i<14; i++){ //左手i 對應y座標

    for(int j=0; j<14; j++){ //右手j 對應x座標

      //rect(j*s,i*s,s,s); //先試一下位置

      if( i+j%2==0) rect(j*s,i*s,s,s);

    }  //下面才是真的程式碼 開始執行程式

  }

}

void draw(){

  stroke(255,0,0); //每秒畫60次

  if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY);

  //如果mouse 按下去,就畫線,給兩個座標(現在的mouse和之前的mouse)

}










作業4:

//week02_4_PImage_loadImage_background_fill_println

//新的開始, 要描圖

PImage img;

void setup(){

  size(400,400);

  img=loadImage("cute.png");

}//記得把圖檔,(像上週一樣)拉到程式碼裡

void draw(){

  background(img);

  fill(255,mouseX);//半透明的色彩 白色, alpha值是128

  println(mouseX); //把mouseX的值,在下面[小黑]印出來

  rect(0,0,400,400); //畫超大四邊形,全部蓋住

}


作業5:

  • 錯誤版本:

//week02_5a_combine_02_4and02_3_bad

//要描圖,卻出錯

PImage img;

void setup(){

  size(400,400);

  img=loadImage("cute.png");

}//記得把圖檔,(像上週一樣)拉到程式碼裡

void draw(){

  background(img);

  fill(255,mouseX);//半透明的色彩 白色, alpha值是128

  rect(0,0,400,400); //畫超大四邊形,全部蓋住

  //上面是week02_4,下面是week02_3

  stroke(255,0,0); //紅色的線

  if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY);

}














  • 正確版:

//week02_5_ArrayList_Integer_new_for_size_get_add_mouseDragged
ArrayList<Integer> x= new ArrayList<Integer>();
ArrayList<Integer> y= new ArrayList<Integer>();
PImage img;
void setup(){
  size(400,400);
  img=loadImage("cute.png");
}//記得把圖檔,(像上週一樣)拉到程式碼裡
void draw(){
  background(img);
  fill(255,200);//半透明的色彩 白色, alpha值是128
  rect(0,0,400,400); //畫超大四邊形,全部蓋住
  //上面是week02_4,下面是week02_3
  for(int i=1; i<x.size(); i++){
    line(x.get(i), y.get(i), x.get(i-1), y.get(i-1));
  }
}
void mouseDragged(){
  x.add(mouseX);
  y.add(mouseY);
}









作業6:

//week02_6_ArrayList_ArrayList_Integer_for_for_ArrayList_new_add

//想要有很多段,不要[一筆畫]一直接著畫

ArrayList<Integer>x,y; //先有兩個還沒準備好的資料結構

ArrayList<ArrayList<Integer>> xx=new ArrayList<ArrayList<Integer>>();

ArrayList<ArrayList<Integer>> yy=new ArrayList<ArrayList<Integer>>();

PImage img;

void setup(){

  size(400,400);

  img=loadImage("cute.png");

}//記得把圖檔,(像上週一樣)拉到程式碼裡

void draw(){

  background(img);

  fill(255,200);//半透明的色彩 白色, alpha值是128

  rect(0,0,400,400); //畫超大四邊形,全部蓋住

  //上面是week02_4,下面是week02_3

  for(int I=0; I<xx.size(); I++){ //大寫I對應大的資料結構

    ArrayList<Integer> x=xx.get(I); //取出裡面小的資料結構

    ArrayList<Integer> y=yy.get(I);

    for(int i=1; i<x.size(); i++){ //小的,再照舊畫

      line(x.get(i), y.get(i), x.get(i-1), y.get(i-1));

    }

  }

}

void mouseDragged(){

  x.add(mouseX);

  y.add(mouseY);

}

void mousePressed(){ //滑鼠按下去,建「新的」資料結構

  x=new ArrayList<Integer>(); xx.add(x);

  y=new ArrayList<Integer>(); yy.add(y);

}


作業7:按住「s鍵」一邊瞄邊,會跑出座標

//week02_7

//想要把畫出來的座標,變成我們的程式碼!!!

ArrayList<Integer>x, y; //先有兩個還沒準備好的資料結構

ArrayList<ArrayList<Integer>> xx=new ArrayList<ArrayList<Integer>>();

ArrayList<ArrayList<Integer>> yy=new ArrayList<ArrayList<Integer>>();

PImage img;

void setup() {

  size(400, 400);

  img=loadImage("cute.png");

}//記得把圖檔,(像上週一樣)拉到程式碼裡

void draw() {

  background(img);

  fill(255, 200);//半透明的色彩 白色, alpha值是128

  rect(0, 0, 400, 400); //畫超大四邊形,全部蓋住

  //上面是week02_4,下面是week02_3

  for (int I=0; I<xx.size(); I++) { //大寫I對應大的資料結構

    ArrayList<Integer> x=xx.get(I); //取出裡面小的資料結構

    ArrayList<Integer> y=yy.get(I);

    for (int i=1; i<x.size(); i++) { //小的,再照舊畫

      line(x.get(i), y.get(i), x.get(i-1), y.get(i-1));

    }

  }

}

void keyPressed() {  //小心,注音輸入法,會卡住按鍵,要換英文輸入

  if (key=='s'||key=='S') { //如果按下英文的小寫or大寫 想save存檔的話

    for (int I=0; I<xx.size(); I++) { //大寫I對應大的資料結構

      ArrayList<Integer> x=xx.get(I); //取出裡面小的資料結構

      ArrayList<Integer> y=yy.get(I);

      println("beginShape();"); //beginShape();

      for (int i=1; i<x.size(); i++) { //小的,再照舊畫

        println("vertex("+x.get(i)+ ","+ y.get(i) + ");" );

      }//改在keyPressed()按下s或

      println("endShape();"); //endShape();

    }

  }

}

void mouseDragged() {

  //println("vertex(mouseX,mouseY);");

  //println("vertex("+mouseX+ ","+ mouseY + ");" ); //不要在這裡印

  x.add(mouseX);

  y.add(mouseY);

}

void mousePressed() { //滑鼠按下去,建「新的」資料結構

  x=new ArrayList<Integer>();

  xx.add(x);

  y=new ArrayList<Integer>();

  yy.add(y);

}




沒有留言:

張貼留言