同色消除小游戲關(guān)卡和切換小球類(lèi)型邏輯

第一步:

// 游戲相關(guān)變量
var validBallCount;// 可用小球數(shù)量晤揣,隨著關(guān)卡上升而增加,有最大限制
var clearTimeoutId;// 定時(shí)器標(biāo)記
var levelBallsArr;// 用于存放關(guān)卡小球的數(shù)組
var score;// 當(dāng)前游戲得分
var level;// 當(dāng)前游戲關(guān)卡
var levelTime;// 關(guān)卡游戲可用時(shí)間默勾,隨著關(guān)卡上升而減少碉渡,有最小限制
var gamePlaying;// 游戲狀態(tài),標(biāo)記游戲是否正在進(jìn)行

第二步:

/**
 * 創(chuàng)建關(guān)卡
 * 邏輯說(shuō)明:根據(jù)指定的關(guān)卡創(chuàng)建關(guān)卡內(nèi)容
 * 遺留問(wèn)題:創(chuàng)建一個(gè)關(guān)卡的時(shí)候,有一定的機(jī)率出現(xiàn)在創(chuàng)建的時(shí)候所有小球的顏色就已經(jīng)是完全一致了晌坤,怎樣解決盐碱?
 * @param lev 關(guān)卡
 */
function createLevel(lev) {
    level = lev;

    // 如果創(chuàng)建的是第一關(guān),說(shuō)明是從頭開(kāi)始游戲蹋嵌,需要將游戲得分設(shè)置為0
    if (level === 1) {
        score = 0;
    }

    // 關(guān)卡游戲可用時(shí)間, 每上升一級(jí),減少1000毫秒,也就是1秒炫隶,最大30秒,最小值5秒
    levelTime = Math.max(5000, 30000 - (level - 1) * 1000);

    // 用于存放關(guān)卡小球的數(shù)組阎曹,每次創(chuàng)建關(guān)卡時(shí)都要重建伪阶,并把創(chuàng)建的小球存放到數(shù)組中以供后面游戲邏輯調(diào)用
    levelBallsArr = [];

    // 可用小球數(shù)量,每上升3關(guān)增加一個(gè)处嫌,最小值為2個(gè)栅贴,最大值為6個(gè)。具體就是熏迹,1-3關(guān)2個(gè)檐薯,4-6關(guān)3個(gè)……。2個(gè)時(shí)注暗,在實(shí)際操作中坛缕,就是點(diǎn)擊一個(gè)小球2次,可回到原來(lái)的顏色捆昏,3個(gè)就是點(diǎn)擊3次回到原來(lái)的顏色赚楚。
    validBallCount = Math.min(6, parseInt(level / 3) + 2);

    // 小球行數(shù),隨著關(guān)卡上升而增加骗卜,最小值為2直晨,最大值為7
    var row = Math.min(7, 2 + parseInt(level / 2));

    // 小球列數(shù)搀军,隨著關(guān)卡上升而增加,最小值為2勇皇,最大值為4
    var col = Math.min(4, 2 + parseInt(level / 2));

    // 根據(jù)行列數(shù)和小球尺寸來(lái)設(shè)置游戲容器的大小
    gameContainer.style.width = 73 * col + 'px';
    gameContainer.style.height = 73 * row + 'px';

    //使用一個(gè)嵌套循環(huán)來(lái)創(chuàng)建小球
    for (var i = 0; i < row; i++) {
        for (var k = 0; k < col; k++) {
            var img = new Image();// 創(chuàng)建小球圖片Dom元素
            img.style.verticalAlign = 'bottom';// 設(shè)置小球垂直對(duì)齊方式罩句,這是為了解決小球下邊距的問(wèn)題
            var ballType = parseInt(Math.random() * validBallCount + 1);// 計(jì)算小球隨機(jī)類(lèi)型
            img.ballType = ballType;// 記錄小球類(lèi)型
            img.src = 'images/' + ballType + '.png';// 加載小球類(lèi)型對(duì)應(yīng)的小球圖片
            gameContainer.appendChild(img);// 把小球添加到顯示列表
            levelBallsArr.push(img);// 把小球存放到關(guān)卡小球數(shù)組中
        }
    }

    gamePlaying = true;// 設(shè)置游戲狀態(tài)為true

    var logsArr = [
        '創(chuàng)建關(guān)卡:' + level,
        '行數(shù):' + row,
        '列數(shù):' + col,
        '可用小球數(shù):' + validBallCount,
        '限時(shí):' + levelTime / 1000 + '秒'
    ];
    console.log(logsArr.join(' '));
}

