2023年11月9日 星期四

o.O week09

week09_1_keyboard_PImage_image

374=圖片的高度 讓這張照片貼齊底部

week09_2_keyboard_mouse_rect_x_y

用出一個方塊調整跟按鍵一樣大小

fill(255,0,0, 128); 128=透明度



week09_3_keyboard_pos_2d_array

按下滑鼠小黑視窗會顯示座標
把座標複製到notepad++ 
把,取代空格   },{取代換行
把字母按鍵都標出來


week09_4_keyboard_keyPressed_keyRelease_pressed 

按下字母對應字母方塊會變綠色

PImage img;

int [][] pos ={{130,444},{372,503},{265,503},{240,443},{225,384},{292,443},{345,442},{400,443},{493,383},{454,443},{509,443},{560,442},{481,503},{427,503},{548,384},{601,383},{117,385},{279,384},{187,442},{332,383},{439,385},{320,503},{171,383},{212,502},{387,385},{158,502}};

void setup(){

  size(800,600);

  img = loadImage("keyboard.jpg");

  rectMode(CENTER);

}

void draw(){

  background(#FFFFF2);

  image(img,0,600-374);

  fill(255,0,0,128);

  rect(mouseX,mouseY,45,50,5);

  fill(0,255,0,128);

  for(int i=0;i<26;i++){

    if(pressed[i])rect(pos[i][0],pos[i][1],45,50,5);

  }

}

boolean [] pressed = new boolean[26]; 

void keyPressed(){

  if(key>='a'&&key<='z')pressed[key-'a']=true; //按下

}

void keyReleased(){

  if(key>='a'&&key<='z')pressed[key-'a']=false; //沒有按下

}

week09_5_keyboard_String_typing 

顯示現在要打的字
PImage img;
int [][] pos ={{130,444},{372,503},{265,503},{240,443},{225,384},{292,443},{345,442},{400,443},{493,383},{454,443},{509,443},{560,442},{481,503},{427,503},{548,384},{601,383},{117,385},{279,384},{187,442},{332,383},{439,385},{320,503},{171,383},{212,502},{387,385},{158,502}};
void setup(){
  size(800,600);
  img = loadImage("keyboard.jpg");
  rectMode(CENTER);
}
void draw(){
  background(#FFFFF2);
  image(img,0,600-374);
  fill(255,0,0,128);
  rect(mouseX,mouseY,45,50,5);
  fill(0,255,0,128);
  for(int i=0;i<26;i++){
     if(typing.charAt(0)-'a' == i)rect(pos[i][0], pos[i][1],45,50,5);//現在要打的字是typing.charA(0)
    if(pressed[i])rect(pos[i][0],pos[i][1],45,50,5);
  }
  fill(0); //黑字
  textSize(50); //50號字
  text(typing, 50, 50); 
  text(typing.charAt(0), 50, 100);
}
String typing = "printf";
boolean [] pressed = new boolean[26]; 
void keyPressed(){
  if(key>='a'&&key<='z')pressed[key-'a']=true; //按下
}
void keyReleased(){
  if(key>='a'&&key<='z')pressed[key-'a']=false; //沒有按下
}

week09_6_keyboard_String_typing_typed

要打的字顯示紅色已經打的字是黑色



PImage img;
int [][] pos ={{130,444},{372,503},{265,503},{240,443},{225,384},{292,443},{345,442},{400,443},{493,383},{454,443},{509,443},{560,442},{481,503},{427,503},{548,384},{601,383},{117,385},{279,384},{187,442},{332,383},{439,385},{320,503},{171,383},{212,502},{387,385},{158,502}};
void setup(){
  size(800,600);
  img = loadImage("keyboard.jpg");
  rectMode(CENTER);
}
void draw(){
  background(#FFFFF2);
  image(img,0,600-374);
  fill(255,0,0,128);
  rect(mouseX,mouseY,45,50,5);
  fill(0,255,0,128);
  for(int i=0;i<26;i++){
     if(typing.charAt(0)-'a' == i)rect(pos[i][0], pos[i][1],45,50,5);
    if(pressed[i])rect(pos[i][0],pos[i][1],45,50,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 = "";
int ID = 0;//第幾個字母要被打
boolean [] pressed = new boolean[26]; 
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; //沒有按下
}

week09_7_keyboard_if_wrong_nothing 

如果打錯畫面會閃紅色

week09_8_keyboard_if_ID_not_in _length

原本的程式沒辦法打到最後一個字 會超過陣列大小

修改後可以打到最後一個字


PImage img;
int [][] pos ={{130,444},{372,503},{265,503},{240,443},{225,384},{292,443},{345,442},{400,443},{493,383},{454,443},{509,443},{560,442},{481,503},{427,503},{548,384},{601,383},{117,385},{279,384},{187,442},{332,383},{439,385},{320,503},{171,383},{212,502},{387,385},{158,502}};
void setup(){
  size(800,600);
  img = loadImage("keyboard.jpg");
  rectMode(CENTER);
}
void draw(){
  background(#FFFFF2);
  image(img,0,600-374);
  fill(255,0,0,128);
  rect(mouseX,mouseY,45,50,5);
  fill(0,255,0,128);
  for(int i=0;i<26;i++){
     if(ID<typing.length() && typing.charAt(0)-'a' == i)rect(pos[i][0], pos[i][1],45,50,5);
    if(pressed[i])rect(pos[i][0],pos[i][1],45,50,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 = "";
int ID = 0;//第幾個字母要被打
boolean [] pressed = new boolean[26]; 
void keyPressed(){
  if(ID<typing.length() && key>='a'&&key<='z')pressed[key-'a']=true; //按下
  if(key == typing.charAt(ID)){ //如果字母正確  就往下
  typed += key;
  ID++;
}else{
  background(255,0,0);
  }
}
void keyReleased(){
  if(key>='a'&&key<='z')pressed[key-'a']=false; //沒有按下
}

week09_9_keyboard_space_many_words

讓程式可以按空格
PImage img;
int [][] pos ={{130,444},{372,503},{265,503},{240,443},{225,384},{292,443},{345,442},{400,443},{493,383},{454,443},{509,443},{560,442},{481,503},{427,503},{548,384},{601,383},{117,385},{279,384},{187,442},{332,383},{439,385},{320,503},{171,383},{212,502},{387,385},{158,502}};
void setup(){
  size(800,600);
  img = loadImage("keyboard.jpg");
  rectMode(CENTER);
}
void draw(){
  background(#FFFFF2);
  image(img,0,600-374);
  fill(255,0,0,128);
  rect(mouseX,mouseY,45,50,5);
  fill(0,255,0,128);
  for(int i=0;i<26;i++){
     if(ID<typing.length() && typing.charAt(0)-'a' == i)rect(pos[i][0], pos[i][1],45,50,5);
    if(pressed[i])rect(pos[i][0],pos[i][1],45,50,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 = "printf is a function";
String typed = "";
int ID = 0;//第幾個字母要被打
boolean [] pressed = new boolean[26]; 
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; //沒有按下
}


沒有留言:

張貼留言