小游戲開發(fā) Mario (9)

上兩周主要給大家介紹了游戲中是如何檢測游戲角色和游戲角色和障礙物間的碰撞。今天回到 mario 繼續(xù)寫我們 super mario 這款游戲。

在開始新的內(nèi)容之前,我們需要整理一下前面的代碼。我們看圖中的 loadBackgroundSprites 和下面定義的 comp 對象都是應(yīng)該屬于 level(關(guān)卡),因?yàn)樗麄兌紩P(guān)卡息息相關(guān)。關(guān)卡包含背景圖的組合(這里所謂組合將許多層組合為背景展示給用戶)

創(chuàng)建 Level 類,Level 中我們將 compositor(圖層組合)游戲角色集合 entities。

介紹一下 ES6提供了Set 數(shù)據(jù)結(jié)構(gòu)。類似于數(shù)組,但是沒有重復(fù)值。下面代碼可以幫助大家理解 Set 數(shù)據(jù)結(jié)構(gòu)。

回到主(main.js)函數(shù),由于 comp 已經(jīng)成為 Level 一個(gè)屬性,我們就可以刪除此行代碼。

我們將與 Level 有關(guān)的代碼移到 Level 類中來整合代碼,已經(jīng)類的概念,也就是面向?qū)ο缶幊痰慕K極目標(biāo)就是復(fù)用代碼

在 loader.js 我們對 loadLevel 進(jìn)行改動(dòng),改動(dòng)力度很大,稍一說明。在讀取 json 和加載背景 sprite。兩個(gè)加載完成后,我們需要?jiǎng)?chuàng)建 Level 實(shí)例,這個(gè)實(shí)例提供 comp 和 entities 。我們現(xiàn)在就把 compositor 封裝到 Level 類中了。然后把 Mario 看作 Level 的 entities 集合中的一個(gè)。

切換到 layer.js 文件中,進(jìn)行一些調(diào)整,這里內(nèi)容顯然易見,就不做過多解釋了。

修改main.js 中代碼,如下圖。

現(xiàn)在一切和調(diào)整代碼之前一樣,除了沒有看到主角 mario,我們要看到 mario 就還需要一些工作,就是將 mario 添加到 entities 中。

我們把 mario 的 update 方法也移到 Level 這類中,這樣看起來就更合理,因?yàn)樗薪巧亩荚?entities 這個(gè)集合中,所以可以 level 的 update 方法代替 mario(做一個(gè) entity)他自己方法。然后在 level 的 update 方法中,我們遍歷 entities 然后調(diào)用每一個(gè) entity 的 update 方法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 今天我們的目標(biāo)是讓 Mario 動(dòng)起來。根據(jù)所學(xué)的物理知識,知道隨著時(shí)間變化物體的位置發(fā)生改變,那么這個(gè)物體運(yùn)動(dòng)起...
    zidea閱讀 572評論 0 6
  • 3首先我們在上一次代碼基礎(chǔ)上進(jìn)行整理,把 Vec2 類移到 math.js 類中 , 由于以后還需在 math.j...
    zidea閱讀 668評論 0 1
  • 在開始新的內(nèi)容之前,我們先優(yōu)化一下上一次代碼。我們看圖中的代碼 發(fā)現(xiàn)(1)加載圖片和(2)加載關(guān)卡(level)是...
    zidea閱讀 640評論 0 6
  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡單...
    舟漁行舟閱讀 8,118評論 2 17
  • BP神經(jīng)網(wǎng)絡(luò)簡介 信息的正向傳播與誤差的反向傳播 梯度下降算法修正權(quán)值 收斂慢,冗余,過擬合 卷積神經(jīng)網(wǎng)絡(luò) 存在包...
    _不知年閱讀 499評論 0 0

友情鏈接更多精彩內(nèi)容