• 沒有找到結果。

課堂練習 1.1 (建立首個手機應用程式)

N/A
N/A
Protected

Academic year: 2022

Share "課堂練習 1.1 (建立首個手機應用程式) "

Copied!
14
0
0

加載中.... (立即查看全文)

全文

(1)

第一堂:認識 App Inventor 2 的基本操作(上)

課堂練習 1.1 (建立首個手機應用程式)

1. 瀏覽以下網址

http://ai2.appinventor.mit.edu/

2. 開新專案

Projects > Start new project > 輸入專案名稱 “L1_1_HelloWorld”

3. 認識 App Inventor 2 的界面。請按老師的介紹,填寫各功能的中文名稱。

調色板 組件

屬性 切換板面/方塊

設計

(2)

4. 程式的功能簡述

本程式將邀請用戶於輸入方塊中填寫自己的姓名,當用戶按按鈕”按我”後,便顯示歡迎你!!

5. 按以下「組件功能設計表」加入組件

組件類別 組件名稱 功能

Label Instruction 向用戶所展示的指引

TextBox InputBox 收集用戶所輸入的姓名

Button Button1 輸入按鈕

Label WelcomeMessage 輸出用戶名稱

Image Image1 當用戶按按鈕後,輸出圖片

App Inventor 是採用「物件導向 Object Orientated」的程式開發概念。

 進行物件導向程式設計時,程式編寫員把程式視為由各種 獨立卻互相呼叫的「物件 Object」(組件 Components) 組成

 「物件」會因應不同的「事件 Event」而作出反應

 不同的「物件」具備不同的「屬性 Properties」,定義的方法如下:

WelcomeMessage.Text – 指名為 WelcomeMessage 的 Label 所顯示的文字的內容 WelcomeMessage.Text Color– 指名為 WelcomeMessage 的 Label 所顯示的文字的顏色

6. 修改各組件的屬性,以達到下圖的效果

(3)

7. 切換到「方塊 Blocks」編輯畫面,並按下圖編輯方塊

8. 於流動裝置/模擬器(Emulator) 中進行測試 (註:使用流動裝置進行測試,效果較佳) 9. 小貼士:若使用模擬器,把屏幕上的物件適當地排列,使編輯過程更方便

(4)

第二堂:認識 App Inventor 2 的基本操作 (下)

課堂練習 2.1

1. 瀏覽以下網址

http://ai2.appinventor.mit.edu/

2. 開新專案

Projects > Start new project > 輸入專案名稱 “L2_2_TalkToMe”

3. 程式的功能簡述

「讀字機/自助默書讀字機」:

當用戶按「按鈕」,便讀出預先所輸入的字串

4. 按下表加入組件及修改各組件的屬性,以達到右圖的效果

組件類別 組件名稱 功能

Button Button1 輸入按鈕

TextToSpeech TextToSpeech1 負責將文字變成語音的工具 (暫時只能讀英文子句) 5. 按下圖編輯方塊

6. 於流動裝置/模擬器中進行手機應用程式的測試 7. 挑戰題

 修改以上程式,讓程式讀出另一字串(Good Morning)

課堂練習 2.2 (此練習學生必須佩備流動裝置進行測試)

8. 將課堂練習 2.1 下載到智能手機上執行

9. 挑戰題

 修改以上程式,令程式當被人搖動時,便讀出(Stop Shaking Me!!) 參考資料:

 http://appinventor.mit.edu/explore/sites/all/files/hourofcode/TalkToMePart2.pdf

 http://www.youtube.com/embed/0hikoCvM3oc?autoplay=1

 修改以上程式,令程式讀出使用者所輸入的字串

1.在 Screen 中,加入

MediaTextToSpeech

SensorAccelerometerSensor;

2.在 Blocks 中,建立

在 Blocks 中,選取 Build-inText:

(5)

第三堂:版面配置和物件屬性的應用 課堂練習 3.1

1. 嘗試依附圖配置手機程式的版面:

2. 開新專案

Projects > Start new project > 輸入專案名稱 “L3_1_Layout”

