一、彈力球遊戲機
網路上有許多有趣的小遊戲,有一種打磚塊的的遊戲,球會在螢幕上彈來彈去,若打中了磚塊就可以獲得分數,我們也來設計一個類似的小遊戲—彈力球。
球本身會自行在螢幕上移動,碰到牆壁會自動反彈。
使用者操控鍵盤控制綠色長棍,保護彈力球不要掉到地上。
彈力球存活時間越久,分數就越高。
先想一下這個遊戲必須解決哪些小問題?
設計操作畫面
如何讓球動起來?
如何從鍵盤控制綠色長棍左右移動?
球碰到棍子時,該如何反彈?
如何顯示得分?
如何判斷出界(遊戲結束)?
如何增加困難度?
第一步
載入Xy-grid背景圖,放置二個角色:球(Basketball),綠色長棍(Paddle),並且加上一個得分變數。綠色長棍的Y座標請設定在約-150的位置。
第二步
一開始先設定球的起始位置與方向,然後使用無窮迴圈指令重複執行,每次都讓球移動10點距離,並自動判斷遇到邊緣就反彈。
這個迴圈我們稱為球的主迴圈,在程式終止前,這個迴圈會一直不停的運作,之後如果要幫球增加功能,都在這個主迴圈裡面增加程式。
第三步
如何從鍵盤控制綠色長棍(Paddle)左右移動?在偵測工具類別內,會看到可以偵測方向件的元件,點選色框切換按鍵種類,就可以偵測各種不同的按鍵是否被按下。
因為是要控制綠棍子動作,所以要先在角色區點選綠棍子,代表接下來的程式,是用來控制綠棍子的,與別的物件無關。
若要移動綠棍子向左,相當於將綠棍子的X座標遞減,程式就把X改變-10,這就是遞減的意思。相同的道理,向右應該如何改變X呢?
第四步
球碰到棍子時,該如何反彈?
因為兩者相碰,是球要做出動作,所以接下來的程式要寫在球的程式區,請先點選角色區的球,然後在工具箱的偵測分類裡面找到碰撞偵測,在紅框內也可以改變要偵測哪一個物件。
想想看如何在球的主迴圈程式內增加一段條件判斷程式,用來偵測兩者是否碰撞?程式片段如下(這段程式碼必須加到球的主迴圈內)。
第五步
如何顯示得分?
在程式內放一個計時器(位於偵測類別內),計時器會一直回傳程式執行的時間,用四捨五入的元件將數值變成整數,這個數值可以拿來當作遊戲得分,所以就存放到「得分」變數內。
第六步
判斷出界(遊戲結束)
當球掉到比綠棍子還低的位置,代表綠棍子已經救不回球了,這時候遊戲就結束。該如何判斷球的位置已經比綠棍子還低呢?
答案是由球的y座標來判斷,綠棍子的y座標是-150,如果球的y座標<-150,代表球已經出界了。請試著寫一個判斷程式,判斷球是否出界。
若要自己挑選音效的方法如右:
第七步 增加困難度。
如果得分超過5分後,綠色棍子變小
(降為50%)。(此程式需加到球的主迴圈內)
如果得分超過10分後,球的速度變快(原本移動距離10點,改成再多跑10點)。(此程式需加到球的主迴圈內)
如果得分超過15分後,球變小(降為50%)。
(此程式需加到球的主迴圈內)
進階練習
試著再增加一組綠棒子,並且用鍵盤A、D 當作方向鍵,讓第二個人操控,變成雙人桌球遊戲。
二、迷宮遊戲
很多人都玩過迷宮遊戲,該如何設計一個迷宮遊戲呢?下圖這個迷宮遊戲,就是控制小貓在迷宮內前進,直到走到終點吃下蘋果,遊戲就結束。
當使用者按下其他方向按鍵時(「向下」、「向左」、「向右」),能控制小貓往對應的方向移動,請問程式該如何寫?
如果希望每次程式執行時,小貓都能重新站到出發點開始,該如何寫程式?
進階練習
增加遊戲難度。例如多了一隻怪獸,它會不斷地在地圖中上下移動,如果小貓碰到它,就會立刻回到起點重新開始,想想看該如何寫這段程式。
第一步
在舞台區選擇迷宮圖檔,加入到程式內的背景。加入角色:小貓(Sprite1),蘋果(Apple),並且將小貓放在迷宮的入口,蘋果放在出口。
第二步
接下來該如何撰寫程式控制小貓移動?
點選小貓角色,撰寫以下程式,當使用者按下 “向上”方向鍵的時候,必須改變小貓的 y 座標值,所以就設定 y 改變5個單位。