JavaScript:蛇和梯子游戏中的问题

时间:2016-01-07 17:23:03

标签: javascript html css

我是JavaScript新手。我正在制作蛇与梯子游戏。我在代码上面临一些问题。

  1. 首先我无法存储播放器的当前位置,因此我可以计算下一个目的地。
  2. 骰子在游戏开始时以1开始,这会导致玩家从第二个单元格开始。
  3. 显示在电路板上的大蛇和梯子div不能自动适应电路板的大小。
  4. 这是我到目前为止编写的代码Snakes and Ladder Game

    var gameBoard = {
      createBoard: function(dimension, mount) {
        var mount = document.querySelector(mount);
        if (!dimension || isNaN(dimension) || !parseInt(dimension, 10)) {
          return false;
        } else {
          dimension = typeof dimension === 'string' ? parseInt(dimension, 10) : dimension;
          var table = document.createElement('table'),
            row = document.createElement('tr'),
            cell = document.createElement('td'),
            rowClone,
            cellClone;
          var output;
          for (var r = 0; r < dimension; r++) {
            rowClone = row.cloneNode(true);
            table.appendChild(rowClone);
            for (var c = 0; c < dimension; c++) {
              cellClone = cell.cloneNode(true);
              rowClone.appendChild(cellClone);
            }
          }
          mount.appendChild(table);
          output = gameBoard.enumerateBoard(table);
        }
        return output;
      },
      enumerateBoard: function(board) {
        var rows = board.getElementsByTagName('tr'),
          text = document.createTextNode(''),
          rowCounter = 1,
          size = rows.length,
          cells,
          cellsLength,
          cellNumber,
          odd = false,
          control = 0;
        for (var r = size - 1; r >= 0; r--) {
          cells = rows[r].getElementsByTagName('td');
          cellsLength = cells.length;
          rows[r].className = r % 2 == 0 ? 'even' : 'odd';
          odd = ++control % 2 == 0 ? true : false;
          size = rows.length;
          for (var i = 0; i < cellsLength; i++) {
            if (odd == true) {
              cellNumber = --size + rowCounter - i;
            } else {
              cellNumber = rowCounter;
            }
            cells[i].className = i % 2 == 0 ? 'even' : 'odd';
            cells[i].id = cellNumber;
            cells[i].appendChild(text.cloneNode());
            cells[i].firstChild.nodeValue = cellNumber;
            rowCounter++;
          }
        }
        var lastRow = rows[0].getElementsByTagName('td');
        lastRow[0].id = '100';
        var firstRow = rows[9].getElementsByTagName('td');
        firstRow[0].id = '1';
        return gameBoard;
      }
    };
    gameBoard.createBoard(10, "#grid");
    
    function intialPosition() {
      $("#1").append($("#player1"));
      $("#1").append($("#player2"));
      var currentPosition = parseInt($("#1").attr('id'));
      return currentPosition;
    }
    var w = intialPosition();
    
    var face1 = new Image()
    face1.src = "http://s19.postimg.org/fa5etrfy7/image.gif"
    var face2 = new Image()
    face2.src = "http://s19.postimg.org/qb0jys873/image.gif"
    var face3 = new Image()
    face3.src = "http://s19.postimg.org/fpgoms1vj/image.gif"
    var face4 = new Image()
    face4.src = "http://s19.postimg.org/xgsb18ha7/image.gif"
    var face5 = new Image()
    face5.src = "http://s19.postimg.org/lsy96os5b/image.gif"
    var face6 = new Image()
    face6.src = "http://s19.postimg.org/4gxwl8ynz/image.gif"
    
    function rollDice() {
      var randomdice = Math.floor(Math.random() * 6) + 1;
      document.images["mydice"].src = eval("face" + randomdice + ".src")
      if (randomdice == 6) {
        alert('Congratulations! You got 6! Roll the dice again');
      }
      return randomdice;
    }
    var random1 = rollDice();
    var destination = w + random1;
    
    function move() {
      $('#' + destination).append($("#player1"));
      var x = parseInt($('#' + destination).attr('id'));
      var random = rollDice();
      destination = x + random;
      //alert(x);
      return destination;
    }
    
    $(document).ready(function() {
      //$('#' + destination).delay(100).fadeOut().fadeIn('slow');
      $('#' + destination).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100);
    });
    var next = move();
    /*body {
        background-image: url('snakesandladder2.png');
        background-repeat: no-repeat;
        background-size: 100%;
        background-color: #4f96cb;
    }*/
    
    #game {
      width: 80%;
      margin-left: auto;
      margin-right: auto;
      display: table;
    }
    #gameBoardSection {
      border: 3px inset #0FF;
      border-radius: 10px;
      width: 65%;
      display: table-cell;
    }
    table {
      width: 100%;
    }
    td {
      border-radius: 10px;
      width: 60px;
      height: 60px;
      line-height: normal;
      vertical-align: bottom;
      text-align: left;
      border: 0px solid #FFFFFF;
      position: relative;
    }
    table tr:nth-child(odd) td:nth-child(even),
    table tr:nth-child(even) td:nth-child(odd) {
      background-color: PowderBlue;
    }
    table tr:nth-child(even) td:nth-child(even),
    table tr:nth-child(odd) td:nth-child(odd) {
      background-color: SkyBlue;
    }
    #100 {
      background-image: url('http://s19.postimg.org/ceioc1g8v/rotstar2_e0.gif');
      background-repeat: no-repeat;
      background-size: 100%;
    }
    #ladder {
      position: absolute;
      top: 300px;
      left: 470px;
      -webkit-transform: rotate(30deg);
      z-index: 1;
      opacity: 0.7;
    }
    #bigSnake {
      position: absolute;
      top: 20px;
      left: 200px;
      opacity: 0.7;
      z-index: 1;
    }
    #diceAndPlayerSection {
      background-color: lightpink;
      border: 1px;
      border-style: solid;
      display: table-cell;
      border-radius: 10px;
      border: 3px inset #0FF;
      width: 35%;
    }
    <body>
      <div id="game">
        <div id="gameBoardSection">
          <div id="grid"></div>
          <div id="ladder">
            <img src="http://s19.postimg.org/otai9he2n/oie_e_RDOY2iqd5o_Q.gif" />
          </div>
          <div id="bigSnake">
            <img src="http://s19.postimg.org/hrcknaagz/oie_485727s_RN4_KKBG.png" />
          </div>
          <div id="player1" style="position:absolute; top:10px; left:10px;">
            <img src="http://s19.postimg.org/t108l496n/human_Piece.png" />
          </div>
          <div id="player2" style="position:absolute; top:15px; left:5px;">
            <img src="http://s19.postimg.org/l6zmzq1dr/computer_Piece.png" />
          </div>
        </div>
        <div id="diceAndPlayerSection">
          <div id="reset">
            <button type="button" name="newGame" onClick="gameVM.newGame();">New Game</button>
          </div>
          <div>
            <button type="button" name="reset" onClick="gameVM.defaultSetup()">Reset</button>
          </div>
          <div>
            <button type="button" name="addPlayer">Add Player</button>
          </div>
          <div id="diceSection">
            <img src="d1.gif" name="mydice" onclick="rollDice()" style="background-color: white;">
          </div>
        </div>
      </div>
    </body>

    任何人都可以帮助我吗?提前致谢

1 个答案:

答案 0 :(得分:1)

  1. 要存储用户当前位置,请维护用于存储diff player目标的单独变量。
  2. 要从1开始播放,请删除intialPosition()并使var w = 0,因此一旦调用rolldice(),它将从0开始。
  3. 为了根据屏幕大小的变化自动调整,请使用可以自动调整div大小的bootstrap div。这是http://getbootstrap.com/css/#grid
  4. 的链接