首先說(shuō)[[], [], ...],這是生成一個(gè)數(shù)組,而這個(gè)數(shù)組中的元素又各為數(shù)組。在JavaScript中,可以通過(guò)方括號(hào)來(lái)定義并初始化數(shù)組, 如:
創(chuàng)新新互聯(lián),憑借10多年的網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站經(jīng)驗(yàn),本著真心·誠(chéng)心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有近1000家案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)建站。
var?a?=?[1,?2,?"text"];
十六進(jìn)制數(shù)的作用未看到使用的代碼,故無(wú)法說(shuō)明。就十六進(jìn)制數(shù)本身來(lái)說(shuō),就是定義一個(gè)數(shù)值而已。
Array(23)則是定義一個(gè)23個(gè)元素的數(shù)組。腳本的第一句,其實(shí)就是定義一個(gè)數(shù)組,有23個(gè)元素,前22個(gè)元素為0x801, 最后一個(gè)元素為0xfff。這樣寫是省去了重復(fù)寫22個(gè)0x801的工作。
R
#board
tr
td{
width:
20px;
height:
20px;
}
/**
*
JS俄羅斯方塊完美注釋版
v
1.01
*
從學(xué)c語(yǔ)言那一會(huì)兒都想寫一個(gè)俄羅斯方塊,可是每次動(dòng)起手總覺得難度太大.
*
今天終于用了大約4個(gè)小時(shí)寫出來(lái)了.
其中在涉及到方塊變型的時(shí)候還咨詢了
*
同學(xué)來(lái)幫忙;
*
*
個(gè)人覺得難點(diǎn)有這么幾個(gè):
*
1:
邊界檢查,
不多說(shuō),
想通了就行
*
2:
旋轉(zhuǎn),
還是數(shù)學(xué)上的方法,
一個(gè)點(diǎn)相對(duì)另外一個(gè)點(diǎn)旋轉(zhuǎn)90度的問(wèn)題.
*
4:
讓整個(gè)程序在點(diǎn)開始之后,
怎么讓它一直自動(dòng)的運(yùn)行下去.
我以前一直沒有做完,
*
主要是因?yàn)闆]有想清楚到底要用一個(gè)什么機(jī)制讓游戲自動(dòng)運(yùn)行下去,
*
這個(gè)過(guò)程可以這么理解:
*
用戶點(diǎn)開始-構(gòu)造一個(gè)活動(dòng)圖形,
設(shè)置定時(shí)器,
*
每次向下移動(dòng)后,
都檢查是否觸底,
如果觸底了,
則嘗試消行,
*
完了之后再構(gòu)造一個(gè)活動(dòng)圖形,
再設(shè)置定時(shí)器.
*/
//表示頁(yè)面中的table,
這個(gè)table就是將要顯示游戲的主面板
var
tbl;
//游戲狀態(tài)
0:
未開始;1
運(yùn)行;
2
中止;
var
status
=
0;
//定時(shí)器,
定時(shí)器內(nèi)將做moveDown操作
var
timer;
//分?jǐn)?shù)
var
score
=
0;
//board是一個(gè)18*10的數(shù)組,也和頁(yè)面的table對(duì)應(yīng).
//用來(lái)標(biāo)注那些方格已經(jīng)被占據(jù).
初始時(shí)都為0,
如果被占據(jù)則為1
var
board
=
new
Array(18);
for(var
i=0;i
看你問(wèn)的這問(wèn)題說(shuō)明你連js的基礎(chǔ)都不怎么懂,
你所說(shuō)的點(diǎn)擊一個(gè)地方把網(wǎng)頁(yè)上的一個(gè)圖片移動(dòng)到你點(diǎn)擊的地方具體實(shí)現(xiàn)方式:
點(diǎn)擊時(shí)獲取當(dāng)前坐標(biāo),再為圖片做一個(gè)動(dòng)畫效果,移動(dòng)到你點(diǎn)擊的位置。
想編游戲先把基礎(chǔ)弄弄好。
前兩行,分別定義了兩個(gè)變量,一個(gè)是map,一個(gè)是tatris。
map是一個(gè)數(shù)組,他用了eval語(yǔ)句執(zhí)行了一段代碼:
"["+Array(23).join("0x801,")+"0xfff]"
大概的意思,就是建立了一個(gè)數(shù)組[],Array(23)是一個(gè)23個(gè)元素的空數(shù)組,然后join的用途是把數(shù)組轉(zhuǎn)化成字符串,字符串最后加上0xfff這樣就變成了:
[0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0xfff]
由eval執(zhí)行上面的字符串,就會(huì)把這個(gè)數(shù)組生成,然后通過(guò)=賦值給map變量。
第二行,就簡(jiǎn)單了,就是一個(gè)聲明了一個(gè)二維數(shù)組,這個(gè)數(shù)組一共7個(gè)成員,數(shù)組的成員是數(shù)組。我估計(jì)就是不同的方塊的排列組合。
之后我們看到后面的代碼有這段
dia=tatris[~~(Math.random()*7)];就是從tatris數(shù)組里隨機(jī)取一個(gè)數(shù)組。也就是提取一個(gè)隨機(jī)的方塊的數(shù)據(jù)。
你這段代碼中,map并沒有提及,我估計(jì)是用來(lái)繪制背景的數(shù)據(jù)之類的東西吧。