3. 程式的功能簡述:

當用戶按不同「按鈕」時,便於 label1 顯示不同的字串 4. 按下表加入組件及修改各組件的屬性,以達到右圖的效果

組件類別 組件名稱 功能

Button ButtonA 按此按鈕顯示:「去街市買魚

腸,見到姨丈,放低魚腸,問候 姨丈,執翻魚腸,拜拜姨丈。」

Button ButtonB 按此按鈕顯示:「一蚊一斤雞,

一蚊一斤龜,究竟系雞貴定系龜 貴?」

Button ButtonC 按此按鈕顯示:「郵差叔叔,送

信純熟,迅速送出。」

Button ButtonD 按此按鈕顯示:「床腳撞牆角,

牆角撞床角,你話床角撞牆角定牆 角撞床腳?

Label Label1 顯示字串

提示:同學可善用 "Layout" 中的 " HorizontalArrangement" 和 "VerticalArrangement" 以完成任務。

5. 挑戰題

 著學生新增Textbox,並擷取其中的字串,作為 label1 顯示的內容

 著學生按不同的按鈕而改變label1 文字成為不同的顏色

(6)

第四堂:數學運算和畫布的應用

課堂練習 4.1

1. 嘗試依右圖配置手機程式的界面:

2. 開新專案

Projects > Start new project > 輸入專案名稱 “L4_1_AreaOfTriangle”

3. 程式的功能簡述:

當用戶按不同「按鈕」時,便依所輸入的數據計算三角形的面積 4. 按下表加入組件及修改各組件的屬性,以達到右圖的效果

組件類別 組件名稱 功能

Label Label_Base 輸出文字敍述「底」

Label Label_Height 輸出文字敍述「高」

Label Label_Answer 輸出文字敍述「答案」

Label Answer 輸出計算結果

TextBox TextBox_Base 讓用戶輸入「底」的值

TextBox TextBox_Height 讓用戶輸入「高」的值

Button Button1 按鍵則進行運算

5. 挑戰題

 修改以上程式,以計算梯形面積

A. 課堂練習 4.2

1. 嘗試依圖配置手機程式的界面:

2. 開新專案

Projects > Start new project > 輸入專案名稱 “L4_2_DigitalDoodle”

3. 程式的功能簡述:

製作手機繪畫板

(7)

按下表加入組件及修改各組件的屬性,以達到下圖的效果

組件類別 組件名稱 功能

Canvas Canvas 作為用戶繪畫的畫布

 小貼士

請緊記把 Screen1 的「Scrollable」 的設定設為「取消」

4. 挑戰題

 修改以上程式,令程式按用戶的選擇使用不同的顏色繪圖

(8)

第五及六堂:遊戲 I - 打田鼠 (MoleMash)

課堂練習 5.1 (建立首個手機遊戲)

1. 開新專案

Projects > Start new project > 輸入專案名稱 “L5_1_MoleMash”

2. 嘗試依右圖配置手機程式的界面:

3. 程式的功能簡述:

你將設計一個手機遊戲 – 打田鼠。

> 遊戲開始後,田鼠會每隔半秒 (500 ms)移動一次。

> 如果玩家能「捉到」田鼠(指尖觸摸到田鼠),則獲加 10 分及 感受到手機振動一次,田鼠也立即跳到另一處。

> 若玩家按下「Reset(重新啟動) 」,累積得分則會回復到「零」。

4. 按下表加入組件及修改各組件的屬性

組件類別 組件名稱 功能 屬性

Canvas MyCanvas 設定田鼠在屏幕中可移動的

範圍

300 pixels 300 pixels

ImageSprite Mole 遊戲中的主角 – 田鼠  Picture: mole.png

 Enabled: 勾選(checked)

 Interval: 隨意(由於田鼠於此 遊戲中的移動是由 Clock 控 制)

 Speed: 0.0 (即不會移動)

 X: 不用設定(會按你擺放 ImageSprite 的位置而自動設 定)

 y: 不用設定(會按你擺放 ImageSprite 的位置而自動設 定)

 Visible: 勾選

 Width: Automatic (自動)

 Height: Automatic(自動)

