先看一下遊戲的介面:一點選開始,遊戲就開始計時,頂部的折扣會飛速上公升,如果玩家玩的速度太慢的話那麼只能拿到乙個他都不想要的折扣了,呵呵
>開始
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個 矩形裡有些位置是可以從上面走過,有些則不能。能走過的位置用 標識,不能的用...