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