Label ScoreLabel 輸出(顯示)玩家的得分 Text 「Score: ---」

Button Button1 玩家若按此按鍵,則重新開始

遊戲

Text 「Reset」

Sound

(看不見的組件)

Noise 用以令到手機振動

Clock

(看不見的組件)

Clock1 每隔半秒報時一次,提示程序

執行特定任務

TimerInterval(計時器時隔)  500 TimerEnabled(計時器啟動) 勾選

(0,0)

(0,300)

(300,0) 著學生解釋 (0,0) 的意義。

著學生解釋田鼠的大小,

與程式版面有何關係。

(9)

5. 定義好各組件後,我們開始編寫程序

任務一:田鼠每隔半秒跳到畫布中另一個隨機的位置

 由於控制田鼠轉換位置的程序會重複使用,為方便程序編寫員的工作,一般會使用「子程序 (Procedure)」,來編寫重複執行的步驟。

 定義子程序 MoveMole – 控制田鼠跳到畫布另一個隨機的位置

 挑戰題 – 以下是改良了的子程序,試想想以下的設計有何優勝之處

任務二:如果玩家能「捉到」田鼠(指尖觸摸到田鼠),則獲加 10 分

 預備一個變量來儲存分數(定義變量) – score

 並設定其起始值為 「0」

 當玩家「捉到」田鼠  score = score + 10

 將 ScoreLabel 所顯示的內容變為「"Score:" + “

最新分數

”」

介乎 0 和 1 的一 個隨機數值

提問學生:隨機數的範圍 為何是 1 至 300? 若改

為 500,程式將有何改 變?

???提問學生:Clock1 與田鼠的出 現(MoveMole)有甚麼關係?

提問學生:假若沒有 減去 Mole.Width,程 式將出現什麼現象?

(10)

任務三:如果玩家能「捉到」田鼠,手機震一震及控制田鼠立即跳到另一隨機位置

任務四:如果玩家按「Reset」,累積分數將返回「0」

挑戰題: 程序編寫員務求令程序更簡潔,往往喜歡把經常重複使用的程序碼歸納成「子程序」,以 方便日後使用

參考資料(此節教材,參考 MIT App Inventor 網站的教材而設計):

http://appinventor.mit.edu/explore/ai2/molemash.html

本著作係採用創用 CC 姓名標示-相同方式分享 3.0 未本地化 授權條款授權.

(11)

設計自己的遊戲/應用程式 (專題研習)

活動介紹

 每位同學可按自己的生活經驗和身邊人的需要,自行設計一個手機遊戲/應用程式,並於第 9 和 10 節 的程式簡報會,各人設立一個攤位,向同學展示和介紹所設計的程式。

 簡報會當日,全班同學將分為 2 組,並分兩節輪流參觀另一組同學的攤位,並從該組中選出設計得 最好的手機遊戲/應用程式。

設計藍本

1. 試簡述你的遊戲的玩法/應用程式的功能:

引發你的設計之原因及簡述遊戲玩法/應用程式的功能

遊戲主角的介紹/程式的使用方法

2. 試在下圖繪製你的手機遊戲的版面設計

(0,0)

(12)

3. 按下表加入組件及修改各組件的屬性

組件類別 組件名稱 功能 屬性

(13)

第七及八堂:遊戲 II -太空侵略者 (Space Invaders)

課堂練習 7.1

1. 開新專案

Projects > Start new project > 輸入專案名稱 “L7_1_SpaceInvaders”

2. 程式的功能簡述:

你將設計一個手機遊戲 –太空侵略者。

> 遊戲開始後,UFO 在上方每隔三秒 (3000 ms) 移動一次。

> 玩家用手指拖拽飛船,以控制飛船移動

> 當玩家每次觸碰飛船時,則會發射子彈一枚

> 若子彈擊中 UFO 則可獲加 1 分

