最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版2048小游戲

 更新時(shí)間:2022年11月16日 14:24:19   作者:海擁  
這篇文章主要介紹了如何利用HTML+CSS+JS編寫一個(gè)網(wǎng)頁(yè)版的2048小游戲,代碼簡(jiǎn)單易懂對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

項(xiàng)目基本結(jié)構(gòu)

目錄結(jié)構(gòu)如下:

本節(jié)教程我會(huì)帶大家使用 HTML 、CSS和 JS 來(lái)制作一個(gè) 2048網(wǎng)頁(yè)版小游戲

本節(jié)示例將會(huì)實(shí)現(xiàn)如下所示的效果:

HTML源碼

使用<header></header>添加頭部2048標(biāo)題

<header>
    <div class="container">
        <h1><span>2</span><span>0</span><span>4</span><span>8</span></h1>
        <p class="inspired">by <a  rel="external nofollow"  target="_blank">海擁?</a></p>
    </div>
</header>

效果:

添加一個(gè) container 容器

<div class="container">
</div>

添加游戲的主體部分

<div class="directions">
        <p id="haiyong" class="haiyong"><strong>如何玩:</strong> 使用鍵盤方向鍵鍵移動(dòng)數(shù)字方塊。相鄰的兩個(gè)方塊數(shù)字相同,它們可合并成一個(gè)!</p>
    </div>
    <div class="scores">
        <div class="score-container best-score">
            歷史最佳:
            <div class="score">
                <div id="bestScore">0</div>
            </div>
        </div>
        <div class="score-container">
            分?jǐn)?shù):
            <div class="score">
                <div id="score">0</div>
                <div class="add" id="add"></div>
            </div>
        </div>
    </div>
    <div class="game">
        <div id="tile-container" class="tile-container"></div>
        <div class="end" id="end">游戲結(jié)束<div class="monkey">??</div><button class="btn not-recommended__item js-restart-btn"
             id="try-again">再試一次</button></div>
    </div>

效果:

重新啟動(dòng)游戲

<div class="not-recommended">
        <button class="btn not-recommended__item js-restart-btn" id="restart">重新啟動(dòng)游戲</button>
        <span class="not-recommended__annotation"></span>
    </div>

底部導(dǎo)航欄

<footer>
  <span class="author">Created by <a  rel="external nofollow" >Haiyong</a></span>        
  <span class="center">2048</span>        
  <span class="opposite">更多游戲:<a  rel="external nofollow" >摸魚</a></span>
</footer>

效果:

CSS 源碼

header 部分

header {
    color: #F8FFE5;
    text-align: center;
}

header span {
    display: inline-block;
    box-sizing: border-box;
    width: 4rem;
    height: 4rem;
    line-height: 4rem;
    margin: 0 0.4rem;
    background: #FFC43D;
}

媒體查詢:

@media screen and (max-width:440px) {
  header span {
      width: 3rem;
      height: 3rem;
      line-height: 3rem;
  }
}
@media screen and (max-width:375px) {
  header span {
      width: 2.5rem;
      height: 2.5rem;
      line-height: 2.5rem;
  }
}

container 容器

.container {
    margin: 0 auto;
    padding-bottom: 3.5rem;
    -webkit-box-flex: 1;
    -ms-flex: 1;
    flex: 1;
    width: 100%;
    max-width: 550px;
    text-align: center;
}

header .container {
    padding: 0;
    padding: 2rem 4rem;
    max-width: 900px;
}
@media screen and (max-width:440px) {
    header .container {
        padding: 1rem 2rem;
    }
}

底部導(dǎo)航欄

footer {
  background-color: #158ca5;
  bottom: 0;
  box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.5);
  color: white;
  display: flex;
  justify-content: space-around;
  left: 0;
  padding: 15px;
  position: fixed;
  right: 0;
}
footer a {
  color: white;
}
footer .center {
  justify-content: center;
}

JS 源碼

js 代碼較多,這里提供部分

function handleKeypress(evt) {
  var modifiers = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
  var whichKey = event.which;

  var prevGame = [].concat(game);

  if (!modifiers) {
    event.preventDefault();
    switch (whichKey) {
      case 37:
        game = shiftGameLeft(game);
        break;
      case 38:
        game = shiftGameUp(game);
        break;
      case 39:
        game = shiftGameRight(game);
        break;
      case 40:
        game = shiftGameDown(game);
        break;
    }
    game = game.map(function (tile, index) {
      if (tile) {
        return _extends({}, tile, {
          index: index
        });
      } else {
        return null;
      }
    });
    addRandomNumber();
    updateDOM(prevGame, game);
    if (gameOver()) {
      setTimeout(function () {
        endDiv.classList.add('active');
      }, 800);
      return;
    }
  }
}

