请选择 进入手机版 | 继续访问电脑版

每天学一个jquery插件-五子棋实现2

[复制链接]
孤单 发表于 2021-1-2 17:51:09 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
天天一个jquery插件-五子棋实现2

五子棋实现2

  额,本日是元旦,清清爽爽的收拾了自己一下,然后休息了一天,总感觉少点什么,然后赶紧回博客照旧得日常纪录点啥,所以接着写五子棋的实现,不外智障ai暂时没有实现,其他的功能都想明确了,不外我匆忙写的内容没有思量公道的流程看看来日诰日啥时候起床,完完整整的优化一下代码,我也不知道现在的写的这个是啥玩意!
效果展示

现在的流程


  • 玩家落子
  • 判定落子是否已存在
  • 落子乐成画出对应棋子,存入缓存
  • 判定当前局面是否有一方得胜

  • 人机先查抄当前棋盘是否轮到自己落子,不是就跳过此轮点击棋盘时间,是的话就人机输出落点打印落子,重复玩家的流程
  • 额,人机的ai我是直接给随机产生棋盘上未落子的点来实现效果的 ,暂未搬过来高大上的东西,容我去研究研究算法。
代码部分,辣眼勿进,发起等优化之后再参考
  1. var wzqsx = function(div) {        var $obj = $("#" + div); //目标容器        $obj.addClass("beijing") //给目标容器增加需要的样式        $qipan = $("[table][/table]") //渲染table表作为棋盘        $qipan.appendTo($obj) //添加进目标容器        for (var i = 0; i < 14; i++) { //绘制14×14的棋盘格子,而且把下标标进去以便反面有用                var $row = $("[tr][/tr]")                for (var j = 0; j < 14; j++) {                        var $line = $("[td][/td]")                        $line.appendTo($row);                }                $row.appendTo($qipan);        }        return {                $arrs: [],                $obj: $obj,                $qipan: $qipan,                load: function() {                        var that = this; //作用域                        var tdw = that.$obj.width() * 0.92 / 14; //每个格子边长                        var sdw = tdw / 2; //每个格子边长                        that.$qipan.find("td").click(function(e) { //某个td被点击之后,判定点击的位置隔断这个td的四个角哪个角最近然后就视为落子点,再举行落子操纵                                var temp = Object.assign({}, $(this)[0].dataset) //获取                                var f1 = e.offsetX > tdw / 2;                                var f2 = e.offsetY > tdw / 2; //定位落子的位置是在四个角的哪一个                                var index = {                                        x: f1 ? parseInt(temp.line) + 1 : parseInt(temp.line),                                        y: f2 ? parseInt(temp.row) + 1 : parseInt(temp.row),                                        c: &#39;white&#39;                                }                                that.luozi(index);                                if(that.$arrs.length%2!=0){                                        that.ai();                                }                        })                },                wl:function(){                        //每次落子之后判定胜负手                        var that  =this;                        var jc = that.jiancha;                        for(var i = 0;in.x==t.x+1&&n.y==t.y&&n.c==t.c)!=undefined?true:false;                                var h3 = that.$arrs.find(n=>n.x==t.x+2&&n.y==t.y&&n.c==t.c)!=undefined?true:false;                                var h4 = that.$arrs.find(n=>n.x==t.x+3&&n.y==t.y&&n.c==t.c)!=undefined?true:false;                                var h5 = that.$arrs.find(n=>n.x==t.x+4&&n.y==t.y&&n.c==t.c)!=undefined?true:false;                                if(h2&&h3&&h4&&h5){                                        alert("游戏竣事"+t.c+"方得胜")                                        break;                                }                                //查抄竖的                                var s2 = that.$arrs.find(n=>n.x==t.x&&n.y==t.y+1&&n.c==t.c)!=undefined?true:false;                                var s3 = that.$arrs.find(n=>n.x==t.x&&n.y==t.y+2&&n.c==t.c)!=undefined?true:false;                                var s4 = that.$arrs.find(n=>n.x==t.x&&n.y==t.y+3&&n.c==t.c)!=undefined?true:false;                                var s5 = that.$arrs.find(n=>n.x==t.x&&n.y==t.y+4&&n.c==t.c)!=undefined?true:false;                                if(s2&&s3&&s4&&s5){                                        alert("游戏竣事"+t.c+"方得胜")                                        break;                                }                                //查抄斜的                                var x2 = that.$arrs.find(n=>n.x==t.x+1&&n.y==t.y+1&&n.c==t.c)!=undefined?true:false;                                var x3 = that.$arrs.find(n=>n.x==t.x+2&&n.y==t.y+2&&n.c==t.c)!=undefined?true:false;                                var x4 = that.$arrs.find(n=>n.x==t.x+3&&n.y==t.y+3&&n.c==t.c)!=undefined?true:false;                                var x5 = that.$arrs.find(n=>n.x==t.x+4&&n.y==t.y+4&&n.c==t.c)!=undefined?true:false;                                if(x2&&x3&&x4&&x5){                                        alert("游戏竣事"+t.c+"方得胜")                                        break;                                }                                var x2 = that.$arrs.find(n=>n.x==t.x-1&&n.y==t.y+1&&n.c==t.c)!=undefined?true:false;                                var x3 = that.$arrs.find(n=>n.x==t.x-2&&n.y==t.y+2&&n.c==t.c)!=undefined?true:false;                                var x4 = that.$arrs.find(n=>n.x==t.x-3&&n.y==t.y+3&&n.c==t.c)!=undefined?true:false;                                var x5 = that.$arrs.find(n=>n.x==t.x-4&&n.y==t.y+4&&n.c==t.c)!=undefined?true:false;                                if(x2&&x3&&x4&&x5){                                        alert("游戏竣事"+t.c+"方得胜")                                        break;                                }                        }                },                ai: function() {                        //暂时做个智障ai应付一下,逻辑是随机产生一个坐标,如果没有被填入就直接落子,如果有就重新生成,啊哈                        var that = this;                        var ai = {                                c: &#39;black&#39;                        };                        for (;;) {                                ai.x = Math.floor(Math.random() * 14);                                ai.y = Math.floor(Math.random() * 14);                                if(that.check(ai)){                                        that.luozi(ai);                                        break;                                }                        }                },                luozi: function(index) {                        var that = this;                        if (that.check(index)) {                                that.$arrs.push(index);                                that.qizi(index)                        }                        that.wl();                },                qizi: function(index) {                        var $qizi = $("
  2. ");                        if (index.x != 14 && index.y != 14) {                                $qizi.appendTo($("td[data-row=&#39;" + index.y + "&#39;]td[data-line=&#39;" + index.x + "&#39;]"))                        }                        if (index.x == 14 && index.y != 14) {                                $qizi.appendTo($("td[data-row=&#39;" + index.y + "&#39;]td[data-line=&#39;" + 13 + "&#39;]"))                                $qizi.css({                                        "left": "50%"                                })                        }                        if (index.x != 14 && index.y == 14) {                                $qizi.appendTo($("td[data-row=&#39;" + 13 + "&#39;]td[data-line=&#39;" + index.x + "&#39;]"))                                $qizi.css({                                        "top": "50%"                                })                        }                        if (index.x == 14 && index.y == 14) {                                $qizi.appendTo($("td[data-row=&#39;" + 13 + "&#39;]td[data-line=&#39;" + 13 + "&#39;]"))                                $qizi.css({                                        "left": "50%",                                        "top": "50%"                                })                        }                },                check: function(index) {                        var that = this;                        var flag = true;                        for (var i = 0; i < that.$arrs.length; i++) {                                if (                                        that.$arrs[i].x == index.x &&                                        that.$arrs[i].y == index.y                                ) {                                        flag = false;                                        break;                                }                        }                        return flag;                }        }}
复制代码
溜了溜了

来源:https://blog.csdn.net/weixin_44142582/article/details/112074669
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )