​var j = Math.floor(y / 30);为什么除以30

来源:2-5 落子实现

纨绔帝皇

2017-12-16 23:03

var j = Math.floor(y / 30);为什么除以30

写回答 关注

3回答

  • qq_几分秀_04105739
    2018-07-03 23:50:07

    上面同学的说法不太对,不是因为方面操作吧。

    var x=e.offsetX;//获取的是相对于整个canvas容器的x坐标值

    var y=e.offsetY;//获取的是相对于整个canvas容器的y坐标值

    var i = Math.floor(x/30);

    var j = Math.floor(y/30);

    oneStep(i,j,me); //传入i,j值

    context.arc(15+i*30,15+j*30,13,0,2*Math.PI) ;//oneStep(i,j,me)里的画圆函数

    以上其实 可以 等同于 15+i*30=x; 15+j*30=y; 已知x,y值,通过除30取整获取i,j值再画圆。

    以上可能是愚见,见笑了。

  • 保护我方鲁班七号
    2017-12-23 20:00:57

    有一点我说错了,重新说:比如与实际坐标(15,315)对应的坐标就是(15/30,315/30)(ps:还需要进行向下取整),即坐标(0,10)。

  • 保护我方鲁班七号
    2017-12-23 19:58:16

    var drawChessBoard=function(){

        for(var i=0;i<15;i++)

        {

            context.moveTo(15+30*i,15);

            context.lineTo(15+30*i,435);

            context.stroke();

            context.moveTo(15,15+30*i);

            context.lineTo(435,15+30*i);

            context.stroke();

        }

    }

    绘制棋盘的直线时,横坐标是15+i*30,纵坐标15+j*30,这些实际坐标数值比较大,不方便操作。把实际坐标做一个运算换成等价坐标就比较方便了。所以先除以30而后向下取整,得到一个横、纵坐标的数值都在15以内的一个等价坐标。比如与实际坐标(315,315)对应的坐标就是(15/30,315/30)(ps:还需要进行向下取整),即坐标(0,10)。

    这是我的理解,不知我是否讲的清楚了呢?

JS实现人机大战之五子棋(UI篇)

利用js及canvas绘图知识,实现程序界面编写和交互逻辑处理

35650 学习 · 136 问题

查看课程

相似问题