2024年10月14日 星期一

聽均一席話如聽一席話 Week06 11160712

 //week06_01_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){
    for(int x=50;x<=450;x+=100)
    text("1",x,y);
  }
}
生成一個5X5的格子然後每個裡面都有數字1


//week06_01_schulte_table02
void setup(){
  size(500,500);
  textSize(50);
  textAlign(CENTER,CENTER);
}
void draw(){
  for(int i=0;i<5;i++){
    for(int j=0;j<5;j++){
      fill(255);rect(j*100,i*100,100,100);
      fill(0);text("1",50+j*100,50+i*100);
    }
  }
}
簡短版本

//week06_03_schulte_table03_random_array
int[][]table = new int[5][5];
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++){
    for(int j=0;j<5;j++){
      fill(255);rect(j*100,i*100,100,100);
      fill(0);text(""+table[i][j],50+j*100,50+i*100);
    }
  }
}
增加1到25的變數,但會有重複的數字

//week06_4_schulte_table04_no_repeat_used_array_while
int [] used = new int[26];
int [][] table= new int[5][5];
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++){
    for(int j=0;j<5;j++){
      fill(255);rect(j*100,i*100,100,100);
      fill(0);text(""+table[i][j],50+j*100,50+i*100);
    }
  }
}


//week06_5_schulte_table05_mousePressed_i_j
int [] used = new int[26];
int [][] table= new int[5][5];
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++){
    for(int j=0;j<5;j++){
      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;
   
  
}
點數字會變黑,但就算沒按照順序也可


//week06_6_schulte_table06_int_want_1_if_table_i_j_want
int [] used = new int[26];
int [][] table= new int[5][5];
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++){
    for(int j=0;j<5;j++){
      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++;
  }
}


增加了要按照順序才會變黑的功能

//week06_7_schulte_table07_millis
int [] used = new int[26];
int [][] table= new int[5][5];
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++){
    for(int j=0;j<5;j++){
      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,200,550);
}
int want =1;
void mousePressed(){
  int i = mouseY/100,j = mouseX/100;
  if(table[i][j]==want){
    pressed[i][j] = 1;
    want++;
  }
}


增加計時功能但部會在結束時自動暫停

//week06_9_schulte_table09_mousePressed_crash_if_protect_shuffle_random
int [][] table= new int[5][5];
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++){
    for(int j=0;j<5;j++){
      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),200,550);
}
int want =1;
void mousePressed(){
  int i = mouseY/100,j = mouseX/100;
  if(table[i][j]==want){
    pressed[i][j] = 1;
    want++;
  }
}


解決了點計時那邊的時候會當掉的bug

沒有留言:

張貼留言