为什么我点击的时候不能落子,而且点击一次,就会在F12的控制台里面报一个错呢?

来源:2-5 落子实现

RicardoM

2016-10-20 17:14

var chessBoard = [];
var me = true;

for(var i=0; i<15; i++){
    chessBoard[i] = [];
    for(var j=0; j<15; j++){
        chessBoard[i][j] = 0;
    }
}

var chess = document.getElementById('chess');
var context = chess.getContext('2d');

context.strokeStyle = "#BFBFBF";

var logo = new Image();
logo.src = "images/logo.jpg";
logo.onload = function() {
    context.drawImage(logo, 0, 0, 450, 450);
    drawChessBoard();
}

var drawChessBoard =function(){
    for(var i=0; i<15; i++){
        context.moveTo(15 + i*30, 15);
        context.lineTo(15 + i*30, 435);
        context.stroke(); 
        context.moveTo(15, 15 + i*30);
        context.lineTo(435, 15 + i*30);
        context.stroke();   
    }
}

var oneStep = function(i, j, me){
    context.beginPath();
    context.arc(15 + i*30, 15 + j*30, 13, 0, 2 * Math.PI);
    context.closePath();
    var gradient = context.createRadialGradient(15 + i*30 + 2, 15 + j*30 - 2, 13, 15 + i*30 + 2, 15 + j*30 - 2, 0);
    if (me) {
        gradient.addColorStop(0, "#0A0A0A");
        gradient.addColorStop(1, "#636766");
    } else {
        gradient.addColorStop(0, "#D1D1D1");
        gradient.addColorStop(1, "#F9F9F9");
    }
    context.fillStyle = gradient;
    context.fill();
}

chess.onclick = function(e) {
    var x = e.offSetX;
    var y = e.offSetY;
    var i = Math.floor(x / 30);
    var j = Math.floor(y / 30);
    if(chessBoard[i][j] == 0){
        oneStep(i, j, me);
        if(me){
            chessBoard[i][j] = 1;
        } else {
            chessBoard[i][j] = 2;
        }
        me = !me;
    }
}


写回答 关注

1回答

  • 慕粉4229326
    2016-10-21 10:34:24
    已采纳

    var x = e.offsetX; offSetX改成offsetX试试,大小写的问题

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

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

35650 学习 · 136 问题

查看课程

相似问题