陳新龍
在往期的《掌控板之猜拳小游戲》中我們已經(jīng)學(xué)習(xí)了猜拳游戲各種情況的邏輯判斷。今天我們不用掌控板,而是利用Mind+豐富的擴(kuò)展功能制作出讓AI智能通過(guò)電腦攝像頭識(shí)別人的出拳,與AI之間直接玩猜拳的全新猜拳小游戲。在游戲中會(huì)涉及到人工智能中的圖像識(shí)別功能,以及根據(jù)需求靈活運(yùn)用模塊原有功能,在學(xué)習(xí)制作游戲的同時(shí)可以拓展大家的知識(shí)面(圖1)。
Mind+比Scratch有更加豐富的功能模塊,包括支持更多的硬件連接,網(wǎng)絡(luò)服務(wù)……今天我們需要用到網(wǎng)絡(luò)服務(wù)中的“文字朗讀”和“AI圖像識(shí)別”技術(shù)(圖2)。
文字朗讀:用戶可以根據(jù)自己的需要選擇不同的語(yǔ)言,朗讀出不同的文字;
AI圖像識(shí)別:使用圖像AI,可以識(shí)別生活中有趣的東西。如人臉識(shí)別(性別、年齡、臉型、顏值、眼鏡、表情、真人)、人臉對(duì)比、常用物體識(shí)別(植物、動(dòng)物、貨幣)、文字識(shí)別(文字、數(shù)字、車牌)、手勢(shì)識(shí)別等。只用一臺(tái)帶攝像頭的電腦和流暢的網(wǎng)絡(luò)可體驗(yàn)AI圖像識(shí)別玩法。
程序共有7個(gè)角色,小貓角色作為解說(shuō)助手,在的游戲運(yùn)行過(guò)程中說(shuō)明玩法和步驟。還有電腦和玩家的各三種手勢(shì)(石頭、剪刀、布)。
點(diǎn)擊空格鍵開始游戲,電腦自動(dòng)出拳(如果用戶想看系統(tǒng)出拳的結(jié)果可以按1鍵)。玩家需在攝像頭前進(jìn)行拍攝識(shí)別(在識(shí)別的過(guò)程中不要露出臉部,否則的話很難識(shí)別成功),隨后系統(tǒng)判定獲勝方。
用變量分別記錄電腦和玩家出拳的手勢(shì)。變量分為三部分:玩家三種出拳手勢(shì),電腦三種出拳手勢(shì),以及驗(yàn)證電腦和玩家是否出拳……為保證視覺(jué)效果這些變量需全部隱藏(圖3)。
小貓代碼分析:
小貓會(huì)用字幕和語(yǔ)音提示游戲步驟(圖4)。
電腦用1到3之間的隨機(jī)數(shù)確定出拳手勢(shì)(1:石頭2:剪刀3:布)。用廣播與其他角色進(jìn)行交互(圖5)。
AI圖像識(shí)別通過(guò)攝像頭識(shí)別玩家出拳的結(jié)果,語(yǔ)音提示玩家出拳后,在彈出的攝像頭畫面中做出相應(yīng)的手勢(shì)(石頭、剪刀、布)。攝像頭會(huì)截取圖片發(fā)往服務(wù)器進(jìn)行AI圖像識(shí)別,其實(shí)AI圖像識(shí)別這個(gè)擴(kuò)展并沒(méi)有專門為猜拳適配石頭、剪刀、布的手勢(shì),我們只是借用相同的手勢(shì):石頭使用拳頭、剪刀使用數(shù)字二、布使用數(shù)字五。
系統(tǒng)會(huì)一直截取圖片,直到識(shí)別出需要的手勢(shì),界面的右邊猜拳圖片根據(jù)識(shí)別結(jié)果顯示(圖6)。
接收到雙方手勢(shì)后,根據(jù)猜拳的勝負(fù)邏輯進(jìn)行判斷,這部分邏輯判斷往期的文章已經(jīng)學(xué)過(guò)了,最后說(shuō)出勝負(fù)結(jié)果(圖7)。
根據(jù)勝負(fù)結(jié)果顯示相應(yīng)的手勢(shì)角色。
看完與AI猜拳的核心代碼后,程序還有幾個(gè)問(wèn)題需要你自己解決了。電腦出拳結(jié)束后,玩家按下1鍵可以查看結(jié)果。當(dāng)電腦和玩家出拳結(jié)束后,系統(tǒng)是如何判斷勝負(fù)的呢?