2023年11月9日 星期四

week09咻消失

 week09

09_1_keyboard_PImage_Image
PImage img;
void setup(){
  size(800,600);
  img = loadImage("keyboard.png");
}
void draw(){
  image(img,0,600-266);
}
09_2_keyboard_mouse_rect_x_y
PImage img;
void setup(){
  size(800,600);
  img = loadImage("keyboard.png");
  rectMode(CENTER);//用中心點,來畫四邊形
}
void draw(){
  background(#FFFFF2);//淡黃色,清背景
  fill(255,0,0,128);//半透明(128)的紅色
  image(img,0,600-266);
  rect(mouseX,mouseY,28,30,5); 
}
void mousePressed(){
  println(mouseX,mouseY);//定位、印出mouse座標
}
rect(mouseX,mouseY,28,30);
rect(mouseX,mouseY,28,30,5);畫出有弧度的四邊形
09_3_keyboard_pos_2d_array
PImage img;
int [][] pos = {{92,491},{245,525},{179,525},{162,490},{152,456},{195,490},{230,490},
{265,490},{323,457},{298,490},{332,490},{366,491},{315,525},{280,524},{358,457},
{392,456},{83,457},{186,456},{128,490},{220,456},{288,456},{212,524},{117,457},
{143,524},{254,457},{109,524}};
用notepad++貼上用滑鼠點的座標位置,用取代整理成陣列
void setup(){   size(800,600);   img = loadImage("keyboard.png");   rectMode(CENTER);//用中心點,來畫四邊形 } void draw(){   background(#FFFFF2);//淡黃色,清背景   fill(0,255,0,128);//半透明(128)的綠色   image(img,0,600-266);   rect(mouseX,mouseY,28,30,5);   for(int i=0;i<26;i++){     rect(pos[i][0],pos[i][1],28,30,5);   } } void mousePressed(){   println(mouseX,mouseY);//定位、印出mouse座標 }
09_4_keyboard_keyPressed_keyReleased_pressed
PImage img;
int [][] pos = {{92,491},{245,525},{179,525},{162,490},{152,456},{195,490},{230,490},
{265,490},{323,457},{298,490},{332,490},{366,491},{315,525},{280,524},{358,457},
{392,456},{83,457},{186,456},{128,490},{220,456},{288,456},{212,524},{117,457},
{143,524},{254,457},{109,524}};
void setup(){
  size(800,600);
  img = loadImage("keyboard.png");
  rectMode(CENTER);//用中心點,來畫四邊形
}
void draw(){
  background(#FFFFF2);//淡黃色,清背景
  image(img,0,600-266);
  fill(255,0,0,128);//半透明(128)的紅色
  rect(mouseX,mouseY,28,30,5);
  fill(0,255,0,128);//半透明(128)的綠色
  for(int i=0;i<26;i++){
    if(pressed[i]) rect(pos[i][0],pos[i][1],28,30,5);
  }
}
boolean [] pressed = new boolean[26];//Java的陣列宣告,都是0或false
void keyPressed(){
  if(key>='a' && key<='z') pressed[key-'a'] = true;
}
void keyReleased(){
  if(key>='a' && key<='z') pressed[key-'a'] = false;
}
09_5_keyboard_String_typing
PImage img;
int [][] pos = {{92,491},{245,525},{179,525},{162,490},{152,456},{195,490},{230,490},
{265,490},{323,457},{298,490},{332,490},{366,491},{315,525},{280,524},{358,457},
{392,456},{83,457},{186,456},{128,490},{220,456},{288,456},{212,524},{117,457},
{143,524},{254,457},{109,524}};
void setup(){
  size(800,600);
  img = loadImage("keyboard.png");
  rectMode(CENTER);//用中心點,來畫四邊形
}
void draw(){
  background(#FFFFF2);//淡黃色,清背景
  image(img,0,600-266);
  fill(255,0,0,128);//半透明(128)的紅色
  rect(mouseX,mouseY,28,30,5);
  fill(0,255,0,128);//半透明(128)的綠色
  for(int i=0;i<26;i++){
    if(typing.charAt(0)-'a'==i) rect(pos[i][0],pos[i][1],28,30,5);
  }
  fill(0);//黑色的字
  textSize(50);
  text(typing,50,50);
  text(typing.charAt(0),50,100);//現在要打的字,是typing.charA(0)
}
String typing ="printf";
boolean [] pressed = new boolean[26];//Java的陣列宣告,都是0或false
void keyPressed(){
  if(key>='a' && key<='z') pressed[key-'a'] = true;
}
void keyReleased(){
  if(key>='a' && key<='z') pressed[key-'a'] = false;
}
09_6_keyboard_String_typing_typed
PImage img;
int [][] pos = {{92,491},{245,525},{179,525},{162,490},{152,456},{195,490},{230,490},
{265,490},{323,457},{298,490},{332,490},{366,491},{315,525},{280,524},{358,457},
{392,456},{83,457},{186,456},{128,490},{220,456},{288,456},{212,524},{117,457},
{143,524},{254,457},{109,524}};
void setup(){
  size(800,600);
  img = loadImage("keyboard.png");
  rectMode(CENTER);//用中心點,來畫四邊形
}
void draw(){
  background(#FFFFF2);//淡黃色,清背景
  image(img,0,600-266);
  fill(255,0,0,128);//半透明(128)的紅色
  rect(mouseX,mouseY,28,30,5);
  fill(0,255,0,128);//半透明(128)的綠色
  for(int i=0;i<26;i++){
    if(typing.charAt(ID)-'a'==i) rect(pos[i][0],pos[i][1],28,30,5);
  }
  textSize(50);
  fill(0);//黑色的字
  text(typing,50,50);//要打的字
  fill(255,0,0);//紅色
  text(typed+typing.charAt(ID),50,100);//現在要打的字,是typing.charA(ID)
  fill(0);//再用黑色,秀出已經打好的字
  text(typed,50,100);//已經打好的字
}
String typing ="printfprintfprintf";
String typed = "";//一開始打了0個字
int ID = 0;//第幾個字母要被打
boolean [] pressed = new boolean[26];//Java的陣列宣告,都是0或false
void keyPressed(){
  if(key>='a' && key<='z') {
    pressed[key-'a'] = true;
    typed += key;
    ID++;
  }
}
void keyReleased(){
  if(key>='a' && key<='z') pressed[key-'a'] = false;
}

09_7_keyboard_if_wrong_noting
void keyPressed(){
  if(key>='a' && key<='z'){ 
    if(key == typing.charAt(ID)){ //字母正確,就往下
      pressed[key-'a'] = true;
      typed += key;
      ID++;
  }else{
      background(255,0,0);
    }
  }
}
void keyReleased(){
  if(key>='a' && key<='z') pressed[key-'a'] = false;
}
09_8_keyboard_ID_not_in_length
原本的程式打到最後一個字會超過陣列大小
PImage
img; int [][] pos = {{92,491},{245,525},{179,525},{162,490},{152,456},{195,490},{230,490}, {265,490},{323,457},{298,490},{332,490},{366,491},{315,525},{280,524},{358,457}, {392,456},{83,457},{186,456},{128,490},{220,456},{288,456},{212,524},{117,457}, {143,524},{254,457},{109,524}}; void setup(){   size(800,600);   img = loadImage("keyboard.png");   rectMode(CENTER);//用中心點,來畫四邊形 } void draw(){   background(#FFFFF2);//淡黃色,清背景   image(img,0,600-266);   fill(255,0,0,128);//半透明(128)的紅色   rect(mouseX,mouseY,28,30,5);   fill(0,255,0,128);//半透明(128)的綠色   for(int i=0;i<26;i++){     if(ID<typing.length() && typing.charAt(ID)-'a'==i) rect(pos[i][0],pos[i][1],28,30,5);   }   textSize(50);   fill(0);//黑色的字   text(typing,50,50);//要打的字   fill(255,0,0);//紅色   if(ID<typing.length()) text(typed+typing.charAt(ID),50,100);//現在要打的字,是typing.charA(ID)   fill(0);//再用黑色,秀出已經打好的字   text(typed,50,100);//已經打好的字 } String typing ="printfprintfprintf"; String typed = "";//一開始打了0個字 int ID = 0;//第幾個字母要被打 boolean [] pressed = new boolean[26];//Java的陣列宣告,都是0或false void keyPressed(){   if(key>='a' && key<='z'){     if(ID<typing.length() && key == typing.charAt(ID)){//字母正確,就往下       pressed[key-'a'] = true;       typed += key;       ID++;   }else{       background(255,0,0);//畫面紅色閃一下背景     }   } } void keyReleased(){   if(key>='a' && key<='z') pressed[key-'a'] = false; }
修改後可以打到最後一個字,程式不會壞掉
09_9_keyboard_space_many_words
String typing ="printf is a function";
String typed = "";//一開始打了0個字
int ID = 0;//第幾個字母要被打
boolean [] pressed = new boolean[26];//Java的陣列宣告,都是0或false
void keyPressed(){ 
    if(ID<typing.length() && key == typing.charAt(ID)){//字母正確,就往下
      if(key>='a' && key<='z'){ 交換順序
        pressed[key-'a'] = true;
        typed += key;
        ID++;
  }else if(key==' '){ 空格
    typed += key;
    ID++;
  }else{
      background(255,0,0);//畫面紅色閃一下背景
    }
   }
}
void keyReleased(){
  if(key>='a' && key<='z') pressed[key-'a'] = false;
}
可以按空格

沒有留言:

張貼留言