2024年10月14日 星期一

BK Week06 schulte

Processing 程式碼

畫出25*25方格 填上25個1
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);
  }
}


畫出25*25方格 填上25個1 但是只用兩個for迴圈
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);
      }
   }
}


用 array 讓數字隨機出現 但數字會重複
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);
      }
   }
}


讓數字不會重複出現
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);
    }
  }
}


當 mousePressed 時 格子要變色
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;
}


當 mousePressed 時 必須要按照數字順序按
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++;
  }
}


加上 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 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 " + (millis()-startT)/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++;
  }
}


加上 nf 讓計時有小數點
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 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),200, 550);
}
int want = 1;
void mousePressed() {
  int i = mouseY/100, j = mouseX/100;
  if (table[i][j]==want) {
    pressed[i][j] = 1;
    want++;
  }
}


讓程式執行更快
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--){ //shuffle演算法有點噁心
      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++];   
    }
  }
}
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),200, 550);
}
int want = 1;
void mousePressed() {
  int i = mouseY/100, j = mouseX/100;
  if (table[i][j]==want) {
    pressed[i][j] = 1;
    want++;
  }
}

沒有留言:

張貼留言