記錄一下:
App Inventor學習記錄175-用球形精靈做的反應訓練小遊戲,點擊唯一不同的顏色
這次完成的範例如下。
很明顯這是延續用球形精靈試做手機圖型鎖功能這一篇的畫面格式來做的。
點擊不同顏色的球會得分,點了相同顏色的球或是球變不見遊戲就結束。
右下方有一個 spinner下拉式選單,本來是要拿來選擇出現幾顆球,但這個功能還沒有寫上。
畫面編排的部份如下。
label 2標籤 2是用來放得分。
下面就是畫布和球形精靈的組合,圖片精靈是拿來放 game over的圖片用的。
關於球形精靈,在這裡要先補充一點。
這次用到的球形精靈在屬性這裡,都會勾選 origin at center座標在圓心這一個屬性。
有沒和沒有勾的差別就是有勾這一個的,座標是從圓心算,沒有勾這一個屬性的,座標要從左上角開始算。建議大家在做的時候,試試看有什麼不同。
全部的程式方塊如下。
第 1部份的程式方塊記錄。
變數_遊戲是否進行,這個變數是用來判斷遊戲開始或是遊戲結束用。
變數_得分,不用多說。
變數_畫布邊長,設一個變數來取得這個值,等一下計算的時候比較好記。
變數_顏色_相同的,用來放顏色相同的球的顏色。
變數_顏色_唯一的,用來放唯一一顆不同顏色的球的顏色。
變數_球的半徑,用來計算球的半徑大小的值
清單_模式,用來放可以選擇幾個球的模式,這個範例中用不到……
第 2部份的程式方塊記錄。
清單_四個顏色,這裡的 4個顏色是紅、藍、綠、黃,我忘了他們那個是那個了……。
第 3部份的程式方塊記錄。
清單_群組_3顆球、清單_群組_4顆球、清單_群組_5顆球分別放入對應的球形精靈元件。
這裡只有用到清單_群組_3顆球的部份。
第 4部份的程式方塊記錄。
把 6條線產生的 9個交點位置,標記一下,放在清單_全部的 9個位置編號中。
第 5部份的程式方塊記錄。
這個就是 9個交點的 x,y座標。
第 6部份的程式方塊記錄。
建立畫格線程式。
set canvas 1.paint color,設定畫筆顏色為粉紅色。
call canvas 1.draw line呼叫畫線程式,畫出背景的 6條線。
第 7部份的程式方塊記錄。
建立位置_3顆球程式。
在這個程式中,我們 for each item in list方塊,先把清單_群組_5顆球中的 5個球形精靈的可見性,全部設定為 false,也就是把全部的球先藏起來。再用一次 for each item in list方塊,把清單_群組_3顆球中的 3個球形精靈的可見性,設定為 true,只顯示這 3個球形精靈。
然後用 call ball 1.move to 的方塊,分別把三個球形精靈移動到指定的位置上。
這個由於我們在畫面編排的時候,有勾選球形精靈中的 origin at center屬性,所以在移動球形精靈的時候,就是用球形精靈的中心點來移動,不用再扣半徑的大小。
第 8部份的程式方塊記錄。
建立球半徑預設值程式。
在這程式中,用 for each item in list方塊,把清單_群組_5顆球裡的所有球形精靈的半徑,用任意元件中的 set ball.radius方塊,設定成變數_球的半徑的值。
第 9部份的程式方塊記錄。
建立球變顏色程式,加入參數_那個群組。
在這個程式中,先把全部的球形精靈的顏色,設定成變數_顏色_相同的這個顏色。
然後用 while test方塊,判斷一下變數_顏色_相同的和變數_顏色_唯一這兩個變數。如果這兩個變數的值是一樣的話,那麼就把變數_顏色_唯一的重新從清單_四個顏色清單中,隨機取一個項目。一直重覆這個動作到兩個變數不同為止。
接著再用任意元件的 set ball.paint color方塊,把參數_那個群組中的任意一個元件的顏色,設定成變數_顏色_唯一的值。
第 10部份的程式方塊記錄。
建立球變小程式,加入參數_那個群組。
用 for each item in list,把那個群組中所有球形精靈的半徑,設定成原本半徑值減 0.0001。
第 11部份的程式方塊記錄。
建立遊戲結束程式。
把變數_遊戲是否進行,設定為 false。
調整一個圖像精靈的尺寸和位置,然後把它的可見性設定為 true。
第 12部份的程式方塊記錄。
when screen1.initialize當螢幕初始化的時候。
設定一下變數_畫布邊長的值,然後再把畫布的長跟寬,設定成變數_畫布邊長的值。
接著呼叫我們建立的 4個程式。
第 13部份的程式方塊記錄。
開始遊戲按下後,啟動計時器開始計時,把變數_遊戲是否進行設定為 true。
補充一下,為了讓球變小的速度看起來比較順眼,所以在畫面編排的地方,有把計時器的 timer interval設定為 100毫秒。
第 14部份的程式方塊記錄。
當計時器開始計時的時候,呼叫球變小程式。所以每隔 100毫秒,球的半徑就會變小 0.0001。
如果球的半徑的值小於 1的話,呼叫遊戲結束程式,停止計時器的計時功能。
第 15部份的程式方塊記錄。
when any ball.touch down當有任何一個球被點擊的時候。
如果變數_遊戲是否進行的值是 true的話。而且如果點下的那個球的顏色,等於變數_顏色_唯一的值的話,就得一分,然後呼叫球半徑預設值程式、球變顏色程式。把 label 2標籤 2的文字顯示成變數_得分的值。
不然的話,就呼叫遊戲結束程式。
這裡在做顏色判斷的時候,要記得使用 split color這個方塊。
第 16部份的程式方塊記錄。
這個就不說明了,就是複歸而已。
不想要重新拉程式方塊,或要需要範例 aia檔的話,請前往第 2頁哦!