自己用cocoscreator写的寻路算法

本文记录了作者根据A*算法教程,利用CocosCreator编写寻路算法的过程。作者首先在场景中创建了100个格子,并设置随机障碍物构成地图,然后详细介绍了A*算法的代码实现。
摘要由CSDN通过智能技术生成

看了网上的A*算法的教程后,自己尝试着写了一个,也不知道正不正宗哈哈,A*算法的原理我就不说了,下面是具体代码实现。

首先 我在场景上平铺了100个格子,然后随机生成了障碍物,这样地图就完成了,


接下来就是具体的寻路算法。

//寻路
foundBestMove:function(){


    this.blocknow.setColor(cc.Color.YELLOW);
        this.blocknow.inend = true;
        this.checklist.splice(0,1);
    this.checkBlock();

    if(this.blocklist[99].inend===true){
        var block = this.blocklist[99];
        while (block.getComponent("blockControl").index !== 0) {
            block.setColor(cc.Color.ORANGE);
            if (block.getComponent("blockControl").parentblock) {
                block = block.getComponent("blockControl").parentblock;
            }else{
                return;
            }
        }
        block = this.blocklist[0];
        block.setColor(cc.Color.ORANGE);
    }else if(this.checklist.length<1){
        cc.log("无法到达终点");
    }else{
        this.foundBestMove();
    }
},

//检查周围格子
checkBlock:function() {
    var num = this.blocknow.getComponent("blockControl").index;
    if (num !== 99) {
        if ((num + 1) % 10 < 10 && this.blocklist[num + 1].getComponent("blockControl").isobstacle === false && this.blocklist[num + 1].inend !== true) {
            if (this.blocklist[num + 1].getComponent("blockControl").ischecked === false) {
                this.blocklist[num + 1].getComponent("blockControl").ischecked = true;
                this.blocklist[num + 1].getComponent("blockControl").parentblock = this.blocknow;
                this.checklist.push(this.blocklist[num + 1]);
                this.blocklist[num + 1].setColor(cc.Color.GREEN);
                var w = Math.abs(this.blocklist[num + 1].getComponent("blockControl").landscapeCount - this.blocknow.getComponent("blockControl").landscapeCount);
                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值