js 五子棋

js 小游戏----五子棋
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        canvas {
            border: 1px solid lightcoral;
            margin: 50px;
        }
    </style>
</head>
<body>
<canvas id="canvas" width="450" height="450"></canvas>
<script>
    var num = 0;
    var cxt = canvas.getContext("2d");
    var arr = [];
    for (var j = 0; j < 15; j++) {
        arr[j] = [];
        for (var p = 0; p < 15; p++) {
            arr[j][p] = 0;
        }
    }
//    console.log(arr);
    cxt.lineWidth = 1;
    cxt.strokeStyle = "blue";

    /*棋盘横竖线*/
    for (var i = 0; i < 15; i++) {
        cxt.moveTo(15, 15 + i * 30);
        cxt.lineTo(435, 15 + i * 30);
        cxt.stroke();
    }//横线完
    for (var k = 0; k < 15; k++) {
        cxt.moveTo(15 + k * 30, 15);
        cxt.lineTo(15 + k * 30, 435);
        cxt.stroke();
    }//竖线完

    /*棋子制作*/
    function circleH(x, y) {
        cxt.beginPath();
        var grd = cxt.createRadialGradient(15 + x * 30, 15 + y * 30, 0, 15 + x * 30, 15 + y * 30, 12);
        grd.addColorStop(0, "gray");
        grd.addColorStop(1, "black");
        cxt.fillStyle = grd;
        cxt.arc(15 + x * 30, 15 + y * 30, 12, 0, 2 * Math.PI);
        cxt.fill();
    }//第二个下棋的子
    function circleW(x, y) {
        cxt.beginPath();
        var grd = cxt.createRadialGradient(15 + x * 30, 15 + y * 30, 0, 15 + x * 30, 15 + y * 30, 12);
        grd.addColorStop(0, "white");
        grd.addColorStop(1, "gray");
        cxt.fillStyle = grd;
        cxt.arc(15 + x * 30, 15 + y * 30, 12, 0, 2 * Math.PI);
        cxt.fill();
    }//第一个下棋的子

    canvas.onclick = function (e) {
        num++;
        var e2 = e || event;
        var x = Math.round((e2.offsetX - 15) / 30);
        var y = Math.round((e2.offsetY - 15) / 30);
//        console.log(X,Y);
        /*已有棋子的位置不能放棋子*/

        if (arr[x][y] == 0) {
            if (num % 2 == 0) {
                circleH(x,y);
            }
            else {
                circleW(x,y);
            }
            arr[x][y] = 1;
        } else {
            num--;
            alert("这里已经有棋子了");
        }

    };//点击的位置是棋子落下的位置

</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值