互動與事件

2022-12-06 13:00:03 字數 4746 閱讀 8039

1. 事件型別與處理方法

在一般所編寫的非互動式程式中,所有動作序列的執行是由程式設計人員事先設計好的流程進行的,就如看電影一樣不能中途參與,只能等待電影結朿,而互動式程式的執行流程是在程式執行過程中由發生的事件所決定,這些事件包括點選mouse或在鍵盤按下某鍵,或者場景中物件移動產生的某些條件,由這些事件來控制程式執行編流程,這和玩遊戲過程一樣,人可以控制程式的執行過程,如用滑鼠點選時能射擊等。也就是說使用者可以通過輸入來決定程式如何執行,能與程式發生互動作用。

用alice可以編寫互動式程式,在alice的事件編輯器中,提供的事件的型別有:

when the world starts程式開始

when a key is type某個鍵被按下時

when the mouse is clicked on something當滑鼠點選某個物體

when something is true當某個條件滿足時

when a variable is change當某個變數值變化時

let the mouse move 讓滑鼠移動物體

let the arrow keys move the 讓箭頭鍵移動物體

let the mouse move the camera讓滑鼠移動相機

let the mouse orient the camera讓滑鼠改變相機角度

當事件出現時,程式就會對其作出響應,用來響應該事件的方法叫做事件的處理方法。互動程式就是由很多這樣的事件和它對應的處理方法所組成。例如設計模擬飛機飛行的互動式程式,當按向上鍵時飛機向前飛行,如果按空格鍵時飛機翻轉一圈,這個互動程式有二個事件,即按向上鍵及按空格鍵,與它們相應的處理方法是向前飛行和翻轉一圈。

例項21:buttons and birds

(1) 選擇沙地為背景,從本地庫中選擇bird1及bluebird加入到場景中,再選擇一按鈕面板buttonpanel加入到場景中,調整它們的大小和位置。

在事件編輯區中,有乙個預先設定的事件,「when the world starts, do first method.」

它表示只要按下button,alice就會執行在my first method中編好的程式。

點選物件樹上的bluebrid,從methods列表中拖入move to至 first method處,選擇bird1及the entire bird1

此時按play,bulebird就會飛向另乙隻bird1。右擊該事件,並選擇delete,事件編輯區清空。

(2)點選create new event,選擇when a key is typed

點選物件樹上的bird1,從 methods列表中拖flyforward至nothing處

按play後,只要按任何鍵bird1都會向前飛,現在要求按f鍵向前飛,而按b鍵則飛回來。點選key後面的三角形,選擇letter和f

同前面的步驟一樣,建立另乙個關於鍵盤的新事件,拖至nothing處,點選key後面的三角形,選擇letter和b,因此有

按play後再按f鍵及b鍵檢查效果。

(3)建立mouse的新事件。點選create new event,選擇when the mouse is clicked on something

由於buttonpanel有二個按鈕,點選物件樹上buttonpanel左邊的+號,將greenbutton拖至到anything處

點選物件樹上的bluebird,從它的methods列表中找到方法approach,將它拖至nothing處,再建立另乙個mouse的事件,它是從buttonpanel選redbutton並拖至到anything處,從bluebird的methods列表中找到方法stop,將它拖至nothing處

從上可以看到alice程式與使用者的互動,使用者通過鍵盤或滑鼠可操縱程式去做希望做的動作。

例項22:公主與龍(續)---勇士救公主

在例項13中完成了場景的設定,編寫了公主在塔上呼救及龍抓走了公主的程式,下靣繼續編寫公主獲救的程式。首先從檔案系統中調出在方法編輯區**現了公主在塔上呼救及龍抓走了公主的程式,因此可以在此基礎上繼續編寫勇士救公主的程式。

(1)首先在場景中設定勇士(knight)和馬(horse)。點選add object,從本地庫的medival資料夾中將knight和horse加入到場景中,將horse調整為朝向camera,並將knight移到馬中部後再向上移,好象坐在馬背上。

為了使勇士和馬連在一起,點選物件樹上knight,在其屬性列表中將屬性vehicle設定為horse,為了表現騎馬姿勢,右擊物件樹上knight的rightleg,選擇roll, left , 0.1 revolutions.,類似地右擊leftleg,選擇roll, right ,0.

1 revolutions.,點選物件樹上horse,在其屬性列表中將屬性vehicle設定為camera,使馬跟著相機的視角變。因此有下述畫靣

拖動相機向右,使畫靣只看到勇士和馬,再將馬的屬性列表中的屬性vehicle設定為world。

點選more controls 及drop dummy at camera.,在物件樹上camer**iews 出現的dummy改名為knightview。右擊物件樹上camera,選擇camera set point of view to, camer**iews, originalview.

