HTML5小遊戲動手做(一) 簡單的連連看

2021-08-16 17:27:06 字數 1431 閱讀 1778

從本篇起,我將在此展示製作一些html5小遊戲的過程和經驗。本文描述的是乙個經典又簡單的小遊戲,連連看。

我們使用隨機演算法來實現。

* 按總格仔數的一半生成隨機圖示/符號串行

* 把序列複製乙份追加到尾部,這樣保證每個圖示都是成對的

* 隨機從序列中取出圖示/符號填充到**中

var symbols = 'abcdefghigklmnopqrstuvwxyz123456789';

function

reset

() for(var i=all-1;i>=0;i--)

}

消去規則:如果玩家先後選擇的兩個格仔中圖示相同而且可以在兩次轉彎內連通,即可消去。

如下圖所示

對於路徑上連續的3個位置,如果第乙個和第三個位置的x, y座標都不同,說明在第二個位置轉了乙個彎。否則同一行,或者列的話,x,y 座標總有乙個相同。

使用深度優先的方式遞迴地求解,用乙個棧來儲存路徑:

function

findpath

(c/*當前位置*/, target/*目標位置*/, pathstack/*路徑棧*/, truncount/*已經轉過的彎*/)

var c_2 = pathstack[pathstack.length-2];

if(c_2&&c_2.x!=c.x&&c_2.y!=c.y)

}if(c == target)

if(c.innerhtml != empty)

if(pathstack.indexof(c)>=0)

pathstack.push(c);

var nexts = neibors(c);//neibors函式用於查詢當前位置的鄰居位置,上下左右

for(var i=0;iif(findpath(nexts[i], target, pathstack, truncount))

}pathstack.pop();

return

false;

}

為了簡單,這裡使用簡單的div+css來顯示格仔,使用字母數字作為圖示/符號。對於nx * ny的遊戲,實際上生成了(nx+2) * (ny+2)個格仔,因為最外面一圈作為邊框(border),邊框不填充圖示,但可以作為連通的路徑的一部分。

.border

.border

.showpath

.cell

.cell

.selected

.cell

.showpath

遊戲好不好玩,其實引數調整非常重要。對於連連看這個遊戲主要需要考慮的引數有:

請在這裡檢視**及執行結果。

html5小遊戲基礎知識

顯示乙個div和隱藏乙個div 首先,我們要顯示乙個div和隱藏乙個div需要使用css裡面使用 hide show 在需要顯示或隱藏的div輸入 id title class show id title class hide 還有一種點選顯示和隱藏方法 js裡面的 function fun id ...

Html5小遊戲之變大的小球

現在很流行html5,所以我也花時間去學一下,我主要學習的是canvas標籤,因為它可以畫圖,寫小遊戲。發覺canvas寫遊戲跟用dom操作來寫遊戲很不同 1,canvas是一張畫布,所有東西都是畫上去的,如果需要移動某個元素,需要擦掉它,然後再畫個新的上去。2,dom操作,如果要畫乙個東西,需要將...

HTML5 建立手機滾珠子小遊戲 (一)

人生第一次寫技術部落格,還是真是相當艱辛啊,望各位看官多多包涵。現在說說我的開發思路,由於是初學者,所以又害怕自己不夠堅持寫完這個小遊戲,所以寫篇部落格監督下自己,順便看看自己的進度。第一,寫個html5模板頁面,並且測試一下瀏覽器是否支援devicemotionevent屬性,大概如下 第二,開始...