亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript實現2048游戲示例

2019-11-20 20:44:57
字體:
來源:轉載
供稿:網友

原生javascript代碼寫的2048游戲。建議在谷歌瀏覽器下跑。

2048.html

復制代碼 代碼如下:

<!DOCTYPE>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>2048</title>
<link rel="stylesheet" type="text/css" href="css/2048.css" />
<!-- <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> -->
<script type="text/javascript" src="js/2048.js"></script>
</head>

<body>
 <div id="div2048">
        <a id="start">tap to start :-)</a>
    </div>
</body>
</html>

2048.css

復制代碼 代碼如下:

@charset "utf-8";

#div2048
{
    width: 500px;
    height: 500px;
    background-color: #b8af9e;
    margin: 0 auto;
    position: relative;
}
#start
{
    width: 500px;
    height: 500px;
    line-height: 500px;
    display: block;
    text-align: center;
    font-size: 30px;
    background: #f2b179;
    color: #FFFFFF;
}
#div2048 div.tile
{
    margin: 20px 0px 0px 20px;
    width: 100px;
    height: 40px;
    padding: 30px 0;
    font-size: 40px;
    line-height: 40px;
    text-align: center;
    float: left;
}
#div2048 div.tile0{
 background: #ccc0b2;
}
#div2048 div.tile2
{
    color: #7c736a;
    background: #eee4da;
}
#div2048 div.tile4
{
    color: #7c736a;
    background: #ece0c8;
}
#div2048 div.tile8
{
    color: #fff7eb;
    background: #f2b179;
}
#div2048 div.tile16
{
    color:#fff7eb;
    background:#f59563;
}
#div2048 div.tile32
{
    color:#fff7eb;
    background:#f57c5f;
}
#div2048 div.tile64
{
    color:#fff7eb;
    background:#f65d3b;
}
#div2048 div.tile128
{
    color:#fff7eb;
    background:#edce71;
}
#div2048 div.tile256
{
    color:#fff7eb;
    background:#edcc61;
}
#div2048 div.tile512
{
    color:#fff7eb;
    background:#ecc850;
}
#div2048 div.tile1024
{
    color:#fff7eb;
    background:#edc53f;
}
#div2048 div.tile2048
{
    color:#fff7eb;
    background:#eec22e;
}

2048.js

復制代碼 代碼如下:

function game2048(container)
{
 this.container = container;
 this.tiles = new Array(16);
}

game2048.prototype = {
 init: function(){
  for(var i = 0, len = this.tiles.length; i < len; i++){
   var tile = this.newTile(0);
   tile.setAttribute('index', i);
   this.container.appendChild(tile);
   this.tiles[i] = tile;
  }
  this.randomTile();
  this.randomTile();
 },
 newTile: function(val){
  var tile = document.createElement('div');
  this.setTileVal(tile, val)
  return tile;
 },
 setTileVal: function(tile, val){
  tile.className = 'tile tile' + val;
  tile.setAttribute('val', val);
  tile.innerHTML = val > 0 ? val : '';
 },
 randomTile: function(){
  var zeroTiles = [];
  for(var i = 0, len = this.tiles.length; i < len; i++){
   if(this.tiles[i].getAttribute('val') == 0){
    zeroTiles.push(this.tiles[i]);
   }
  }
  var rTile = zeroTiles[Math.floor(Math.random() * zeroTiles.length)];
  this.setTileVal(rTile, Math.random() < 0.8 ? 2 : 4);
 },
 move:function(direction){
  var j;
  switch(direction){
   case 'W':
    for(var i = 4, len = this.tiles.length; i < len; i++){
     j = i;
     while(j >= 4){
      this.merge(this.tiles[j - 4], this.tiles[j]);
      j -= 4;
     }
    }
    break;
   case 'S':
    for(var i = 11; i >= 0; i--){
     j = i;
     while(j <= 11){
      this.merge(this.tiles[j + 4], this.tiles[j]);
      j += 4;
     }
    }
    break;
   case 'A':
    for(var i = 1, len = this.tiles.length; i < len; i++){
     j = i;
     while(j % 4 != 0){
      this.merge(this.tiles[j - 1], this.tiles[j]);
      j -= 1;
     }
    }
    break;
   case 'D':
    for(var i = 14; i >= 0; i--){
     j = i;
     while(j % 4 != 3){
      this.merge(this.tiles[j + 1], this.tiles[j]);
      j += 1;
     }
    }
    break;
  }
  this.randomTile();
 },
 merge: function(prevTile, currTile){
  var prevVal = prevTile.getAttribute('val');
  var currVal = currTile.getAttribute('val');
  if(currVal != 0){
   if(prevVal == 0){
    this.setTileVal(prevTile, currVal);
    this.setTileVal(currTile, 0);
   }
   else if(prevVal == currVal){
    this.setTileVal(prevTile, prevVal * 2);
    this.setTileVal(currTile, 0);
   }
  }
 },
 equal: function(tile1, tile2){
  return tile1.getAttribute('val') == tile2.getAttribute('val');
 },
 max: function(){
  for(var i = 0, len = this.tiles.length; i < len; i++){
   if(this.tiles[i].getAttribute('val') == 2048){
    return true;
   }
  }
 },
 over: function(){
  for(var i = 0, len = this.tiles.length; i < len; i++){
   if(this.tiles[i].getAttribute('val') == 0){
    return false;
   }
   if(i % 4 != 3){
    if(this.equal(this.tiles[i], this.tiles[i + 1])){
     return false;
    }
   }
   if(i < 12){
    if(this.equal(this.tiles[i], this.tiles[i + 4])){
     return false;
    }
   }
  }
  return true;
 },
 clean: function(){
  for(var i = 0, len = this.tiles.length; i < len; i++){
   this.container.removeChild(this.tiles[i]);
  }
  this.tiles = new Array(16);
 }
}

var game, startBtn;

window.onload = function(){
 var container = document.getElementById('div2048');
 startBtn = document.getElementById('start');
 startBtn.onclick = function(){
  this.style.display = 'none';
  game = game || new game2048(container);
  game.init();
 }
}

