微信小遊戲 flappy bird

2022-03-11 01:52:34 字數 2826 閱讀 4981

1:單例模式實現 //data類,director類實現,

2:靜態方法實現 //精靈類

3:es6物件導向,類本身是乙個函式,方法和屬性作為原型鏈的方法存在的。

4:es5物件導向,es6物件導向

//寄生組合繼承

functionperson(name,age)

person.prototype.say =function()

lets =newperson("張",12)

lets2 =

s.say.call(s2)

5:遊戲實現

1:封裝,資源封裝(datastore),資源的載入(fristload),背景圖的繪製,地面的繪製

2:重繪api requestanimationframe(()=>this.run());

//在遊覽器重新整理之前進行重新整理,效能比較高

3:小遊戲實現原理:整張圖重繪(本質就是不斷的重繪重新整理)

//了解一下export export

default的區別乙個引人加{},export default則不需要

4:繪製:

(1)背景圖繪製

(2)地板繪製

解決問題:1:繪製位置問題,不停移動位置

(3)鉛筆繪製 解決問題:隨機的高度,繪製的高度,2組鉛筆同時的顯示(x座標要一致),鉛筆要被地板蓋住(canvas繪製圖形的位置問題),鉛筆要能重複繪製,

//隨機高度問題:top值設定乙個中間數值,最高不能有一半高度,
constmintop =window.innerheight/8;

constmaxtop =window.innerheight/2;

consttop = mintop +math.random() * (maxtop - mintop);

//鉛筆同時對於,上下就是x座標相同,重複繪製也就是,在進行建立一組鉛筆進入陣列,在前面繪製的陣列超過邊界的時候把其銷毀。

constpencils =this.datastore.get('pencils');

//判斷陣列是否越界,x橫座標,初始值在視窗的右側

if((pencils[0].x+ pencils[0].width)

<=0&&

pencils.length ===4 )

//建立

if(pencils[0].x<=(window.innerwidth - pencils[0].width)/2 && pencils.length

=== 2 )

記憶體釋放功能:新增乙個gameover屬性

//用來清除定時器。釋放記憶體

(4)小鳥的三種狀態的繪製,剪裁的寬高,加速度重力下落的效果(這個很關鍵),點選事件會上公升的效果,小鳥和鉛筆模型的建立過程以及碰撞檢測。

const speed = 0.2; //模擬切換的速度

this.count = this.count + speed;

//模擬的速度

if(this.index >=2)

鉛筆碰撞檢測:

//繪製出小鳥的邊框模型:小鳥的上下左右的位置,不是css的定位的屬性,是canvas,原點的相對位置

const birdsborder = {

top: birds.y[0],

bottom: birds.birdsy[0] + birds.birdsheight[0],

left: birds.birdsx[0],

right: birds.birdsx[0] + birds.birdswidth[0]

//繪製鉛筆的位置。

//鉛筆是迴圈裡面的數值,因為鉛筆的模型很多,上下一對,一共2租,鳥只有乙個

for (let i = 0; i < length; i++) {

const pencil = pencils[i];

const pencilborder = {

top: pencil.y,

bottom: pencil.y +

pencil.height,

left: pencil.x,

right: pencil.x + pencil.width

if (director.isstrike(birdsborder, pencilborder)) {

console.log('撞到水管啦');

this.isgameover = true;

return;

//判斷條件,小鳥的頭部撞到鉛筆的頭部,小鳥的地步撞到下鉛筆的地步,小鳥的左部分撞到鉛筆的右部分,小鳥的右部分撞到鉛筆的左部分。

(5)計分分數類

1:什麼時候加分,在越過鉛筆的時候開始加分(不能發生碰撞的時候進行檢測)

2:控制加分的速度,因為canvas重新整理評率很快所以需要設計乙個flag來標誌能否加分。

//經過檢測之後,如果小鳥的左邊超過了鉛筆的右邊沒有碰撞上就可以算加分成功,

微信小遊戲解包

安裝夜神模擬器 並開啟root 找到目錄下的.wxapkg檔案,通過qq傳到pc上 由於訪問許可權問題,有可能會傳送失敗,這時候可以把.wxapkg壓縮成zip檔案再通過qq傳輸 安裝nodejs 安裝依賴 npm install esprima npm install css tree npm i...

微信小遊戲2

建立畫布 const canvas wx.createcanvas 在 game.js 中輸入以上 並儲存 外鏈轉存失敗 img raz17njs 1564146105342 橫向居中 外鏈轉存失敗 img uk8ya6v8 1564146105344 context.fillrect canvas...

微信小遊戲資源載入

ccc已經幫我們做好了資源載入的大部分處理,我們只要用就好了。這裡教大家怎麼用本地伺服器來測試。ccc官方教程。安裝開啟cmd管理員視窗輸入npm v 檢測node.js是否安裝成功 建立乙個目錄,用來存放專案資源檔案,比如f tempgameres。開啟這個目錄,按shift 右鍵,在此處打控制台...