function newGameStart() {
  document.getElementById('tile-container').innerHTML = '';
  endDiv.classList.remove('active');
  score = 0;
  scoreDiv.innerHTML = score;
  initGame();
  drawBackground();
  var previousGame = [].concat(game);
  addRandomNumber();
  addRandomNumber();
  updateDOM(previousGame, game);
}

newGameStart();

到此這篇關(guān)于利用JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版2048小游戲的文章就介紹到這了,更多相關(guān)JavaScript 2048游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用遞歸遍歷對(duì)象獲得value值的實(shí)現(xiàn)方法

    使用遞歸遍歷對(duì)象獲得value值的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇使用遞歸遍歷對(duì)象獲得value值的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • js中typeof的用法匯總

    js中typeof的用法匯總

    這篇文章主要是對(duì)js中typeof的用法進(jìn)行了詳細(xì)的匯總介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • 淺談jQuery中setInterval()方法

    淺談jQuery中setInterval()方法

    這篇文章主要介紹了淺談jQuery中setInterval()方法,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-07-07
  • 微信小程序收貨地址API兼容低版本解決方法

    微信小程序收貨地址API兼容低版本解決方法

    這篇文章主要介紹了微信小程序收貨地址API兼容低版本解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • javascript實(shí)現(xiàn)二叉樹(shù)的代碼

    javascript實(shí)現(xiàn)二叉樹(shù)的代碼

    本篇文章主要介紹了javascript實(shí)現(xiàn)二叉樹(shù)的代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • JAVA面試題 static關(guān)鍵字詳解

    JAVA面試題 static關(guān)鍵字詳解

    這篇文章主要介紹了JAVA面試題 淺析Java中的static關(guān)鍵字,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • innerHTML動(dòng)態(tài)添加html代碼和腳本兼容多個(gè)瀏覽器

    innerHTML動(dòng)態(tài)添加html代碼和腳本兼容多個(gè)瀏覽器

    innerHTML動(dòng)態(tài)添加html代碼和腳本,給某個(gè)元素的innerHTML賦值,并使得值中的js代碼有效且兼容多個(gè)瀏覽器,很棒的一個(gè)方法
    2014-10-10
  • 關(guān)于innerHTML后丟失動(dòng)態(tài)綁定的EVENT問(wèn)題解決方法

    關(guān)于innerHTML后丟失動(dòng)態(tài)綁定的EVENT問(wèn)題解決方法

    用innerHTML取出一段內(nèi)容后再innerHTML回去,那么原來(lái)動(dòng)態(tài)綁定的事件就會(huì)丟失,下面與大家分享下解決方法,感興趣的朋友可以參考下哈
    2013-05-05
  • js 輸入框 正則表達(dá)式(菜鳥必看教程)

    js 輸入框 正則表達(dá)式(菜鳥必看教程)

    下面小編就為大家?guī)?lái)一篇js輸入框使用正則表達(dá)式校驗(yàn)輸入內(nèi)容的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • postman自定義函數(shù)實(shí)現(xiàn) 時(shí)間函數(shù)的思路詳解

    postman自定義函數(shù)實(shí)現(xiàn) 時(shí)間函數(shù)的思路詳解

    Postman是一款功能強(qiáng)大的網(wǎng)頁(yè)調(diào)試與發(fā)送網(wǎng)頁(yè)HTTP請(qǐng)求的Chrome插件。這篇文章主要給大家介紹postman自定義函數(shù)實(shí)現(xiàn) 時(shí)間函數(shù)的思路詳解,感興趣的朋友一起看看吧
    2019-04-04

最新評(píng)論

丹阳市| 耿马| 昌乐县| 宝兴县| 奉贤区| 白朗县| 盐津县| 孟村| 神池县| 石门县| 巢湖市| 应城市| 德庆县| 岚皋县| 临颍县| 无极县| 南靖县| 宁夏| 武清区| 肥城市| 象山县| 苏尼特右旗| 宽甸| 涡阳县| 会东县| 雅安市| 建宁县| 桑日县| 敦化市| 称多县| 泗洪县| 临江市| 巴里| 杭锦后旗| 开化县| 乌兰浩特市| 高安市| 溆浦县| 五原县| 勐海县| 彩票|