第一節課
今天要做一個可以打字的程式小葉老師的範例程式spelling bee,目標是打字遊戲,可以打字可以嗅出來,錯的單字會加入一個資料結構,可以加入音效
第一個小程式week06_1_text_textSize_fill
印出字放大和填充
size(500,500); textSize(64);//放大字體 text("Hello World",100,100); fill(255,0,0);//填充面 text("Red",100,200);//座標
第二個小程式week06_2_keyPressed_string
加入互動,能打入英文字,可以打出英文,可以換行,但是其他鍵可能會有錯誤的符號
void setup(){ size(500,500); textSize(64); } String line ="Input: "; void draw(){ text( line, 100,100); } void keyPressed(){ line += key;///鍵盤按的字變成line印出 }
第三個小程式week06_3_if_alphabet
void setup(){ size(700,400); textSize(64); } String line ="Input: "; void draw(){ text( line, 100,100); } void keyPressed(){ if(key >= 'A' && key<='Z')line+=key;//不全部印只印大小寫 if(key >= 'a' && key<='z')line+=key; }
第四個小程式week06_4_BACKSPACE_string
打錯字的時候怎麼辦,要怎麼知道打錯字了,可以刪掉嗎?
BACKSPACE到退鍵按下去的時候可以刪除字母
看不到刪除的狀態,因為有殘影,所以要加入背景顏色
但是可能會刪到Input,所以加入串列長度,大於0才可以刪除
void setup(){ size(800,400); textSize(64); } String line =""; void draw(){ background(0);///背景 text("Input: "+line, 50,100); } void keyPressed(){ if(key >= 'A' && key<='Z')line+=key;//不全部印只印大小寫 if(key >= 'a' && key<='z')line+=key; if(key == BACKSPACE && line.length()>0) {//當按下倒退鍵,且字串長度大於0時 line = line.substring(0,line.length()-1); //substring減掉字串長度最後面的哪一個 } }
第二節課
課前準備:要加入音效所以要先下載一個Sound函數庫開新檔案
第五個小程式week06_5_sound_play
找到soundfile,並找到一個音樂,記得將音樂拉入程式
import processing.sound.*; SoundFile file; void setup() { size(300, 300); background(255); file = new SoundFile(this, "a.mp3"); file.play(); } void draw(){ }
第六個小程式week06_6_game_dadada_good_over_mp3
加入音效按1,2,3時有音效
import processing.sound.*; SoundFile dadada,good, over; void setup(){ size(300,300); dadada =new SoundFile(this,"dadada.mp3"); good =new SoundFile(this,"good.mp3"); over =new SoundFile(this,"over.mp3"); } void draw(){ text("press 1,2,3",100,100); } void keyPreesed(){ if(key=='1')dadada.play(); if(key=='2')good.play(); if(key=='3')over.play(); }
第七個小程式week06_7_keyPreesed_da_ENTER_dingdong
結合04和06打字時,有音效
import processing.sound.*; SoundFile da,dingdong, ouch; void setup(){ size(800,400); textSize(64); da =new SoundFile(this,"da.mp3"); dingdong =new SoundFile(this,"dingdong.mp3"); ouch =new SoundFile(this,"ouch.mp3"); } String line =""; void draw(){ background(0);///背景 text("Input: "+line, 50,100); } void keyPressed(){ if(key >= 'A' && key<='Z') {line+=key; da.play();}///小心大括號 if(key >= 'a' && key<='z') {line+=key; da.play();} if(key == BACKSPACE && line.length()>0) { line = line.substring(0,line.length()-1); ouch.play();//// } if(key == ENTER){//按enter時 dingdong.play(); } }
amp()聲音大小聲第三節課
另一 個打字遊戲,字會掉下來,第八個小程式week06_8_game_shoot_word_x_y
字會掉下來
void setup(){ size(400,600); textSize(20); } String Q ="Hello",A=""; float x=100, y=100; void draw(){ background(0); text(Q, x, y); ellipse(200,550,20,20);//200*550位置,20*20的圓圈,表示我 float dx=(200-x) ,dy=(550-y), d = sqrt(dx*dx+dy*dy)*3;//d=距離//*3可以調速度,可以用來分關卡 x += dx/d; y += dx/d; }按按鍵的時候,拉一條線打上去void setup(){ size(400,600); textSize(20); } String Q ="Hello",A=""; float x=100, y=100; void draw(){ background(0); text(Q, x, y); ellipse(200,550,20,20);//200*550位置,20*20的圓圈,表示我 float dx=(200-x) ,dy=(550-y), d = sqrt(dx*dx+dy*dy)*2;//d=距離//*3可以調速度,可以用來分關卡 x += dx/d; y += dx/d; if(keyPressed){ stroke(255,0,0); line(200,550,x,y); } }
第九個小程式week06_9_game_shoot_string_compare_Q_A
如果打錯要扣分,按按鍵的時候,比較字母,這裡先將自設成白色,當打對的時候將字變成紅色A
void setup(){ size(400,600); textSize(20); } String Q ="hello",A=""; float x=100, y=100; void draw(){ background(0); fill(#FFFFFF);text(Q,x,y);//Q白色 fill(#FF0000);text(A,x,y);//A紅色 ellipse(200,550,20,20);//200*550位置,20*20的圓圈,表示我 float dx=(200-x) ,dy=(550-y), d = sqrt(dx*dx+dy*dy)*2;//d=距離//*3可以調速度,可以用來分關卡 x += dx/d; y += dx/d; if(keyPressed){ stroke(255,0,0); line(200,550, x, y); } } void keyPressed(){ int i=A.length(); if( key==Q.charAt(i) ){///打的字和字串內的字相同 A += key;//打對了變成A紅色 } } 第十個小程式week06_A_game_shoot_string_compare_Q_A_next_word
void setup(){ size(400,600); textSize(20); } void randomQ(){ int i=int(random(QQ.length));//亂數決定改成整數,因為亂數是浮點數 Q = QQ[i]; x = random(0,300); y = random(0,100); } String [] QQ = {"void","setup","float","apple","cat"}; String Q ="hello",A=""; float x=100, y=100; void draw(){ background(0); fill(#FFFFFF);text(Q,x,y);//Q白色 fill(#FF0000);text(A,x,y);//A紅色 ellipse(200,550,20,20);//200*550位置,20*20的圓圈,表示我 float dx=(200-x) ,dy=(550-y), d = sqrt(dx*dx+dy*dy)*2;//d=距離//*3可以調速度,可以用來分關卡 x += dx/d; y += dx/d; if(keyPressed){ stroke(255,0,0); line(200,550, x+textWidth(A), y);///這個會指到在打的字母 } } void keyPressed(){ int i=A.length(); if( key==Q.charAt(i) ){///打的字和字串內的字相同 A += key;//打對了變成A紅色 if(Q.equals(A)){//當Q都變成A randomQ(); A=""; } } }
期中期末分組我跟子珈一組,題目是莉露姆做蛋糕,是子珈想到的,是我小時候也很愛看的卡通魔法咪嚕咪嚕
內容可能會分幾個小關卡,包括麵粉攪拌,烤蛋糕,和裝飾。大概想法而已內容還沒有決定。








沒有留言:
張貼留言