2024年10月14日 星期一

SY-BlingBangBang week06 Table_de_Schulte

  [TODO]

上課內容:

Table_de_Schulte

// week06_1_schulte_table01_line_fill_textSize_text_for
void setup(){
  size(500,500);
}
void draw(){
  background(#FFFFF2);
  line(0,100,500,100);
  line(0,200,500,200);
  line(0,300,500,300);
  line(0,400,500,400);
  
  line(100,0,100,500);
  line(200,0,200,500);
  line(300,0,300,500);
  line(400,0,400,500);
  fill(0); //黑色的字
  textSize(50);
  textAlign(CENTER,CENTER);
  for(int y=50; y<=450; y+=100){
    text("1",50,y);
    text("1",150,y);
    text("1",250,y);
    text("1",350,y);
    text("1",450,y);
  }
}


Table_de_Schulte(for迴圈)
// week06_2_schulte_table02_for_for_fill_rect_fill_text
void setup(){
  size(500,500);
  textSize(50);
  textAlign(CENTER,CENTER);
}
void draw(){
  for(int i=0; i<5; i++){ //對y座標
    for(int j=0; j<5; j++){ //對x座標
      fill(255); rect(j*100, i*100, 100, 100);
      fill(0); text("1", 50+j*100, 50+i*100);
    }
  }
}



Table_de_Schulte(random變數,但會有重複的數字)
// week06_3_schulte_table03_random_2d_array_table
int [][] table = new int[5][5]; //Java的陣列宣告
void setup(){
  size(500,500);
  textSize(50);
  textAlign(CENTER,CENTER);
  for(int i=0; i<5; i++){ 
    for(int j=0; j<5; j++){ 
      table[i][j] = int(random(1,26)); //方法不對
    }
  }
}
void draw(){
  for(int i=0; i<5; i++){ //對y座標
    for(int j=0; j<5; j++){ //對x座標
      fill(255); rect(j*100, i*100, 100, 100);
      fill(0); text(""+table[i][j], 50+j*100, 50+i*100);
    }
  }
}



Table_de_Schulte(修:加上while判斷)
// week06_4_schulte_table04_no_repeat_used_array_while
int [] used = new int[26]; //0...25 共26個
int [][] table = new int[5][5]; //Java的陣列宣告
void setup(){
  size(500,500);
  textSize(50);
  textAlign(CENTER,CENTER);
  for(int i=0; i<5; i++){ 
    for(int j=0; j<5; j++){ 
      int now = int(random(1,26));
      while(used[now]==1) now = int(random(1,26));
      table[i][j] = now;
      used[now] = 1;
    }
  }
}
void draw(){
  for(int i=0; i<5; i++){ //對y座標
    for(int j=0; j<5; j++){ //對x座標
      fill(255); rect(j*100, i*100, 100, 100);
      fill(0); text(""+table[i][j], 50+j*100, 50+i*100);
    }
  }
}


Table_de_Schulte(按下去,格子會變色)
// week06_5_schulte_table05_void_mousePressed_pressed_i_j
int [] used = new int[26]; //0...25 共26個
int [][] table = new int[5][5]; //Java的陣列宣告
void setup(){
  size(500,500);
  textSize(50);
  textAlign(CENTER,CENTER);
  for(int i=0; i<5; i++){ 
    for(int j=0; j<5; j++){ 
      int now = int(random(1,26));
      while(used[now]==1) now = int(random(1,26));
      table[i][j] = now;
      used[now] = 1;
    }
  }
}
int [][] pressed = new int[5][5];
void draw(){
  for(int i=0; i<5; i++){ //對y座標
    for(int j=0; j<5; j++){ //對x座標
      if(pressed[i][j]==1) fill(128);
      else fill(255);
      rect(j*100, i*100, 100, 100);
      fill(0); text(""+table[i][j], 50+j*100, 50+i*100);
    }
  }
}
void mousePressed(){
  int i= mouseY/100, j= mouseX/100;
  pressed[i][j] = 1;
}


Table_de_Schulte(只能照順序按)
// week06_6_schulte_table06_int_want_1_if_table_i_j_want
int [] used = new int[26]; //0...25 共26個
int [][] table = new int[5][5]; //Java的陣列宣告
void setup(){
  size(500,500);
  textSize(50);
  textAlign(CENTER,CENTER);
  for(int i=0; i<5; i++){ 
    for(int j=0; j<5; j++){ 
      int now = int(random(1,26));
      while(used[now]==1) now = int(random(1,26));
      table[i][j] = now;
      used[now] = 1;
    }
  }
}
int [][] pressed = new int[5][5];
void draw(){
  for(int i=0; i<5; i++){ //對y座標
    for(int j=0; j<5; j++){ //對x座標
      if(pressed[i][j]==1) fill(128);
      else fill(255);
      rect(j*100, i*100, 100, 100);
      fill(0); text(""+table[i][j], 50+j*100, 50+i*100);
    }
  }
}
int want=1; //希望你按的數字
void mousePressed(){
  int i= mouseY/100, j= mouseX/100;
  if(table[i][j]==want){
    pressed[i][j] = 1;
    want++;
  }
}


Table_de_Schulte(正數計時器)
// week06_7_schulte_table07_millis
int [] used = new int[26]; //0...25 共26個
int [][] table = new int[5][5]; //Java的陣列宣告
void setup(){
  size(500,600); //留白放時間
  textSize(50);
  textAlign(CENTER,CENTER);
  for(int i=0; i<5; i++){ 
    for(int j=0; j<5; j++){ 
      int now = int(random(1,26));
      while(used[now]==1) now = int(random(1,26));
      table[i][j] = now;
      used[now] = 1;
    }
  }
}
int [][] pressed = new int[5][5];
void draw(){
  background(#FFFFF2);
  for(int i=0; i<5; i++){ //對y座標
    for(int j=0; j<5; j++){ //對x座標
      if(pressed[i][j]==1) fill(128);
      else fill(255);
      rect(j*100, i*100, 100, 100);
      fill(0); text(""+table[i][j], 50+j*100, 50+i*100);
    }
  }
  text(" You used "+millis()/1000,250,550); //計時器
}
int want=1; //希望你按的數字
void mousePressed(){
  int i= mouseY/100, j= mouseX/100;
  if(table[i][j]==want){
    pressed[i][j] = 1;
    want++;
  }
}


Table_de_Schulte(正數計時器,加上小數點)
// week06_8_schulte_table08_nf_millis_startT
int [] used = new int[26]; //0...25 共26個
int [][] table = new int[5][5]; //Java的陣列宣告
void setup(){
  size(500,600); //留白放時間
  textSize(50);
  textAlign(CENTER,CENTER);
  for(int i=0; i<5; i++){ 
    for(int j=0; j<5; j++){ 
      int now = int(random(1,26));
      while(used[now]==1) now = int(random(1,26));
      //比較浪費時間,會一直"重挑"亂數
      table[i][j] = now;
      used[now] = 1;
    }
  }
  startT = millis(); //記錄你開始的時間
}
int startT = 0;
int [][] pressed = new int[5][5];
void draw(){
  background(#FFFFF2);
  for(int i=0; i<5; i++){ //對y座標
    for(int j=0; j<5; j++){ //對x座標
      if(pressed[i][j]==1) fill(128);
      else fill(255);
      rect(j*100, i*100, 100, 100);
      fill(0); text(""+table[i][j], 50+j*100, 50+i*100);
    }
  }
  text(" You used "+ nf((millis()-startT)/1000.0, 0, 1),250,550); //計時器
  //nf() --> 轉換成字串  0, 1 的 0--> 代表小數點前的位數
}
int want=1; //希望你按的數字
void mousePressed(){
  int i= mouseY/100, j= mouseX/100;
  if(table[i][j]==want){
    pressed[i][j] = 1;
    want++;
  }
}


Table_de_Schulte(快速排序、防止點到時間欄就當機)
// week06_9_schulte_table09_mousepressed_crash_if_protect_shuffle_random
int [] used = new int[26]; //0...25 共26個
int [][] table = new int[5][5]; //Java的陣列宣告
void setup(){
  size(500,600); //留白放時間
  textSize(50);
  textAlign(CENTER,CENTER);
  int []numbers = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
  for(int i=numbers.length-1; i>0; i--){ 
    int j = int(random(i+1)); //隨機挑選一個數字
    //交換位置
    int temp = numbers[i];
    numbers[i] = numbers[j];
    numbers[j] = temp;
  }
  int index=0;
  for(int i=0; i<5; i++){ 
    for(int j=0; j<5; j++){ 
      table[i][j] = numbers[index++];
    }
  }
  startT = millis(); //記錄你開始的時間
}
int startT = 0;
int [][] pressed = new int[5][5];
void draw(){
  background(#FFFFF2);
  for(int i=0; i<5; i++){ //對y座標
    for(int j=0; j<5; j++){ //對x座標
      if(pressed[i][j]==1) fill(128);
      else fill(255);
      rect(j*100, i*100, 100, 100);
      fill(0); text(""+table[i][j], 50+j*100, 50+i*100);
    }
  }
  text(" You used "+ nf((millis()-startT)/1000.0, 0, 1),250,550); //計時器
  //nf() --> 轉換成字串  0, 1 的 0--> 代表小數點前的位數
}
int want=1; //希望你按的數字
void mousePressed(){
  int i= mouseY/100, j= mouseX/100;
  if(i>=0 && i<5 && i>=0 && i<5){
    if(table[i][j]==want){
      pressed[i][j] = 1;
      want++;
    }
  }



沒有留言:

張貼留言