2024年10月14日 星期一

Week06 舒爾特方格

今天第一個程式:

第一個:
void setup()
{
  size(500, 500);
}
void draw()
{
  background(255, 255, 255);
  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 i=50; i<=450; i+=100)
  {
    text("1", 50, i);
    text("1", 150, i);
    text("1", 250, i);
    text("1", 350, i);
    text("1", 450, i);
  }
}

第二個(用for迴圈把前面很長的程式縮短):
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);
    }
  }
}

第三個(用2D矩陣亂數填數字,但是會有重複):
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);
    }
  }
}
第四個(用另外一個陣列去檢查25個數字有沒有重複,檢查完再放進2D陣列裡面):
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);
    }
  }
}

第五個(加入滑鼠互動,滑鼠點擊完後方格會變色):
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;
}

第六個(用新的陣列去檢查[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);
    }
  }
}
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];
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+" second",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];
int [][]table=new int[5][5];
void setup()
{
  size(500, 600);
  textSize(40);
  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=0;
}
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)+" second", 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];
int [][]table=new int[5][5];
void setup()
{
  size(500, 600);
  textSize(40);
  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=0;
}
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)+" second", 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++;
    }
  }
}



快捷鍵:

ctrl+R 執行

ctrl+T 自動排版

ctrl+N 新檔案


Git 指令

cd desktop

git clone https://github.com/mickey1132/2024-Interaction

cd 2024-Interaction

git status

git add .

git status

git config --global user.email mickylin1132@gmail.com

git config --global user.name mickey1132

git commit -m WeekXX

git push

沒有留言:

張貼留言