《打磚塊》是歷史最悠久的經(jīng)典游戲之一,它的核心規(guī)則是控制反彈板利用小球撞掉屏幕上部磚塊,小球落地則游戲失敗,磚塊被打完則游戲勝利。
首先使用克隆和坐標(biāo)變化實現(xiàn)磚塊擺放。
其次是小球的運動,運動核心特點是方向在一定范圍內(nèi)有隨機變化;碰到反彈板和邊緣會反彈,碰到磚塊會讓磚塊消失,碰到底部會停止游戲。
最后是反彈板的運動,反彈板跟隨鼠標(biāo)做水平運動。
并據(jù)此將程序分為三個階段框架。并設(shè)置消息對應(yīng)階段,如:“可以開始”表示準(zhǔn)備完成,“開始”發(fā)射小球,“成功”、“失敗”進入對應(yīng)頁面。
準(zhǔn)備階段:設(shè)置磚塊與發(fā)射小球。
游戲階段:控制反彈板接球打掉全部磚塊。
結(jié)算階段:根據(jù)游戲結(jié)果進入勝利頁面或失敗頁面。
反彈板只能跟隨鼠標(biāo)做水平運動,將擋板的x坐標(biāo)與鼠標(biāo)的x坐標(biāo)保存一致即可。實測后添加“碰到邊緣就反彈”到重復(fù)執(zhí)行里面防止反彈板移出舞臺。
用button3作為磚塊角色。用克隆實現(xiàn)復(fù)數(shù)磚塊,其中難點在于確定每個克隆體的坐標(biāo)位置。
這里通過詢問讓玩家自行決定磚塊的行數(shù)。為了保證數(shù)值合法,要對其進行驗證:大于0且不包含小數(shù)點。滿足條件即可開始生成磚塊,否則再次詢問。
根據(jù)舞臺的寬度,決定每行放10塊磚,磚塊長36,寬19。第一塊在(-180,135)處。磚塊每行需要錯開,奇數(shù)行橫向多偏移18,用(行數(shù)÷2的余數(shù)=1)判定奇數(shù)。
用兩個變量記錄行數(shù)和列數(shù),每次克隆后用(列數(shù)×36,行數(shù)×19)來移動本體位置。每次克隆后列數(shù)加一,每克隆完一行,將行數(shù)加一且列數(shù)歸0。
完成準(zhǔn)備階段后磚塊本體隱藏并廣播“可以開始”。
小球最開始處于隱藏狀態(tài)。接收到“可以開始”消息后,等待按下空格鍵開始游戲,廣播“開始”。
小球接收到開始命令后,移到反彈板上顯示并發(fā)射出去,方向為向上的正負(fù)45范圍內(nèi)。
小球在運動過程中會碰到地面、舞臺邊緣、磚塊和反彈板。
在Blue Sky背景中,利用小球碰到地面的棕色作為判斷條件,達成表示游戲失敗。
小球碰到舞臺邊緣會反彈。碰到磚塊會反彈(直接改變方向為180),并發(fā)出聲音。
小球碰到反彈板也會反彈。將方向改成向上的正負(fù)45范圍內(nèi)就可以了。然后加上移動和重復(fù)執(zhí)行,就可以完成小球的運動程序了。
磚塊的克隆體被小球碰到會消失,當(dāng)所有磚塊消失,游戲勝利。用變量“打掉磚數(shù)”記錄消失的磚塊數(shù),當(dāng)打掉磚數(shù)與磚塊總數(shù)相等時,判定游戲勝利。
磚塊數(shù)量等于行數(shù)10乘以列數(shù)。消失用刪除克隆體實現(xiàn)。
最后還需要對所有涉及的變量設(shè)置初始狀態(tài),可放在游戲開始處。
根據(jù)游戲失敗和勝利,用改變背景的方式展示不同結(jié)局。設(shè)置三個背景,初始背景和兩個帶有勝利和失敗文字的背景。
一開始展示初始背景,當(dāng)接收到勝利切換成勝利背景并停止全部,當(dāng)接收到失敗則切換成失敗背景并停止全部。
點擊綠旗測試調(diào)整,你可能會發(fā)現(xiàn)磚塊有時候需要打擊多次才消失,這是由于碰撞判定不同步產(chǎn)生的情況,Scratch在多線程處理程序時會產(chǎn)生誤差,并非Bug。
本例主要是對現(xiàn)有項目或生活現(xiàn)象進行分析,轉(zhuǎn)化成Scratch程序,主要方法為“解析—搭建框架—分拆目標(biāo)—編寫程序—調(diào)試完善”五個環(huán)節(jié),經(jīng)過學(xué)習(xí),你可以繼續(xù)嘗試分析其他項目獨立制作Scratch程序,相信你也能完成各種優(yōu)秀精美的作品。