1.第一節課上課
舒爾特方格https://fr.wikipedia.org/wiki/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,50);
text("1",150,50);
text("1",250,50);
text("1",350,50);
text("1",450,50);
}
}
先用畫線的方式以及利用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++){
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);
}
}
}
改為利用for迴圈來畫線條以及畫數字
//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++){
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);
}
}
}
利用隨機亂數(random),陣列(array)來隨機生成數字,但是還不完整可能會有缺漏和重複的
2.第二節上課
//week06_5_schulte_table05_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++){
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;
}
左手I右手J 利用滑鼠按鍵來使點及的方格改變顏色
//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++){
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];//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++){
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,250,550);
}
int want=1;
void mousePressed(){
int i = mouseY/100,j=mouseX/100;
if(table[i][j]==want){
pressed[i][j] = 1;
want++;
}
}
增加計時器
//week06_8_schulte_table08_nf_millis_starT
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;
}
}
starT = millis();
}
int starT = 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()-starT)/1000.0,0,1),250,550);
}
int want=1;
void mousePressed(){
int i = mouseY/100,j=mouseX/100;
if(table[i][j]==want){
pressed[i][j] = 1;
want++;
}
}
利用nf來增加小數點,後面的0是小數點右邊有幾個0,1是要留小數點後幾位
3.第三節上課程式碼
//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++];
}
}
starT = millis();
}
int starT = 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()-starT)/1000.0,0,1),250,550);
}
int want=1;
void mousePressed(){
int i = mouseY/100,j=mouseX/100;
if(table[i][j]==want){
pressed[i][j] = 1;
want++;
}
}
把while改為隨機生成變數使他變得有效率
4.上傳github
沒有留言:
張貼留言