专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > HTML5

HTML5+JS 《五子飞》游戏实现(5)移动棋子

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
HTML5+JS 《五子飞》游戏实现(五)移动棋子

上一章 我们知道了怎么处理两个重要的吃棋动作,想要吃对方的棋子,首先得移动自己的棋子。现在里沃特跟大家分享分享,怎么移动棋子。

想要移动棋子,在页面上,首先要点击一下要移动的棋子,然后再点击一下目标位置,如果可以移动,则把棋子移动的目标位置,原来的位置就要清空

上面这句话,我们要分两步来处理:1、判断目标是否可移动;2、可以移动则移动棋子。

 

1、判断目标是否可移动。

首先移动时只能按直线,其次目标位置与原始位置之间不能有其他棋子:

    // 是否可移动
    this.canMove = function (pDest, pSrc) {
        var pi = this.getIndex(pDest, pSrc);
        if (pi && pi.destIndex != pi.srcIndex) {
            if (this.chesses[pi.destIndex].player == Player.None && this.chesses[pi.srcIndex].player != Player.None) {
                var i1, i2, j;
                for (var i = 0; i < this.lines.length; i++) {
                    i1 = $.inArray(pi.destIndex, this.lines[i]);
                    i2 = $.inArray(pi.srcIndex, this.lines[i]);
                    if (i1 != -1 && i2 != -1) {
                        if (pi.destIndex < pi.srcIndex) {
                            for (var j = Math.min(i1, i2); j < Math.max(i1, i2) - 1; j++) {
                                if (this.chesses[this.lines[i][j]].player != Player.None) {
                                    return false;
                                }
                            }
                        } else {
                            for (var j = Math.min(i1, i2) + 1; j <= Math.max(i1, i2); j++) {
                                if (this.chesses[this.lines[i][j]].player != Player.None) {
                                    return false;
                                }
                            }
                        }
                        return pi;
                    }
                }
            }
        }
        return false;
    };

 

2、移动棋子:

可以移动时,要判断移动后,可不可以夹对方一个或挑对方一对,如果可以的话还要把对方被吃掉的棋子换成自己的棋子;同时根据上一章的函数,我们知道,夹一个或挑一对的同时有可能会出现同时有两条线或多条线的棋子被吃掉,(下一次我们再细讲)。:

    // 移动棋子
    this.moveChess = function (pDest, pSrc) {
        this.chessarray = null;
        var pi = this.canMove(pDest, pSrc);
        if (pi) {
            this.chesses[pi.srcIndex].moveTo(this.chesses[pi.destIndex]);

            var chess = this.chesses[pi.destIndex];
            var r1 = this.canCarry(chess), r2 = this.canClip(chess);
            if (r1 || r2) {
                var rl = (r1 ? r1.length : 0) + (r2 ? r2.length : 0);
                if (rl == 1) {
                    if (r1) {
                        // 被替换掉的棋子
                        this.chessreplace.push(r1[0][0]);
                        this.chessreplace.push(r1[0][1]);
                        // 替换
                        this.chesses[r1[0][0].point.index].player = chess.player;
                        this.chesses[r1[0][1].point.index].player = chess.player;
                    } else {
                        // 被替换掉的棋子
                        this.chessreplace.push(r2[0][0]);
                        // 替换
                        this.chesses[r2[0][0].point.index].player = chess.player;
                    }
                } else {
                    // 如果有多条路线的棋子可以吃,先存起来,再提示用户选择吃哪一条线上的
                    this.chessarray = [];
                    if (r1) {
                        for (var i = 0; i < r1.length; i++) {
                            this.chessarray.push(r1[i]);
                        }
                    }
                    if (r2) {
                        for (var i = 0; i < r2.length; i++) {
                            this.chessarray.push(r2[i]);
                        }
                    }
                }
            }
            return true;
        }
        return false;
    };

 

这一节讲的比较简单,大家先消化一下。下一节我们将实现多重棋子的操作与提示。

 

HTML5+JS 《五子飞》游戏实现(一)规则

HTML5+JS 《五子飞》游戏实现(二)路线分析和资源准备

HTML5+JS 《五子飞》游戏实现(三)页面和棋盘棋子

HTML5+JS 《五子飞》游戏实现(四)夹一个和挑一对

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 使用HBuilder编辑器将html五页面打包成APP

    使用HBuilder编辑器将html5页面打包成APP   使用HBuilder编辑器将html5页面打包成APP (ios+安卓) 1.首先先安装HBuilder编...

  • 基于phonegap,html5,ratchet,handlebars等技术的微神情APP

    基于phonegap,html5,ratchet,handlebars等技术的微表情APP 该app是由很多有意思的微表情构成的,支持40种表情,并且每种表情都有不同的...

  • HTML5 Web 客户端五种离线储存方式汇总

    HTML5 Web 客户端五种离线存储方式汇总 最近折腾HTML5游戏需要离线存储功能,便把目前可用的几种HTML5存储方式研究了下,基于H...

  • SPICE-HTML5 鼠标指针BUG修补

    SPICE-HTML5 鼠标指针BUG修复 研究SPICE,找到了他们官方指定的HTML5客户端。 下载下来用一下,发现跟网页VNC的水平差不多了。 http:...

  • HTML5+JS 《五子飞》游戏实现(5)移动棋子

    HTML5+JS 《五子飞》游戏实现(五)移动棋子 上一章 我们知道了怎么处理两个重要的吃棋动作,想要吃对方的棋子,首先得移动自己的棋子。...

  • HTML5中怎么上传Resize后的图片

    HTML5中如何上传Resize后的图片 参考资料: 不依赖form标签,而是自己定义FormData上传数据,文件被编码为一个Blob或File对象: https...

  • (1)HTML5

    (一)HTML5 可以解决什么问题: 可以实现网页的ajax加载,同时又能完成URL的改变而没有网页跳转刷新的迹象,就像是改变了网页的hash(#)一样。...

  • 一款纯html5实现的钟表

    一款纯html5实现的时钟 今天给大家分享一款非常漂亮的纯html5实现的时钟。整个界面都由html5绘制而成。一起看下效果图: 在线预览...

  • 使用 WebSockets 开展 HTML5 视频直播

    使用 WebSockets 进行 HTML5 视频直播 实验环境:Ubuntu。 参考以下两个链接进行实践: http://segmentfault.com/blog/xingrz/119...

  • 查询浏览器是不是支持html5

    查询浏览器是否支持html5 js判断 插入js代码====================================================== <script> wind...

热门推荐: