用原生JS结合Canvas实现黑白五子棋小游戏

用原生JS结合Canvas实现黑白五子棋小游戏 最后编辑:2021年1月7日
增值服务: 自动发货 使用说明 安装指导 环境配置二次开发BUG修复

从效果图可以看到,棋盘的横竖可以放的位置为13*13,通过canvas画棋盘:

        //绘画棋盘
        var drawChessBoard = function(){
                   for(var i = 1; i <= 14; i++){
            game.ctx.moveTo(i * 30 + .5, 420)
            game.ctx.lineTo(i * 30 + .5,30)
            game.ctx.moveTo(30,i * 30 + .5)
            game.ctx.lineTo(420,i * 30 + .5)
            game.ctx.strokeStyle = "#C0A27B";
            game.ctx.stroke()
        }
        for(var i = 0; i <= 13; i++){
            game.chess_Board[i] = [];
            game.lianz[i] = [];
            for(var j = 0; j <= 13; j++){
                game.chess_Board[i][j] = 0;
                game.lianz[i][j] = 0;
            }
        }
        }

画好棋盘后,我们来计算赢法:

win: function(x,y,c,m,li){
        let ms = 1;
        var continuity = [];
        for(let i = 1; i < 5; i++){
            if(game.chess_Board[x + i * m[0]]){
                if(game.chess_Board[x + i * m[0]][y + i * m[1]] === c){
                    continuity.push([x + i * m[0],y + i * m[1]]) 
                    ms++;
                }else{
                    break;
                }
            }
        }
    
        for(let i = 1; i < 5; i++){
            if( game.chess_Board[x - i * m[0]]){
                if( game.chess_Board[x - i * m[0]][y - i * m[1]] === c){
                    continuity.push([x - i * m[0],y - i * m[1]]) 
                    ms++;
                }else{
                    break;
                }
            }
        }
    
        if(ms >= 5){
            //alert(c + "赢了")
            setTimeout(function(){
                console.log(c + "赢了")
            },600)
            continuity.push([x,y]);
            game.chessOff = false;
            game.regret_chess.style.background = '#d0cdcd';
            game.regret_chess.style.color = '#505050';
            let s = 5;
            let ls = [270,300,330,360,390];
            let ls1 = [390,420,450,480,510];
            continuity.forEach(function(value,index){
                let time = setInterval(function(){
                    game.lianz[value[0]][value[1]].style.transform = 'scale(0.9)';
                    game.lianz[value[0]][value[1]].style.boxShadow = "0px 0px 2px 2px #ffd507";
                    s--;
                    s <= 0 ? clearInterval(time) : clearInterval(time);
                },ls[index])
                let time2 = setInterval(function(){
                    game.lianz[value[0]][value[1]].style.transform = 'scale(1)';
                    game.lianz[value[0]][value[1]].style.boxShadow = "0px 0px 2px 2px #ffd507";
                    s++
                    s >= 5 ? clearInterval(time2) : clearInterval(time2);
                },ls1[index])
            })

            for(var i = 0; i < game.chess_Board.length; i++){
                for(var j = 0; j < game.chess_Board.length; j++){
                    if(game.chess_Board[i][j] === 0){
                       game.chess_Board[i][j] = "null";
                    }
                }
            }
            
            game.h.forEach(function(value,index){
                value.dm.innerText = value.list;
            })

            li == 1 ? game.winChesee.className = "state-chess Wchess" : game.winChesee.className = "state-chess Bchess";
            game.winName.innerText = c + "赢了";
            this.winner.style.display = "block";
        }
    }

 

本站资源均来自互联网或会员发布,仅供研究学习请勿商用以及产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
来利云 » 用原生JS结合Canvas实现黑白五子棋小游戏

售后服务:

  • 售后服务范围 1、商业模板使用范围内问题免费咨询
    3、单价超过200元的模板免费一次安装,需提供服务器信息。
    3、单价超过200元的模板免费一次安装,需提供服务器信息。
    付费增值服务 1、提供dedecms模板、WordPress主题、thinkphp模板优化等服务请详询在线客服
    2、承接 WordPress、DedeCMS、thinkphp 等系统建站、仿站、开发、定制等服务
    3、服务器环境配置(一般 ¥50-300)
    4、网站中毒处理(需额外付费,500元/次/质保三个月)
    售后服务时间 周一至周日(法定节假日除外) 12:00-21:00
    售后服务范围 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: 551962171@qq.com),我们会及时删除,给您带来的不便,我们深表歉意!

Hi, 如果你对该资源有疑问,可以跟我联系哦!

联系作者