0050 游戲連連看的初始化以及點(diǎn)擊事件

上節(jié)課初步實(shí)現(xiàn)了網(wǎng)頁(yè)游戲連連看的顯示內(nèi)容和樣式宏娄。
這節(jié)課說(shuō)明如何實(shí)現(xiàn)關(guān)卡初始化以及點(diǎn)擊事件和消除方塊。

初始化隨機(jī)生成關(guān)卡

前面函數(shù)已經(jīng)做好了逮壁,設(shè)置的是一個(gè)固定的值孵坚。
將固定的值修改為隨機(jī)函數(shù),取值范圍從1到難度設(shè)置的值窥淆。
例如難度設(shè)置第一關(guān)最多30種圖形卖宠,則取值范圍從1到30。第2關(guān)則取值范圍從1到32忧饭。以此類推扛伍。
linklink.js修改如下:

3-9-1.jpg

刷新網(wǎng)頁(yè):

3-9-2.jpg

可以看到隨機(jī)函數(shù)起作用了。

認(rèn)真觀察生成的圖片情況词裤,發(fā)現(xiàn)2個(gè)問(wèn)題:
1.隨機(jī)函數(shù)生成的時(shí)候蜒秤,隨意性太大汁咏,可能某個(gè)圖片出現(xiàn)的次數(shù)太多而另外某個(gè)圖片可能根本不出現(xiàn)亚斋,需要將這個(gè)出現(xiàn)次數(shù)的差異性盡量降低一些作媚。
2.連連看游戲的規(guī)則要求圖片都是成雙成對(duì)的,如果相同的圖片出現(xiàn)奇數(shù)個(gè)數(shù)帅刊,則游戲無(wú)法完成了纸泡。

控制每種圖片最多出現(xiàn)的個(gè)數(shù)

根據(jù)關(guān)卡難度,每一關(guān)最多出現(xiàn)的圖片的種類數(shù)赖瞒,再根據(jù)總的棋盤的格子總數(shù)女揭,可以計(jì)算出每種圖片出現(xiàn)的次數(shù)的平均值。
然后將平均值向上取整栏饮,然后如果是奇數(shù)再加1變?yōu)榕紨?shù)吧兔。就可以得到每種圖片最多出現(xiàn)的次數(shù)。
然后做一個(gè)統(tǒng)計(jì)數(shù)組袍嬉,里面每生成一個(gè)隨機(jī)圖片境蔼,就往統(tǒng)計(jì)數(shù)組對(duì)應(yīng)的圖片值加1,如果達(dá)到最多出現(xiàn)次數(shù)伺通,則重新?lián)Q一個(gè)隨機(jī)圖片箍土。
這樣的方式可以確保每種圖片是平均出現(xiàn)的,不會(huì)出現(xiàn)的次數(shù)差異太大罐监。
linklink.js修改如下:

3-9-3.jpg
3-9-4.jpg

刷新網(wǎng)頁(yè):

3-9-5.jpg

可以看到吴藻,圖片出現(xiàn)的次數(shù)變的比較平均了。

要考慮成對(duì)出現(xiàn)的情況

再來(lái)解決每種圖片出現(xiàn)的個(gè)數(shù)必須是偶數(shù)的情況弓柱。
圖片生成之后沟堡,每種圖片出現(xiàn)的次數(shù)分別統(tǒng)計(jì),只可能是2種結(jié)果矢空,要么是奇數(shù)航罗,要么是偶數(shù)。
如果是偶數(shù)則不用管了妇多,如果是奇數(shù)伤哺,則將這些奇數(shù)的情況放入一個(gè)列表中,存儲(chǔ)的是圖片序號(hào)者祖。
很明顯立莉,這個(gè)列表的元素總數(shù)肯定是偶數(shù),因?yàn)檎麄€(gè)棋盤是偶數(shù)的七问。
那么這個(gè)列表進(jìn)行循環(huán)蜓耻,每次步進(jìn)2個(gè)元素,將這個(gè)2個(gè)元素械巡,一個(gè)做加1刹淌,一個(gè)做減1饶氏,結(jié)果必然就是2個(gè)對(duì)應(yīng)圖片都是偶數(shù)了。
具體就是根據(jù)這要減1的圖片序號(hào)有勾,去已生成的棋盤存儲(chǔ)數(shù)據(jù)中找到相等的圖片序號(hào)的位置疹启,將此位置的圖片序號(hào)改為加1的圖片序號(hào)。
linklink.js修改如下:

3-9-6.jpg
3-9-7.jpg

刷新網(wǎng)頁(yè):

3-9-8.jpg

統(tǒng)計(jì)每一種圖片個(gè)數(shù)蔼卡,可以看到全部都是偶數(shù)了喊崖。

每一關(guān)單獨(dú)測(cè)試

修改變量level的值,這樣可以測(cè)試每一關(guān)雇逞,不同難度的數(shù)值荤懂,生成關(guān)卡數(shù)據(jù)是否有異常。
linklink.js修改如下:

