2025年2月27日 星期四

12750653-week02

 ctrl e ctrl r調整圖片大小



//week02-1
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...
size(400,400);
background(255);
fill(238);
noStroke();
float s=400/14;
for(int i=0;i<14;i++){
  for(int j=1;j<14;j++){
  //rect(0,i*s*2,s,s);
  //rect(j*s*2,0,s,s);
  if((i+j)%2==0) rect(j*s,i*s,s,s);
  }
}


//week02-3
void setup(){
  size(400,400);
  background(255);
  fill(238);
  noStroke();
  float s=400/14;
  for(int i=0;i<14;i++){
    for(int j=1;j<14;j++){
    //rect(0,i*s*2,s,s);
    //rect(j*s*2,0,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 img;
void setup(){
  size(400,400);
  img = loadImage("0227.png");
}//記得把圖檔拉入程式中
void draw(){
  background(img);
  fill(255,200);//半透明的白色,alpha值為128
  rect(0,0,400,400);
  stroke(0,100,200);//設定顏色
  if(mousePressed) line(mouseX,mouseY,pmouseX,pmouseY);
}

//week02-5a 要描圖卻出錯
PImage img;
void setup(){
  size(400,400);
  img=loadImage("0227.png");
}//記得把圖檔像上周一樣拉到程式裡
void draw(){
  background(img);
  fill(255,200);//半透明的色彩 白色 alpha值是128
  //println(mouseX);//把mouseX的值 在下面小黑印出來
  rect(0,0,400,400);//畫超大的四邊形 全部蓋住
  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("0227.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);
}

//week02-6_可以讓線條分開

// week02_6
// 想要有很多段,不要「一筆畫」一直接著畫
ArrayList<Integer> x,y; // 先有兩個「還沒準備好」的(小的)資料結構,等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("0227.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);
}

//week02_7_keyPressed_if_key_s_for_for_println_vertex_beginShape
ArrayList<Integer> x,y;//先有兩個還沒準備好的資料結構,等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("0227.png");
}//記得把圖檔拉入程式中
void draw(){
  background(img);
  fill(255,200);//半透明的白色,alpha值為128
  rect(0,0,400,400);
  //上面是week02_4,下面用迴圈從資料結構取出來
    for(int I=1;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'){
    for(int I=1;I<xx.size();I++)//I對應大的資料結構
    {
      ArrayList<Integer> x = xx.get(I);//取出小的資料結構
      ArrayList<Integer> y = yy.get(I);
      println("beginShape();");
      for(int i=1;i<x.size();i++)//小的,再照舊畫
      {
        println("  vertex(" +x.get(i)+ "," +y.get(i)+ ");");
      }//改在keyPressed()按下s或S時全部印
      println("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);
}










沒有留言:

張貼留言