用CocosCreator3.6开发一款拼图游戏(十一)

156 阅读2分钟

上次我们已经说到了方块的移动了,今天我们继续,今天我们主要说如何判断游戏是否通关成功,废话少说,下面直接开始。

1. 打开item.ts脚本。

(1)在初始化时记录每一个方块的坐标。

       this.item_x=this.node.getPosition().x

        this.item_y=this.node.getPosition().y

  image.png

(2)要在顶部声明变量

image.png  

2. 打开game.ts脚本

(1)在initklotski函数里初始化下isSuccess,用来判断下是否成功。初始时值为false

        this.isSuccess=false

image.png

  (2)记得要声名下isSuccess

image.png

(3)增加checkSuccess函数,用来判断是否成功。

    //判断是否成功

    checkSuccess(){

        let is_su=true

        let children=this.bg.children //获取bg下的所有节点

        for (let i = 0; i < children.length; i++) {

            let itemjs=children[i].getComponent(item)

            if(itemjs ){ //

                let pos=children[i].getPosition()  

                if(itemjs.item_x == pos.x && itemjs.item_y == pos.y ){

                  }else{

                    is_su=false 

                    break

                }

            }            

        }

        this.isSuccess=is_su

        console.log('isSuccess='+this.isSuccess)

    }

  (4)在dealMove函数里调用checkSuccess函数。

        this.checkSuccess()

 

image.png

(5)接下来,我们测试下,没问题。但这个函数些得不是很好,后面有时间再优化下。

image.png

  3. 虽然判断了游戏通关是否成功,我们再稍微优化下,就是判断已经成功了,让玩家点击方块时不再移动。

(1)在判断是否能移动方块的checkMove函数里,加多一个判断条件。

    if(this.isSuccess) return 

  image.png

  (2)同时方块打乱时也调用了该函数,因此,在加多一个判断条件。在checkMove函数上加多一个参数。用来区分是那个地方调用该函数了

image.png

(3)在randomItem函数时调用checkMove时传true

image.png  

(4)在点击回调函数onTouchEnd时调用checkMove传false****

image.png

  (5)再次测试时,当成功通关时,点击方块时不移动了。

image.png

好了今天就说到这里了,主要说了游戏通关是否成功和通关后,点击方块时不再移动。下次我们继续。可能写的过程中还有很多不好的地方,希望大家能指出来,在此,谢谢大家