第三步:

/**
 * 點(diǎn)擊游戲界面時(shí)調(diào)用的方法
 * @param event
 */
function onGameClick(event) {
    // 獲取被點(diǎn)擊的Dom元素
    var clickDom = event.target;
    // 如果被點(diǎn)擊的Dom元素是有ballType屬性,說(shuō)明點(diǎn)擊的是一個(gè)小球敛摘,進(jìn)入切換小球顏色邏輯
    if (clickDom.ballType) {
        toNextBallType(clickDom);
    }
}

第四步:

/**
 * 切換到下一個(gè)小球類(lèi)型
 * @param ballImg 要切換類(lèi)型的小球Dom元素
 */
function toNextBallType(ballImg) {
    // 先改變ballType屬性:當(dāng)前ballType小于小于可用數(shù)時(shí)门烂,加1,否則直接指定為1
    if (ballImg.ballType < validBallCount) {
        ballImg.ballType = ballImg.ballType + 1;
    } else {
        ballImg.ballType = 1;
    }

    // 根據(jù)ballType兄淫,加載對(duì)應(yīng)的小球圖片
    ballImg.src = 'images/' + ballImg.ballType + '.png';
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末屯远,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捕虽,更是在濱河造成了極大的恐慌慨丐,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泄私,死亡現(xiàn)場(chǎng)離奇詭異房揭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)晌端,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)捅暴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人咧纠,你說(shuō)我怎么就攤上這事蓬痒。” “怎么了漆羔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵梧奢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我演痒,道長(zhǎng)亲轨,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任嫡霞,我火速辦了婚禮瓶埋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诊沪。我一直安慰自己养筒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布端姚。 她就那樣靜靜地躺著晕粪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渐裸。 梳的紋絲不亂的頭發(fā)上巫湘,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天装悲,我揣著相機(jī)與錄音,去河邊找鬼尚氛。 笑死诀诊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阅嘶。 我是一名探鬼主播属瓣,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼讯柔!你這毒婦竟也來(lái)了抡蛙?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤魂迄,失蹤者是張志新(化名)和其女友劉穎粗截,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體捣炬,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熊昌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了遥金。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒜田。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡稿械,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出冲粤,到底是詐尸還是另有隱情美莫,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布梯捕,位于F島的核電站厢呵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏傀顾。R本人自食惡果不足惜襟铭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望短曾。 院中可真熱鬧寒砖,春花似錦、人聲如沸嫉拐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)婉徘。三九已至漠嵌,卻和暖如春咐汞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背儒鹿。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工化撕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人约炎。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓侯谁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親章钾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子墙贱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • 陳氏太極拳老架一路講義 前言 寫(xiě)給喜愛(ài)太極拳的武術(shù)朋友們 中華武術(shù),源遠(yuǎn)流長(zhǎng)贱傀,今雖門(mén)派繁多惨撇,實(shí)一脈相承。太極拳以它...
    阿德樂(lè)閱讀 5,621評(píng)論 0 12
  • 《播種幸父》麥克格西 并不是最勤奮的人就最富有魁衙。 并不是博士更有機(jī)會(huì)成為億萬(wàn)富翁。 有時(shí)候株搔,似乎選擇比勤奮更重要剖淀。...
    黃玉新閱讀 4,218評(píng)論 1 11
  • 有時(shí)候打開(kāi)工程發(fā)現(xiàn)原有的真機(jī)和模擬器編譯不見(jiàn)了,有可能是你換了臺(tái)電腦拷了個(gè)新工程. 解決方案如下: 1纤房、首先關(guān)閉你...
    那個(gè)女孩_T閱讀 751評(píng)論 0 2
  • 怎么樣才能擁有強(qiáng)大的氣場(chǎng)纵隔,只有從各方面提升自己才行吧,每天需要自己完成的事情: 1炮姨、每天按時(shí)吃飯捌刮、睡覺(jué)。這個(gè)是基礎(chǔ)...
    仙仙的媽閱讀 507評(píng)論 0 51
  • 晚上舒岸,我靜靜地躺在床上睡著了绅作,夢(mèng)精靈把我?guī)нM(jìn)了一個(gè)奇妙的世界里。 我睜開(kāi)眼蛾派,發(fā)現(xiàn)俄认,我在一間豪華的別墅...
    諾凌風(fēng)閱讀 191評(píng)論 1 4