高瀾心
打地鼠是一款大眾喜愛的經(jīng)典游戲,這次我們自己制作一個。在手機(jī)上用手指頭快速打擊出洞的地鼠,即可獲得分?jǐn)?shù)。通過制作這個游戲,我們會涉及多屏幕切換、多組件模塊組合使用、畫布與精靈的坐標(biāo)、計(jì)時器的應(yīng)用等知識點(diǎn)。通過綜合運(yùn)用各種技巧讓我們的游戲可玩性更高。
游戲開始后進(jìn)入選擇場景頁面,可以選擇3個場景(圖1)。
場景1:地鼠隨機(jī)出現(xiàn)在屏幕任何位置,每500毫秒移動一次,如果玩家手指觸摸地鼠,顯示命中數(shù)增加1,并伴有音效;如果手指觸摸到屏幕但沒有擊中地鼠,則失敗數(shù)增加1(圖2)。
場景2:地鼠隨機(jī)出現(xiàn)在地洞中,當(dāng)擊中10次地鼠時,游戲結(jié)束并顯示“你贏了”(圖3)。
場景3:在倒計(jì)時60秒時間內(nèi),每次擊中地鼠時命中數(shù)增加1,當(dāng)時間為0時,顯示“游戲結(jié)束,請重新開始”(圖4)。
登錄到http://app.gzjkw.net/等開發(fā)網(wǎng)站,新建項(xiàng)目,命名為“dadishu”。收集項(xiàng)目需要的素材:圖片4張(地鼠mole.png、被打中地鼠mole2.png、洞hole.png、2場景背景background.png、3場景背景background2.png)和擊中音效(zong.mp3)(圖5)。
初始屏幕提示了游戲名,為3個不同場景做引導(dǎo)。初始屏幕的組件屬性設(shè)置如表1,組件排布如圖6。
表1
游戲由多個屏幕組成,點(diǎn)擊初始屏幕的三個按鈕可以切換到其他屏幕。這里我們使用了簡單的直接打開另一屏幕。App Inventor中,屏幕不能訪問另一個屏幕的組件或者變量,如果要實(shí)現(xiàn)屏幕之間的值傳遞,可以用“打開屏幕并傳值”和“關(guān)閉屏幕并返回值”模塊,不過這個模塊只能傳輸一個值,如果需要傳入多個值,可以通過列表的形式來傳遞。接收返回值時,可以使用“獲取初始值”模塊(圖7)。
用“新增屏幕”新建一個屏幕,命名為“Screen_first”。注意屏幕組件一旦命名確定后就不能修改了。場景1的組件屬性設(shè)置如表2。
表2
想要控制地鼠的移動,我們先要了解Android的圖形定位機(jī)制,坐標(biāo)(0,0)在畫布的左上角,圖像精靈的左上角是坐標(biāo)(x,y)。
因此當(dāng)?shù)厥笪挥诋嫴甲笊辖菚r,其x和y值都是0。當(dāng)?shù)厥笪挥诋嫴嫉挠蚁陆菚r,坐標(biāo)是(畫布的寬度-圖像精靈的寬度,畫布的高度-圖像精靈的高度)。所以地鼠的移動范圍如圖8。
在游戲開始前,為了讓所有組件不能意外移動,用一個全局變量來檢測游戲狀態(tài),建立全局變量“游戲已經(jīng)開始標(biāo)志”。游戲沒開始時設(shè)為“假”,當(dāng)點(diǎn)擊開始設(shè)為“真”,其他組件先檢查這個變量是否為“真”再進(jìn)行后續(xù)的動作。
點(diǎn)擊“開始”按鈕,游戲回復(fù)到初始狀態(tài)。計(jì)時器、計(jì)數(shù)都?xì)w零,畫布可以觸碰,地鼠開始移動。
為了讓地鼠固定時間移動一次,計(jì)時也需調(diào)用“地鼠移動”,如果調(diào)試時覺得地鼠移動得太快或太慢,可以改變“計(jì)時器_地鼠”的時間間隔如圖9。
通過畫布的被觸碰事件來處理地鼠被擊中后的過程。XY坐標(biāo)表示手指觸摸點(diǎn),用“碰到任意精靈”來檢測是否碰到地鼠。
先檢查“游戲已經(jīng)開始標(biāo)志”變量是否為“真”,為真表示游戲進(jìn)行中。
如果“任意被觸碰的精靈”為真,表示碰到了地鼠,則命中數(shù)加1,并播放音效。否則,失敗數(shù)加1(圖10)。
場景2中,我們讓地鼠出現(xiàn)在洞中,用5個圖像精靈表示地洞,這5個圖像精靈的屬性全部默認(rèn),我們后面用程序控制它們的外觀,其余組件與場景1類似(圖11)。
利用列表對5個地洞設(shè)置圖片為“hole2.png”。首先創(chuàng)建空列表“地洞”,將5個圖像精靈直接作為列表項(xiàng);使用左側(cè)模塊中“任意組件-任意圖像精靈”中的“設(shè)置圖像精靈 圖片”模塊,循環(huán)為將每一項(xiàng)的圖片設(shè)為“hole2.png”。
因?yàn)槲覀冃枰獙Χ鄠€圖像精靈進(jìn)行設(shè)置不是特指,所以才需要使用“任意組件”中的模塊來泛指所有需要設(shè)置的多個組件(圖12)。
列表中“圖像精靈_洞1”模塊比較特殊,它沒有具體屬性而是代表這個圖像精靈本身,你可以在所有屬性的最后找到它。
地鼠必須出現(xiàn)在某個洞口,程序要用同樣的XY坐標(biāo)數(shù)字控制地鼠和地洞,我們可以在保持地鼠和地洞圖片的大小相同前提下,調(diào)整圖像中兩者的位置達(dá)到需要的效果(圖13)。
由于畫布中有多個圖像精靈,場景1中的判斷方式就不適用了。需要用“圖像精靈_地鼠被觸碰”來判斷(圖14)。
點(diǎn)擊開始按鈕,游戲恢復(fù)初始狀態(tài)。計(jì)時器定時移動地鼠一次。如果點(diǎn)擊返回,則回到“Screen 1”屏幕(圖15)。
在場景3中,洞口就是背景圖的一部分,我們需要預(yù)先將地鼠放在每一個洞口,并記下坐標(biāo)值。用列表存儲這些坐標(biāo)值,用隨機(jī)數(shù)取列表的項(xiàng)目序號的方式來取出坐標(biāo)。為了定位準(zhǔn)確,需要定位畫布的寬和高(圖16)。
游戲已經(jīng)比較完善了,現(xiàn)在為游戲添加一個倒計(jì)時顯示。每隔1秒,倒計(jì)時文本減1,直至為0,游戲結(jié)束,并顯示“游戲結(jié)束,請重新開始”。由于需要在畫布指定位置顯示文字,在點(diǎn)擊開始時還要清除畫布(圖17)。
受篇幅所限,我們只介紹了打地鼠游戲程序中的重點(diǎn)部分,剩下的一些還需要你用已經(jīng)掌握的知識自己完善。