,按done回到程式設計界靣。

點選物件樹上camera,在方法列表中將 camera set point of view to拖入到主程式最後一行,並選擇camer**iews 和 knightview。

(2))建立勇士救公主新方法。點選物件樹上world,再點選create new method,命名新方法為knightrescue,在knightrescue方法編輯區內拖入knight say,並打入a damsel in distress! 點選物件樹上horse,拖入ture to face並選擇cinderella, the entire cinderella, 再拖move並選擇toward ,20 meters。

建立新事件。點選create new event,選擇when the mouse is clicked on something,在anything處選擇knight ,在nothing處選擇knightrescue,拖入camera的方法set point of view to選擇originalview ,在其前後拖入屬性vehicle並分別設為knight和world。

點選物件樹上knight並將say拖入,打入let her go!,再分別拖入dragon,turn to face ,knight和dragon,move ,forward ,1 meter。將dragon的函式dragon distance in front of 拖至1 meter處,選擇knight。

再分別拖入二條horse命令:horse turn to face,cinderella,duration為0.5 second,

horse move,forward ,1 meter,duration為0.5 second。將knight的函式 distance in front of 拖至1 meter處,選擇cinderella。

最後拖入cinderella的屬性vehicle並設為world。

拖入do together,在其後拖入cinderella turn,backward,1/4 revolution,duration設為0.25秒,dragon move,up,10 meters ,duration也設為0.25秒。

再拖入do together,在其後拖入cinderella move, backward,1 meter,拖cinderella的函式 distance above 至1 meter處,點選該命令列more後靣的三角形,選擇math,cinderella distance above knight +,other.,再打入 0.9.。

接著拖入cinderella的兩條命令:cinderella roll left ,1/4 revolution ,duration 0.25 seconds.

和cinderella move ,down,0.5 meter。為了knight雙手接住cinderella,還需將cinderella左右臂兩條命令拖入, 0.

5 revolutions及 0.5 revolutions。

至此勇士救公主的**編寫完成,其最終程式為

按play可**勇士救公主動畫。

例項23:matt,jenna and horse

(1)選擇grass為背景,從本地庫animals中將horse加入到場景中,利用定位操作按鈕將horse位置調整好

點選file及s**e world,打入檔名按s**e存入此場景,點選more control及drop dummy at camera,按done回到alice主視窗,點選物件樹上dummy object左邊的+號,右擊出現的dummy並rename為original position。

(2)點選create new event,選擇when a key is typed,點選any key選擇letters並選擇n

點選物件樹上horse,從methods列表中拖say至事件編輯區中nothing處,選擇other並打入neeeeeeeeigh!

按play再按n,馬將嘶叫(聲音檔案需要另外錄製)。

(4)回到alice主視窗,從本地庫中找到people資料夾,點選shebuilder後有

可利用紅色箭頭來建造出she,如改變她的腿、上身及頭部,選擇頭髪顏色,利用箭頭改變髪型和顏色

再從skin/eyes表中選擇**顏色(由滑塊移動選擇)、眼睛和睫毛(由箭頭控制)

再從服裝表中選擇她的上衣、褲子和鞋。最後將她命名為jenna並按ok

類似過程利用hebuilder資料夾再建造乙個he,命名為matt並加入到場景中。

教與學的互動與交流

數學教學中如何體現教與學的互動與交流 數學組 晏巧菊 摘要 在數學課堂教學中為了能正確處理教師與學生 教與學的關係,師生平等,教與學和諧統一 體現出教學是教師與學生以課堂為主渠道的交流 互動過程。真正的上好每一堂數學課,引導學生主動地從事觀察 實驗 猜測 驗證 推理與交流等數學活動從而使學生形成自己...

蘇州同裡古鎮旅遊互動與產業公升級研究

作者 郭貴祥 安徽農業科學 2014年第12期 摘要在當今古鎮旅遊市場互動性不足的發展背景下,分析了互動性不足對於古鎮旅遊的不利影響。以國家百強景區蘇州同裡古鎮為例,分析了古鎮旅遊互動性不足的原因。著眼於同裡古鎮的人文優勢,認為人文資源是古鎮旅遊發展的重中之重,也是同里古鎮旅遊決勝的關鍵所在。有鑑於...

聯誼晚會互動遊戲活動互動節目

的文字,寫到一半聽主持人提示,禮儀小姐提供紅色油筆收回黑色油筆。在規定時間內寫完,比較三人中誰寫的字最容易讓人辨認則獲勝,否則給予鼓勵小禮品。參與人數 方式 三至六名嘉賓,可分兩組每組三人 活動物料 矇眼紗巾三至六條,小白板 硬紙板 三塊,紅色與黑色白板油墨筆各五支 需禮儀小姐配合端白板 4 幸福更...