zoukankan      html  css  js  c++  java
  • 2048小游戏(JavaScript版) (3) 初始化棋盘格

    1. 初始化棋盘格

    我们在index.html文件中,做了一个重新开始按钮,调用了一个newgame()方法用来开始新游戏,但是我们没有编写这个方法,目前点击按钮控制台会报错。

    而开始新游戏需要完成两件事情,一是初始化棋盘格,二是在随机的两个格子生成2或4两个数字。

    初始化棋盘的代码我们就放在main.js这个游戏主逻辑文件当中。

    首先是当页面加载完成后应该调用newgame()方法:

    window.onload = function(){
        newgame();
    }
    
    function newgame() {
    
    }

    每次newgame(),我们都要初始化一遍棋盘格,来确保界面不会出现任何残留数据。

    通过编写init()方法来完成棋盘格的初始化工作,棋盘格是一个4×4的16块的方格,所以我们需要插件一个二维数组来表示。

    在最上面定义一个空数组:

    //定义一个JavaScript数组
    var board = new Array();

    然后我们在init()中,利用嵌套for循环的方式实现每个格子的设置。

    function newgame() {
      //初始化棋盘格
      init();
    }
    
    function init() {
        //i表示4乘以4的格子的行
        for(var i=0;i<4;i++){//初始化格子数组
            //定义了一个二维数组
            board[i] = new Array();
            //i表示4乘以4的格子的列
            for(var j=0;j<4;j++){
                //初始化小格子的值为0
                board[i][j] = 0;
                //通过双重遍历获取每个格子元素
                var gridCell= document.getElementById("grid-cell-" + i + "-" + j)
                console.log(gridCell)
            }
        }
    }

    保存刷新页面,F12打开控制台:

    我们获取到了每个格子元素。

    之后我们就要设置每个格子距离顶端和左端距离了,这里也是大佬给我设计好的,所以大家抄就完事了,程序员的事,能叫抄吗,这叫copy!

    在init()里面添加:

    function init() {
        //i表示4乘以4的格子的行
        for(var i=0;i<4;i++){//初始化格子数组
            //定义了一个二维数组
            board[i] = new Array();
            //i表示4乘以4的格子的列
            for(var j=0;j<4;j++){
                //初始化小格子的值为0
                board[i][j] = 0;
                //通过双重遍历获取每个格子元素
                var gridCell= document.getElementById("grid-cell-" + i + "-" + j)
    //            console.log(gridCell)
                //通过getPosTop()方法设置每个格子距离顶端的距离
                gridCell.style.top = getPosTop(i, j);
                //通过getPosLeft()方法设置每个格子距离左端的距离
                  gridCell.style.left = getPosLeft(i, j);
            }
        }
    }

    然后我们来定义getPosTop()和getPosLeft()。

    这两个方法是属于游戏的基本逻辑了,所以我们把这两个方法写在support.js里面。

    support.js:

    function getPosTop(i, j) {
      return (20 + i * 120) / 25 + 'rem';
    }
    
    function getPosLeft(i, j) {
      return (20 + j * 120) / 25 + 'rem';
    }

    此时保存再刷新页面,格子的初始化就完成了。

    但是我们的初始化还缺了随机位置的2或4两个数字,下一章我们就来实现这个功能吧。

  • 相关阅读:
    Hibernate整合C3P0实现连接池<转>
    Navicat连接数据一直是“正在连接...” 状态
    GTID复制报错处理:Last_Error: Error 'Can't drop database 'test'; database doesn't exist' on query
    pt-table-checksum解读
    Error 'Cannot add or update a child row: a foreign key constraint fails故障解决
    MySQL中explain的type类型
    MySQL中innodb表主键设计原则
    Java报错--Unsupported major.minor version 52.0
    mysql插入大量数据
    MySQL初始化故障-----mysql_config_editor中的坑
  • 原文地址:https://www.cnblogs.com/liuhui0308/p/14422943.html
Copyright © 2011-2022 走看看