連連看小遊戲前端實現

2022-03-09 13:13:25 字數 4201 閱讀 1884

先看一下遊戲的介面:一點選開始,遊戲就開始計時,頂部的折扣會飛速上公升,如果玩家玩的速度太慢的話那麼只能拿到乙個他都不想要的折扣了,呵呵

>開始

span

>

div>

div>

var gridw = document.width / 7;//

每乙個格仔的寬度,根據螢幕的寬度來定,做到自適應

var gridh = document.width / 7;

var get = function

(str);

varpngs;

var leftpair = 10;

var nums = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10];//

此陣列用於隨機的布局20張,只有10種,每種2張,到時候逐一取出數字來,再從pngs這個陣列上取出物件

var darray = ;//

這個太重要了,這個是乙個7*7的二維陣列,通過這個陣列,我能夠知道在某一點上有沒有物體,以及兩個物體是不是同乙個物體,這樣才能判斷我需不需要對兩個物體進行消除計算,他的初始化在下方

var gamestart = false;//

遊戲有沒有開始的標記,false表示不能開始,點選無效

var canvas = document.getelementbyid("gamebody");

var canvas_x = canvas.offsetleft;//

遊戲canvas距離螢幕左邊的距離

var canvas_y =canvas.offsettop;

var cxt = canvas.getcontext('2d');

window.onload = function

());

}function layout()

while(nums.length)

}}window.coor_1 = null;//

這兩個玩意重要了,他們是當前被點選的兩張的經紀人,到時候就根據他兩來決定要不要進一步的消除演算法

window.coor_2 = null

;/*下面這段要好好講一下,這裡存在乙個相容性問題,就在昨天下班前,document.body這個位置還是canvas,在不太老的安卓機器上跑得很順暢,但是在安卓2.3或者更老的機器上,出現這樣乙個問題:點選canvas就會出現乙個透明框,乙個不太敢確定的原///因是,安卓2.3上的html5 canvas一旦監聽click事件,一點選就出現這個透明框,用其他的比如touchstart之類的事件是沒有問題的,找來找去沒找到方案,最好主管提示我可以把事件繫結在全域性上,那麼稍作修改,也能跑,並且老安卓也ok了。*/

document.body.addeventlistener('click' , function

(e)

var coor_x = math.floor((e.pagey-canvas.offsettop) /gridw);

var coor_y = math.floor(e.pagex /gridw);

if(!darray[coor_x][coor_y])

if(!window.coor_1)

else

else

if(window.coor_1 &&window.coor_2)

}e.stoppropagation();

} ,

false

);function

zerocorner(coor_1 , coor_2 , next)

if(coor_1[0] == coor_2[0])

else

}else

if(next)

}else

if(coor_1[1] == coor_2[1])

如果最大值是0或者兩者是隔壁,說明此路可走

if(next)

else

}else

if(next)

}}function

onecorner(coor_1 , coor_2 , next)

else

}else

if(! darray[diagonal_2[0]][diagonal_2[1]] && zerocorner(diagonal_2 , coor_1 , false) && zerocorner(diagonal_2 , coor_2 , false

))else

}else

if(next)

}function

twocorner(coor_1 , coor_2)

if(onecorner(coor_1_arr[i] , coor_2 , false) && zerocorner(coor_1_arr[i] , coor_1 , false

)) }

for(var i = 0 ; i < coor_2_arr.length ; i ++)

if(onecorner(coor_2_arr[i] , coor_1 , false) && zerocorner(coor_2_arr[i] , coor_2 , false

)) }

cleanrect(window.coor_1);

window.coor_1 = null

; window.coor_2 = null;}

function

clear(coor_1 , coor_2)

}function

drawrect(coor)

function

cleanrect(coor_1)

var canvas_timing = get('gamehead');

var cxt_timing = canvas_timing.getcontext('2d');

function

timing(str)

var step = 0.05;

var discount = 0;

window.timinginterval = setinterval(function

() } , 80);

}get('playagain').addeventlistener('click', function

() );

連連看小遊戲,遞迴問題

題目源自 程式設計實習 12章 遞迴問題。思路根本方式是遞迴,走迷宮類問題,處在每一步上都要列舉下一步的方向,用move陣列來儲存行進方向。另外用mark陣列來儲存是否訪問過 開始用puzzle陣列來表示板子分布,然後在外面多加一圈來輔助計算。遞迴函式關鍵在於每一次呼叫時,先判斷 當前步數是否大於最...

連連看小遊戲專案梳理

如何保證每個元素都能找到配對的元素並且遊戲可以開始進行?直接相連的元素,需要拐乙個彎的元素,需要拐兩個彎的元素 如果有拐角的話,拐角的線是怎麼畫出來的 路徑是怎麼找到的?直接相連的元素 屬於同一行和同一列上的 需要拐乙個彎的 在乙個矩形的對邊的位置上,找到矩形的另外一組對角線,判斷before el...

BFS 連連看遊戲

時間限制 2 sec 記憶體限制 10 mb 提交 207 解決 27 提交 狀態 討論版 大家都玩過連連看吧!今天我們玩乙個類似的遊戲。在乙個由10 10個小方格組成的矩形裡有n n 10 對字元 它們是大寫字元中的前n個 矩形裡有些位置是可以從上面走過,有些則不能。能走過的位置用 標識,不能的用...