30光影魔術手

(2018/06/14)

前陣子看到有人做這個光影魔術手的魔術(當手懸空經過micro:bit板子時,LED會顯示不同圖示),覺得很酷,趕快收錄下來,避免以後忘記

一、原理:

  • 當手遮住micro:bit時,其光線感測值會改變(變小),利用此變化來改變圖案

二、程式

  • 先量測手未遮上及遮上後的【光線感測值】

    • 結果:未遮上及遮上後的【光線感測值】分別 >25 及 <10

    • 方法一:隨機來顯示圖示 (但可能遮上去後,會顯示出相同圖案)

    • 方法二:依序來顯示圖示 (一定會改變圖示,但圖示的順序會一樣)

三、完整【光影魔術手】遊戲

l 作品說明:當我們把手移過去Micro:bit 5x5 LED屏幕上方時(不用接觸),LED屏幕上的圖案將會有所改變,另外,為了營造出只有自己有光影魔術手的神奇能力,別人沒有,因此,我們做了一個小動作(開關),當按A鍵時裝置具有光影魔術手的功能,按B鍵時,裝置則沒有此功能。

l 關於圖案的變化,這邊採用內建的40個預設圖案來隨機出現,有40個圖案,切換時出現相同圖案的機率比較小。但在積木模式下無法達成隨機選圖案,必須把程式碼轉換到JavaScript模式下來修改,所以一開始只放了一個大心圖案來表示。

l 利用拖曳的方式,完成下面程式

補充說明

    • 由於我們不是只要顯示大心圖案,因此將程式碼轉換到JavaScript模式進行修改

    • 將第15行的basic.showIcon(IconNames.Heart)修改成basic.showIcon(Math.random(39)),再切換回積木模式

因為showIcon內建了40個圖案,編號是從0至39,basic.showIcon(0)就是大心圖案,basic.showIcon(1)就是小心圖案,basic.showIcon(39)就是剪刀圖案。Math.random()是隨機取數的指令,會隨機取等於或小於括號內的整數,所以Math.random(39)就是會隨機取0~39的數字。

  • 新版makeocde的修正

    • Math.randomRange(起始,結束)是隨機取數的指令,會隨機取括號內的數字範圍,所以Math.randomRange(0,39)就是會隨機取0~39的數字。