Week09
先將老師傳送的keyboard.png加入程式速寫本,size(800,600) 800是看圖片寬度決定的,位置-266放在視窗的底部
繼續增加幾行程式碼,用中心點來畫四邊形、清空殘影、128為半透明、5四邊形變圓滑、定位、印出mouse座標
新增一個二維陣列,並將剛剛印出的mouse座標放進去(可以先貼到notepad++用Ctrl+h取代空格和括號),並用for迴圈在座標上畫出半透明的綠色
按下滑鼠會有對應的按鍵變成半透明的綠色
現在要打的字,是typing.charAt(0),並加入if(typing.charAt(0)-'a' ==i) rect(pos[i][0], pos[i][1],28 , 30, 5); 讓系統能夠提示你接下來要打的字
判斷是否按下正確的按鍵,如果正確的話就繼續往下,不正確的話畫面閃一下紅色並且不繼續往下
新增三個保護機制,讓程式不會因為超過字串當機
交換兩個if判斷式的順序,讓它有辦法打出空格不當機
PImage img; //int [][] pos={{84,456},{93,491},{110,524},{117,457},{126,490},{143,524},{151,457},{160,490},{177,524},{187,456},{195,491},{211,524},{219,457},{229,490},{246,525},{254,456},{263,490},{281,524},{288,457},{297,490},{314,524},{322,456},{331,490},{356,456},{366,491},{390,457}};//二微陣列 int [][] pos={{93,490},{246,524},{177,525},{161,490},{151,457},{195,490},{229,491},{263,490},{322,457},{298,490},{332,490},{366,490},{314,524},{281,524},{356,457},{390,457},{82,457},{185,457},{127,490},{219,456},{288,456},{212,524},{118,457},{144,525},{254,457},{110,525}}; 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);//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 = "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; } void mousePressed(){ println(mouseX,mouseY); //定位、印出mouse座標 }
沒有留言:
張貼留言