首页 > 其他分享 >人工智能五子棋游戏——(5)五子棋游戏的后端实现

人工智能五子棋游戏——(5)五子棋游戏的后端实现

时间:2023-02-19 16:23:58浏览次数:86  
标签:游戏 人工智能 chessboard 五子棋 current column chess var row

后端实现

主体代码设计

后端主要采用的是JavaScript语言实现的,对HTML中五子棋落子的点击操作进行反应,确定胜负条件等判断。

初始化棋盘的主要代码如下:

 

var chessboard = new Chessboard(15, 15);

var chessboardDom = $('.chessboard');

//耗时和时钟

var t = 0,

      tick;

//初始化棋盘dom

var initData = function() {

    for (var i = 0; i < chessboard.row; i++) {

        var rowDom = $('<div></div>').addClass('row');

        for (var j = 0; j < chessboard.column; j++) {

            var tile = $('<div></div>').addClass('tile').data({

                row: i,

                column: j

            });

            rowDom.append(tile);

        }

        chessboardDom.append(rowDom);

    }

};

胜负判断的代码如下:

ar initEvent = function() {

    $('.tile').on('click', function() {

        //如果下棋还未完结

        if (!chessboard.isEnded()) {

            var self = $(this);

            //已经有棋子

            if (self.is('.chess')) {

                alert('请选择空余的格子下棋');

            } else {

                var row = self.data('row'),

                    column = self.data('column');

                //人下棋

                chessboard.put(row, column, Chessboard.MAX);

                self.addClass('chess chess-max current').text('●');

                //第一次下棋开始计时

                if (!tick) {

                    tick = setInterval(function() {

                        t++;

                        $('.timer').text('对局已经过' + t + '秒');

                    }, 1000);

                }

                //人赢了,结束游戏

                if (chessboard.isMaxWin()) {

                    chessboard.end();

                    clearInterval(tick);

                    return alert('你用了' + t + '秒赢了人工智能');

                }

                //没赢,但平手了

                if (chessboard.isEnded()) {

                    clearInterval(tick);

                    return alert('你用了' + t + '秒和人工智能成为平手');

                } else {

                    setTimeout(function() {

                        //未分胜负,AI下棋

                        console.time('min');

                        var res = min(chessboard, 2);

                        console.timeEnd('min');

                        //AI下棋

                        chessboard.put(res.row, res.column, Chessboard.MIN);

                        $('.current').removeClass('current');

                        chessboardDom.find('.row').eq(res.row).find('.tile').eq(res.column).addClass('chess chess-min current').text('○');

                        //AI赢了,结束游戏

                        if (chessboard.isMinWin()) {

                            chessboard.end();

                            clearInterval(tick);

                            return alert('你被人工智能打败!');

                        }

                        //没赢,但平手了,否则未分胜负,等待人继续下棋

                        if (chessboard.isEnded()) {

                            clearInterval(tick);

                            return alert('你用了' + t + '秒赢了人工智能');

                        }

                    }, 200);

                }

            }

        }

});

悔棋的代码如下:

$('.rollback').on('click', function() {

        //倒退两步

        var steps = chessboard.rollback(2);

        //清空前两步的dom文本

        steps.forEach(function(step) {

            chessboardDom.find('.row').eq(step.row).find('.tile').eq(step.column).removeClass('chess chess-min chess-max current').text('');

        });

        //返回当前的下棋位置,并添加current类

        var step = chessboard.current();

        if (step) {

            chessboardDom.find('.row').eq(step.row).find('.tile').eq(step.column).addClass('current');

        }

    });

};

标签:游戏,人工智能,chessboard,五子棋,current,column,chess,var,row
From: https://www.cnblogs.com/yenaibo/p/17134940.html

相关文章

  • 人工智能五子棋游戏——(5)五子棋游戏的算法实现
    算法代码设计五子棋的内层算法决定了人工智能五子棋的反应速度和下棋实力。通过数值搜索算法,以尽量快的响应速度,让玩家感受不到延迟。不断的对算法进行优化,提高人工智能五......
  • 人工智能五子棋游戏——(2)功能模块简介
    功能模块简介游戏各功能模块的设计也各不相同,游戏中的棋盘系统、计时系统、游戏控制在前端。游戏控制包括玩家黑子控制和人工智能白子控制。后端算法主要负责判定游戏胜负......
  • 人工智能五子棋游戏——(3)算法模块简介
     游戏的运算能力是决定整个游戏性能和性能的关键因素。算法是软件的核心,所以当你自己的工作要做某些事情的时候,它就必须要有一个演算法。一个好的方法可以减少错误率,高效......
  • 【笔记本推荐】【游戏本推荐】【办公本推荐】【设计本推荐】
    (注意:建议在旗舰店、官方旗舰店、官网购买)一、游戏本设计本、办公本推荐如下:华为品牌:(全球第一大电信设备商)1万多:HUAWEIMateBookXPro2022款14.2英寸11代酷睿i716GB......
  • [PKUSC2018]神仙的游戏
    神仙的游戏设s的长度为len,那么当k<=\(\lfloor\frac{len}{2}\rfloor\)时,只需要s[1..k]=s[len-k+1...len]即可。也就是说我们要判断前缀的1与后缀的0是否对应。......
  • 软件测试|教你使用Python实现五子棋游戏(一)
    前言五子棋是我们传统的益智游戏之一,老少皆宜,上手简单,对于锻炼逻辑思维,增强思考能力有很大帮助。那么,我们能不能使用Python来写出五子棋的程序呢,毕竟不是什么时候都有对手和......
  • 教你如何游戏里面禁止ctrl+shift 切输入法
    最近玩刀剑封魔录,这种老游戏,游戏里面ctrl+shift切输入法会很卡.有时候又会误操作. autohotkey搞定.代码如下:GroupAdd,game,ahk_exeSC2_x64.exe;注......
  • 简单的猜拳游戏-JAVA实现
    一个简单的猜拳游戏packagecom.zhou.java.demo02;importjava.util.Random;importjava.util.Scanner;publicclassDemo09{publicstaticvoidmain(String[]args......
  • 怎样才能给人工智能注入有趣的灵魂?
    以ChatGPT为代表的人工智能,理论上无法像人类一样拥有灵魂,但可以通过以下方式赋予其一定的趣味性:个性化-为人工智能添加特定的个性和语言风格,使其在与人类交互时更加......
  • 人工智能导论
    importnumpyasnpimportmatplotlib.pyplotaspltimportpandasaspdimportseabornassnsfromsklearn.linear_modelimportSGDRegressorimportjoblibimport......