week06_1_schulte_table01_line_fill_textSize_text_for
預備製作舒爾特方格,利用最簡易費力的方式。
void setup() {
size(500, 500);
}
void draw() {
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);
}
}week06_2_schulte_table02_for_for_fill_rect_fill_text我們再利用雙重的FOR迴圈跟規律,來處理數字。void setup() {
size(500, 500);
textSize(50);
textAlign(CENTER,CENTER);
}
void draw() {
background(#FFFFF2);
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_3_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);
}
}
}
week06_4_schulte_table04_no_repeat_used_array_while先設定亂數的陣列數量,使用過的用uesd[]陣列來記錄。int [] used = new int[26];//0....25
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_void_mousePressed_pressed_i_j接下來要讓滑鼠可以點下數字,然後利用顏色表示被滑鼠點擊過的數字。int [] used = new int[26];//0....25
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];//0....25
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增加一下計時得部分,用millis()處理時間。int [] used = new int[26];//0....25
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("Times: "+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_8_schulte_table08_nf_millis_startT我想要在秒數的地方顯示小數點,利用nf()去處理。int [] used = new int[26];//0....25
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;
}
}
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("Times: "+nf((millis()- startT)/1000.0, 3, 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++;
}
}
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("Times: "+nf((millis()- startT)/1000.0, 0, 1),
200,550);
}
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++;
}
}
沒有留言:
張貼留言