3-9-9.jpg

刷新網(wǎng)頁(yè):

3-9-10.jpg

可以看到第2關(guān)的情況塘砸,出現(xiàn)了新的圖片了节仿。說(shuō)明關(guān)卡不一樣了。
多刷新幾次網(wǎng)頁(yè)掉蔬,看看是否出現(xiàn)異忱认埽或者需要花費(fèi)很長(zhǎng)時(shí)間。
然后依次修改這個(gè)值眉踱,從3到9挤忙,測(cè)試每一關(guān)都能正常生成相應(yīng)數(shù)據(jù)。

編寫點(diǎn)擊處理事件

初始化完成之后谈喳,來(lái)處理圖片點(diǎn)擊事件册烈。
可以參照之前做算24點(diǎn)的做法,選中的圖片修改css樣式的名字婿禽。
新增2個(gè)參數(shù)為selectrow和selectcol赏僧,默認(rèn)為-1,表示無(wú)選中扭倾。
如果沒(méi)有選中圖片淀零,則修改樣式為選中,并且將selectrow和selectcol設(shè)置為選中的行號(hào)和列號(hào)膛壹。
如果已經(jīng)有一個(gè)選中圖片驾中,則判斷當(dāng)前點(diǎn)擊的圖片序號(hào)和之前選中的序號(hào)是否相同,不相同則切換選中焦點(diǎn)模聋。
如果相同則需要判斷是否可以連通肩民,默認(rèn)判斷函數(shù)都是可連通的,后面再來(lái)編寫判斷函數(shù)链方。
如果連通的話持痰,則將這2個(gè)位置的圖片序號(hào)都設(shè)置為0,并修改圖片的src屬性祟蚀」で希看起來(lái)就是圖片消除了割卖。
linklink.js修改如下:

3-9-11.jpg
3-9-12.jpg

刷新網(wǎng)頁(yè):

3-9-13.jpg

點(diǎn)擊某個(gè)圖片:

3-9-14.jpg

可以看到選中狀態(tài)了,然后點(diǎn)擊一個(gè)不同的圖片:

3-9-15.jpg

可以看到選中的焦點(diǎn)切換到后面的圖片患雏,然后點(diǎn)擊另外一個(gè)相同的圖片:

3-9-16.jpg

可以看到2個(gè)相同圖片消失了鹏溯。同時(shí)選中焦點(diǎn)也消失了。

假設(shè)都是不連通情況的處理

剛才是將連通函數(shù)都是返回true纵苛,那么還有可能是false剿涮。
這種情況下的處理就是不消除圖片,僅僅是將選中焦點(diǎn)清除攻人。
linklink.js修改如下:

3-9-17.jpg
3-9-18.jpg

刷新網(wǎng)頁(yè):

3-9-19.jpg

選中一個(gè)圖片:

3-9-20.jpg

然后點(diǎn)擊另外一個(gè)相同的圖片:

3-9-21.jpg

可以看到,沒(méi)有消除這2個(gè)圖片悬槽,僅僅是選中焦點(diǎn)消失了怀吻。
下節(jié)課,就來(lái)重點(diǎn)編寫最核心的算法:判斷是否可以連通函數(shù)初婆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蓬坡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子磅叛,更是在濱河造成了極大的恐慌屑咳,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弊琴,死亡現(xiàn)場(chǎng)離奇詭異兆龙,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)敲董,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門紫皇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人腋寨,你說(shuō)我怎么就攤上這事聪铺。” “怎么了萄窜?”我有些...
    開(kāi)封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵铃剔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我查刻,道長(zhǎng)键兜,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任赖阻,我火速辦了婚禮蝶押,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘火欧。我一直安慰自己棋电,他們只是感情好茎截,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著赶盔,像睡著了一般企锌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上于未,一...
    開(kāi)封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天撕攒,我揣著相機(jī)與錄音,去河邊找鬼烘浦。 笑死抖坪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闷叉。 我是一名探鬼主播擦俐,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼握侧!你這毒婦竟也來(lái)了蚯瞧?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤品擎,失蹤者是張志新(化名)和其女友劉穎埋合,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萄传,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甚颂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盲再。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片西设。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖答朋,靈堂內(nèi)的尸體忽然破棺而出贷揽,到底是詐尸還是另有隱情,我是刑警寧澤梦碗,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布禽绪,位于F島的核電站,受9級(jí)特大地震影響洪规,放射性物質(zhì)發(fā)生泄漏印屁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一斩例、第九天 我趴在偏房一處隱蔽的房頂上張望雄人。 院中可真熱鬧,春花似錦竹习、人聲如沸派继。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)旗吁。三九已至踩萎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間很钓,已是汗流浹背香府。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留码倦,地道東北人企孩。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像叹洲,于是被迫代替她去往敵國(guó)和親柠硕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容