2023年11月9日 星期四

温 week09

 PImage img;

int [][] pos ={{92,489},{245,525},{178,523},{163,490},{153,457},{195,491},{230,491},{263,491},{324,457},{297,490},{330,490},{365,490},{314,525},{280,524},{356,457},{392,456},{83,456},{186,457},{128,491},{221,457},{288,457},{212,523},{119,456},{143,523},{255,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);///半透明的

  rect( mouseX, mouseY, 28, 30, 5);///依滑鼠座標印出方塊,5設定圓滑的角

  fill(0,255,0,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);

    if(pressed[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.charAt(0)

  fill(0);//再用黑色字,秀出已經打好的字

  text(typed,50,100);//已經打好的字

}

String typing ="print 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'){///交換上下行if

      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;

}




沒有留言:

張貼留言