window.onkeydown = function(e){
 var keynum, keychar;
 if(window.event){  // IE
  keynum = e.keyCode;
 }
 else if(e.which){  // Netscape/Firefox/Opera
  keynum = e.which;
 }
 keychar = String.fromCharCode(keynum);
 if(['W', 'S', 'A', 'D'].indexOf(keychar) > -1){
  if(game.over()){
   game.clean();
   startBtn.style.display = 'block';
   startBtn.innerHTML = 'game over, replay?';
   return;
  }
  game.move(keychar);
 }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色爱av美腿丝袜综合粉嫩av| 久久99国产综合精品女同| 777午夜精品福利在线观看| 亚洲一级黄色av| 欧美色xxxx| 国产精品夜间视频香蕉| 欧美激情视频网| 91av中文字幕| 国产国产精品人在线视| 岛国av在线不卡| 91久久精品美女高潮| 在线精品高清中文字幕| 亚洲精品国产精品国自产观看浪潮| 91亚洲精品在线观看| 亚洲aaaaaa| 国内揄拍国内精品少妇国语| 久久久久久久国产精品视频| 国产福利精品av综合导导航| 成人xvideos免费视频| 国产成人福利网站| 欧美另类精品xxxx孕妇| 久久亚洲成人精品| 精品国产美女在线| 久久久综合免费视频| 欧美日韩国产成人高清视频| 亚洲男人天堂视频| 国产97在线观看| 色综久久综合桃花网| 亚洲色图日韩av| 中文字幕日韩视频| 亚洲精品97久久| 亚洲va久久久噜噜噜| 国产剧情日韩欧美| 国产丝袜精品第一页| 日本中文字幕不卡免费| 精品国产一区二区三区久久狼黑人| 久久久久久中文| 国产精品久久久久久久久久久久久久| 国产精品高清在线观看| 姬川优奈aav一区二区| 久久久999精品视频| 午夜美女久久久久爽久久| 国产成人拍精品视频午夜网站| 另类视频在线观看| 在线观看免费高清视频97| 欧美日韩另类在线| 97视频在线免费观看| 欧美日韩国产一区中文午夜| 日韩视频第一页| 97人人模人人爽人人喊中文字| 欧美性极品少妇精品网站| 伊人久久免费视频| 成人精品久久一区二区三区| 国产精品色视频| 黑人精品xxx一区一二区| 91精品久久久久久久久| 国产成+人+综合+亚洲欧洲| 国产精品自产拍在线观看| 精品一区二区三区电影| 国产精品久久久久久亚洲调教| 久久久精品一区二区三区| 精品久久久久久国产| 成人做爰www免费看视频网站| 综合网中文字幕| 亚洲成人在线网| 久久99久久99精品免观看粉嫩| 91免费的视频在线播放| 亚洲精品影视在线观看| 欧美亚洲日本黄色| 久热精品在线视频| 日韩在线视频网| 国产一区二区香蕉| 国产精品久久视频| 欲色天天网综合久久| 中文字幕亚洲专区| 色妞久久福利网| 国产日韩在线亚洲字幕中文| 久久久精品影院| 亚洲精品美女在线观看播放| 国产美女被下药99| 青青久久av北条麻妃黑人| 97久久超碰福利国产精品…| 亚洲电影成人av99爱色| 久久久久国产精品免费网站| 亚洲精品wwww| 69影院欧美专区视频| 国产v综合v亚洲欧美久久| 色先锋资源久久综合5566| 欧美激情精品久久久久久黑人| 国产色婷婷国产综合在线理论片a| 久久久久久久色| 久热在线中文字幕色999舞| 亚洲精品日韩av| 最近更新的2019中文字幕| 亚洲精品国偷自产在线99热| 国内精品免费午夜毛片| 久久久精品国产亚洲| 92版电视剧仙鹤神针在线观看| 亚洲最新av在线| 精品久久久久久久久久久久久| 日本国产一区二区三区| 全色精品综合影院| 亚洲国产精品中文| 国产精品视频网| 日韩成人在线视频网站| 欧美精品中文字幕一区| 日韩大陆欧美高清视频区| 欧美高清视频一区二区| 亚洲韩国青草视频| 欧美自拍视频在线观看| www.亚洲天堂| 中文字幕亚洲激情| 日本三级韩国三级久久| 国模精品视频一区二区| 国产成人亚洲综合91精品| 欧美性猛交99久久久久99按摩| 精品国产一区二区三区久久狼5月| 亚洲精品欧美极品| 国产精品视频免费观看www| 国产精品久久久久久久久久99| 好吊成人免视频| 亚洲精品久久久一区二区三区| 91网在线免费观看| 日韩在线视频一区| 亚洲人成电影在线播放| 九色成人免费视频| 亚洲高清免费观看高清完整版| 青青草原成人在线视频| 欧美日韩中国免费专区在线看| 亚洲桃花岛网站| 色综合91久久精品中文字幕| 亚洲一区二区三区久久| 亚洲第一综合天堂另类专| 亚洲国产精品va在线观看黑人| 欧美国产欧美亚洲国产日韩mv天天看完整| 91九色国产视频| 日韩美女视频中文字幕| 中文在线资源观看视频网站免费不卡| 成人写真福利网| 日韩av电影手机在线观看| 国产婷婷色综合av蜜臀av| 国产99视频在线观看| 日本一区二区三区在线播放| 国产精品久久久久久久久借妻| 91高清视频免费观看| 成人黄色av播放免费| 91国产精品91| 韩曰欧美视频免费观看| 国自在线精品视频| 欧美自拍视频在线| 欧美中文字幕视频在线观看| 中文字幕亚洲色图| 国产欧美日韩专区发布| 欧美日韩性视频在线| 国产99在线|中文| 久久久精品视频在线观看| 国产99视频精品免视看7| 青青草99啪国产免费| 在线日韩第一页| 成人免费在线视频网址| 亚洲永久免费观看| 亚洲一区二区三区四区在线播放| 国产男女猛烈无遮挡91| 九色精品美女在线|