有了前幾個範例的經驗,在這篇文章中就來開始做一個被打擊的對象,並練習如何在不同的角色之間進行互動,以及透過變數來記錄玩家的遊戲分數。還是一樣,先來看看程式的執行過程:

在這個程式中我們需要再多加一個記錄分數的變數,在此將它命名為scores,在建立變數的時候,如果我們把變數打勾(預設的情況),則它會被顯示在舞台的畫面上,如下所示:

這次多了一個角色,就是我們的打靶練習目標–蝙蝠:

在這三個角色中,太空船的部份不用更改,和之前一樣只要負責向左以及向右移動就可以了。而蝙蝠的角色也不會太複雜,它的工作是在程式一開始執行的時候先把scores變數清除為零,接著就是用很快的速度在舞台的上方左右移動,如下所示:

在我們的設計中,如果蝙蝠被擊中的話,我們打算讓蝙蝠從左邊再重新開始飛行,但因為判斷是否被擊中的程式是在砲彈那邊負責,因此就使用傳遞訊息的方式,當砲彈擊中時就發出訊息「hit」,而在蝙蝠這邊則是收到此訊息時就把自己重新定位到左側去,如下所示:

在砲彈的部份,基本的程式積木和前一個範例並沒有什麼差別:

在分身的部份就有許多判斷式要加上去,不過一開始的內容也是一樣:

接下來的判斷式比原本只判斷是否到邊緣之外,還多了一個是否碰到蝙蝠這個角色,而且我們也多加了一個效果,就是在砲彈前進的過程,讓尺寸愈來愈小,增加了前進到遠方的感覺,如下所示:

由於上述迴圈的結束條件有兩種可能,因此要針對不同的結束情況給定不同的處理方式,如果是碰到邊緣,則處理扣分的部份,如果是碰到蝙蝠的話,則要處理加分的部份:

而不管做哪一個處理,最終都是要把counter恢復為0,然後把分身刪除,如下所示:

完整的程式樍木如下所示:

其中我們有加入一些音效,讓程式的執行過程更加地有趣,同學們可以選用現成的,或是自行錄製都可以喔。下一步,就是要加上計時的功能以及加上一些遊戲上的挑戰,這些就讓同學們自行發揮囉。

 

(1607)