資訊內(nèi)容
Scratch也能玩體感游戲
? ? ?上一次我們利用圖像分類技術(shù),讓機器學會了識別石頭剪刀布等三種手勢,如果大家有試驗的話,可能會發(fā)現(xiàn)識別率并不是太高,會有誤判,問題主要在于我們給機器訓練的數(shù)據(jù)量還是太少,不能完全覆蓋三種手勢的所有類型,如果數(shù)據(jù)量足夠大,識別率會有明顯提高的,機器也需要一場“題海戰(zhàn)”啊。
? ? ?在上周筆者參加了杭州市青少年科技節(jié)的閉幕式,看到小學生們用Switch玩體感游戲,玩的不亦樂乎。我就想能用人工智能插件實現(xiàn)體感玩法么?人工智能插件中有一個類型叫姿態(tài)分析似乎可以識別面部的關(guān)鍵點及人體的關(guān)鍵點,那么利用這個姿態(tài)分析插件中的關(guān)鍵點位置坐標,可以幫助我們實現(xiàn)用身體的某個部分控制游戲角色移動么?
? ? ?帶著以上問題,筆者開始了改造之旅,因為是初試身手,所以筆者希望選擇動作相對簡單的游戲。最后筆者敲定了打磚塊這款游戲,說起打磚塊這個游戲,它是雅達利公司開發(fā),喬布斯及沃茲尼克參與設(shè)計的Breakout的改編版,當年也算是風靡一時的作品了。
? ? ? 那么打磚塊這個游戲用Scratch如何實現(xiàn)呢?下面筆者就通過五個不同的角色來完成一個極簡版的打磚塊。其中分別用到擋板、球、磚塊、gameover及youwin五個角色、其中擋板、球和磚塊都是用的系統(tǒng)默認角色庫里的內(nèi)容,僅僅調(diào)節(jié)了大小,后兩個角色為繪制角色,相信大家也可以輕松搞定。
?
? ?下一步我們就一起來看看每個角色的程序如何編寫:
01
彈球角色
? ? ?彈球角色的程序主要有三個部分:一個用來控制彈球的運動軌跡,一個用來控制彈球的反彈方向,一個用來判斷彈球是否落地(游戲結(jié)束) 。
01控制彈球的運動軌跡
? ? ?重復執(zhí)行之外的部分為彈球的初始位置和初始面向方向,重復執(zhí)行之內(nèi)的移動積木控制彈球的移動速度,剩下三個判斷反彈情況,為了程序可讀性,我將碰到擋板的反彈程序?qū)懗闪藦V播的形式。
02控制彈球碰到擋板后的反彈方向
? ? 用來控制反彈方向及彈球的運行速度。
03判斷彈球是否落地
? ? 用擋板所在的Y坐標來判斷彈球是否落地。
02
磚塊角色
? ? ?磚塊角色的程序一共包含兩個部分,第一部分磚塊陣列的生成,第二部分磚塊部分被擊中的消失及得分反彈。
01磚塊陣列生成
? ? ??設(shè)置好磚塊的起始位置及大小之后,隱藏本體并讓克隆體通過循環(huán)排布為7*4的一個陣列,作為我們的彈球攻擊目標。
02磚塊擊中消失及得分反彈
? ? ?當克隆體磚塊顯示在屏幕最上方之后,凡被彈球擊中則加分并刪除。
03
GameOver角色
用來控制游戲結(jié)束的代碼。
?
? ? ? ?
04
YouWin角色
用來控制游戲勝利的代碼。
??
? ? ? ? ? ? ? ?
05
擋板角色
? ? ?終于來到了我們的重頭戲,擋板角色,我們之前傳統(tǒng)的打磚塊玩法一般會采用鼠標來控制擋板,這時候的程序如下:
? ? ?這時候只要我們鼠標左右移動,就可以控制擋板去攔截彈球了。
? ? ?至此,整個打磚塊游戲就算是完成了,但是我們說這次要做的是一個體感的打磚塊,所以之前的部分是不合格的,我們需要再對控制擋板的程序進行一些修改,使它具備我們需要的能力。
? ? ?那么如何利用姿態(tài)分析積木去控制我們的擋板呢?只需要對擋板角色的程序進行如下的改進即可。
? ? ?由于姿態(tài)分析還是基于攝像頭傳送的圖像來分析的,所以第一步還是要打開攝像頭,設(shè)置好擋板的初始位置之后就是如何控制擋板的問題了,首先我們要重復執(zhí)行姿態(tài)檢測來判斷你目前的姿態(tài),因為姿態(tài)檢測會同時檢測多個點位,所以我們以鼻子這個點位作為我們的檢測目標,同時也讓擋板跟著鼻子的X坐標來移動,這里有一個叫置信度的名詞,顧名思義就是可以相信為真的程度,最高為1,最低為0,以小數(shù)來表示,我們選擇了0.5作為我們的判斷依據(jù),如果機器判斷該點位為鼻子的可信度為0.5以上,則讓擋板跟隨我們的鼻子來進行移動。
? ? ?那么今天我們的整個游戲就改編完成了,由于軟硬件性能的局限,可能在姿態(tài)識別時會有一點延遲,大家可以通過改變彈球的速度來調(diào)整游戲的難度,同時如果大家覺得鼻子控制起來很累,也可以試試左右手腕等其他點位,畢竟姿態(tài)分析積木中可以使用的關(guān)鍵點位有17個之多。
? ? ? 大家也可以根據(jù)官方提供的模板把整個游戲做的更美觀一些,這里只是實現(xiàn)了最基本的功能而已,同時也歡迎大家到廣問AI平臺(open.thinklandai.com)免費試用其他各類AI插件,并用姿態(tài)分析插件做出自己心儀的游戲。
聲明:本文章由網(wǎng)友投稿作為教育分享用途,如有侵權(quán)原作者可通過郵件及時和我們聯(lián)系刪除

- 上一篇
Scratch編程實戰(zhàn) 之 貪吃的火箭
Scratch編程實戰(zhàn) 之 貪吃的火箭 任務(wù)目標 實現(xiàn)兩只小火箭,小火箭能夠在屏幕中自由移動,并且在移動時,每只小火箭能夠拖動出不同顏色的線條;
- 下一篇
用Scratch編寫分辨素數(shù)和合數(shù)的小程序
今天,我們編寫一個可以分辨素數(shù)和合數(shù)的小程序。質(zhì)數(shù)又稱素數(shù)。指在一個大于1的自然數(shù)中,除了1和此整數(shù)自身外,沒法被其他自然數(shù)整除的數(shù)。合數(shù)就是比1大但不是素數(shù)的數(shù)稱為合數(shù)。 實現(xiàn)代碼如下圖: