2025年2月27日 星期四

12753062_week02

 // week02_1_fill_noStroke_rect

size(400,400); //視窗大小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);


// week02_2_for_for_if_rect
size(400,400); //視窗大小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(0,i*s*2,s,s); //先試一下位置
    if ( (i+j)%2==0) rect(j*s,i*s,s,s);
  } // 下面才是真的程式碼, 完成畫格子的任務
}
// week02_3_void_setup_void_draw_stroke_if_mousePressed_line
void setup(){ //一開始,設定一次(貼上剛剛week02 2的程式)
    size(400,400); //視窗大小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(0,i*s*2,s,s); //先試一下位置
        if ( (i+j)%2==0) rect(j*s,i*s,s,s);
      } // 下面才是真的程式碼, 完成畫格子的任務
    }
}
void draw(){ //每次畫60秒
  stroke(255,0,0); //紅色的線
  if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY);
} //如果mouse按下去,就畫線, 給兩個座標: 現在mouse 和 之前的mouse
// 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);
    rect(0,0,400,400); //畫超大的四邊形,全部蓋住
}

// week02_5a_combine_02_4_and_02_3_bad
// 要描圖, 卻出錯
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); //畫超大的四邊形,全部蓋住
    
    stroke(255,0,0); //紅色的線
    if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY);
}


// week02_5_ArrayList_Integer_new_for_size_get_addmouseDragged
// 要利用資料結構, 把歷史軌跡 記起來
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
    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);
}

// week02_6_ArrayList_Interger_for_for_mouse
// 想要有更多段, 不要[一筆畫] 一直接著畫
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
    for(int I=0;I<xx.size();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);
}
//week02-7_
ArrayList<Integer> x, y; // 先有2個(還沒準備好)的(小的)資造結構,等mousePressed再新增準備
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, 下面用迴圈,從資料結構取出來
  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大寫s想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或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);
}










沒有留言:

張貼留言