> 若玩家按下「Reset(重新啟動) 」,累積得分則會回復到「零」。

3. 嘗試依下圖配置手機程式的界面:

(14)

ImageSprite SaucerSprite 遊戲中的角式 – UFO Picture: Saucer.png Y: 0

BallSprite Bullet 子彈 Radius(半徑): 8

PaintColor(著色): 綠色 Horizontal

Arrangement

HorizontalArrangement1 放置分數 Label /

Label Label1 記錄字串"Score" Text 「Score: 」

Label ScoreLabel 記錄分數 Text 「0」

Button Button1 玩家若按此按鍵,則重新開始

遊戲

Text 「Reset」

Clock

(看不見的組件)

Clock1 每隔三秒報時一次,提示程序

執行特定任務

TimerInterval(計時器時隔)  3000 TimerEnabled(計時器啟動) 勾選 5. 定義好各組件後,我們開始編寫程序

任務一:手指拖拽飛船,飛船隨之而移動

 提示: 當____________________(事件)發生

 改變 RockeSprite 的 X 座標[設定為手指現在的 X 座標 (currentX)]

任務二:手指觸碰飛船時發射子彈

 提示: 在此遊戲中,讓子彈發射的方法是:當玩家手指觸碰飛船時,子彈由 ____________變為 ________________,並向上方移動

 隱藏:將子彈的屬性「可見 (Visible)」設定為 False (取消 勾選)

 當____________________(事件)發生  1. 子彈  ____________________

2. 讓子彈朝上方(飛船的位置) 移動 3. 設定子彈的移動速度

 問題:子彈只會在飛船的右上方出現,不夠美觀。可如何改善? (挑戰題) 任務三:子彈到達牆壁之後?

 當______________________________________(事件)發生 [提示:關於子彈]

子彈  ______________________

任務四:子彈碰到 UFO?

 當______________________________________ (事件)發生 子彈  ______________________

分數  ______________________

 問題:有時玩家在觸碰飛船時,子彈便在飛船上出現,隨即碰到飛船,便算為擊中了目標。

 解決方法:更改子彈出現的位置,讓它不會碰到飛船 任務五:按「Reset」鍵,累積分數返回「0」

任務六:UFO 每隔 3 秒,隨機改變位置一次

任務七:當 UFO 被擊中後,UFO 會立即隨機轉到另一位置

參考資料(此節教材,參考 MIT App Inventor 網站的教材而設計):

 http://explore.appinventor.mit.edu/ai2/space-invaders

本著作係採用創用 CC 姓名標示-相同方式分享 3.0 未本地化 授權條款授權.

參考文獻

相關文件

66: (1)會讀或會寫幾個字不表示就不是文盲,能否在適當的環境下正確的辨認和運 用所會的一些基本語文才是關鍵;(2) Functional Literacy

立場論文界定:立場論文的主題應為數學教育中重要的議題。論 文應包含該議題的內容及重要性,針對該議題所涉及的各種不同

此行文字的特別意義,是讓 MATLAB 藉由 lookfor 指令 搜尋並顯示此函式用途。.. 語法:

立場論文界定:立場論文的主題應為數學教育中重要的議題。論 文應包含該議題的內容及重要性,針對該議題所涉及的各種不同

教育局的課程文件《為智障學生而設的中國 語文建議學習重點(小一至中三)》 (香 港課程發展議會,

請用「 font」或是「free font」為關鍵字,利用 搜尋引擎上網搜尋,看看你能找到哪些免費的 字型。. 請連線到各國的雅虎 (Yahoo)

( Hyper Text Markup Language,超文件標記語言)是 SGML 的一項運 用,具有指定連結、指定格式的功能。1998 年,為了 Web 最佳運用,開 始從 SGML 推演成 XML(Extensible

中世紀初期手工書籍的字體使用傾向簡潔且書 寫容易的字形,最普遍被使用的字體為羅馬帝國晚期 開始流行的「安色爾字體」 (Uncial Style) 。安色爾字 體起源於公元三世紀時的希臘木板記事碑(wooden