慕粉1522128115
2017-03-11 13:50
/**
* Created by Administrator on 2017/3/11 0011.
*/
window.onload = function () {
var button = document.getElementById("button");
var buttonClickNum = 0;
button.addEventListener('click', function () {
var cols = document.getElementsByTagName('input')[0].value;
if (cols != 0 && buttonClickNum == 0) {
chess(cols);
buttonClickNum++;
} else if (buttonClickNum != 0) {
alert('请刷新再输入~')
} else {
alert("请输入棋盘大小!");
}
})
};
var chess = function (cols) {
var chess = document.getElementById("chess");
chess.style.width = cols * 30 + 'px';
chess.style.height = cols * 30 + 'px';
var context = chess.getContext('2d');
var me = true;
var chessBoard = [];
for (var z = 0; z < cols; z++) {
chessBoard[z] = [];
for (var x = 0; x < cols; x++) {
chessBoard[z][x] = 0;
}
}
// drawChessBoard();
//画棋盘线
context.strokeStyle = '#bfbfbf';
for (var i = 0; i < cols; i++) {
context.moveTo(15 + i * 30, 15);
context.lineTo(15 + i * 30, cols * 30 - 15);
context.stroke();
context.moveTo(15, 15 + i * 30);
context.lineTo(cols * 30 - 15, 15 + i * 30);
context.stroke();
}
;
//创建黑白棋子调用函数
var oneStep = function (i, j, me) {
//beginPath,closePath,arc 调用方法绘制圆
context.beginPath();
context.arc(15 + i * 30, 15 + j * 30, 13, 0, 2 * Math.PI);
context.closePath();
//调用圆心渐变的函数,通过addColorStop绘制起始和终止的渐变色
var gradient = context.createRadialGradient(15 + i * 30 + 2, 15 + j * 30 + 2, 10, 15 + i * 30 + 2, 15 + j * 30 + 2, 3);
if (me) {
gradient.addColorStop(0, '#0a0a0a');
gradient.addColorStop(1, "#636766");
} else {
gradient.addColorStop(0, '#D0D0D0');
gradient.addColorStop(1, "#F9F9F9");
}
//fillstyle,填充颜色,fill填充
context.fillStyle = gradient;
context.fill();
};
chess.onclick = function (e) {
var x = e.offsetX;
var y = e.offsetY;
console.log(x+"\t"+y);
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,15*15是符合标准的,2,弄这个功能没什么实际作用
首先,你的问题描述不清。既没有html代码,也没有说到底怎么个不正常。所以只能将就着在你贴出的代码中做简单推测分析,存在的问题如下(自上而下):
1、button绑定的click事件中,除了判断cols是否为0是合理的,其它的判断太让人纠结,你为什么不清除画布呢;
2、chess函数中使用“chess.style.width”有点不知所谓。打个比方,这玩意儿是定义分辨率的(场景大小),而不是定义显示器物理尺寸的(画布大小);
我猜你所说的不正常,就是指的这里的画布和场景大小不一致吧?问个问题都不会问,╭∩╮(︶︿︶)╭∩╮
3、此外,代码编写太不规范,看了让人心累。
JS实现人机大战之五子棋(UI篇)
35650 学习 · 136 问题
相似问题