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

183 阅读2分钟

上次我们说到了当调用checkMove 函数时,要区分是拼图的还是华容道的,今天我们继续来处理这个问题。废话少说,下面直接开始。

1.打开game.ts 脚本,在start函数里加gameType,0表示拼图,1表示华容道。

  this.gameType=0//0 表示拼图   1表示华容道

记得顶部声明gameType

    gameType: number;

2.(1)在initklotski函数里加

this.gameType=1

(2)同样也要在initjigsaw函数里加

      this.gameType=0

3. (1)checkMove 加判断处理

        let itemType=''

        if(this.gameType==0){

            itemType='itemJigsawContent'

        }else{

            itemType='item'

        }

  (2)同样,获取组件也是根据类型动态进行获取。

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

image.png

  4. (1)在dealMove函数里加判断处理

        let itemType=''

        if(this.gameType==0){

            itemType='itemJigsawContent'

        }else{

            itemType='item'

      
        }

(2)同样,获取组件也是根据类型动态进行获取。

image.png

5.(1)checkSuccess函数里,也要今行处理

        let itemType=''

        if(this.gameType==0){

            itemType='itemJigsawContent'

        }else{

            itemType='item'

        }

(2)同样,这里获取组件也是根据类型动态进行获取。

image.png

5.(1)在showEndItem函数里也要进行处理。

        let itemType=''

        if(this.gameType==0){

            itemType='itemJigsawContent'

        }else{

            itemType='item'

       

        }

(2)同样,这里获取组件也是根据类型动态进行获取。 image.png

6. 接下来,我们来完成下方块的打乱问题。

(1)在Initjigsaw函数里调用打乱顺序函数randomItem

        //随机方块

        for (let i = 0; i < 100; i++) {

        this.randomItem()  

        }

(2)在randomItem函数里,同样也要对游戏的类型进行判断。

        let itemType=''

        if(this.gameType==0){

            itemType='itemJigsawContent'

        }else{

            itemType='item'

        }

(3)同样,这里获取组件也是根据类型动态进行获取。     let itemjs=children[i].getComponent(itemType)   image.png

到这里,有没有发现,很多函数的进行了相同的处理,是不是可以将这部分的代码抽离出来呢,这个优化就留给你们了。

好了今天就到这里了,主要说了游戏类型的处理。下次我们继续。可能写的过程中还有很多不好的地方,希望大家能指出来,在此,谢谢大家