斗地主游戏制作流程(1)

1.创建牌的预制件,利用利用for循序 吊用创建预制件方法,将i值传入创建预制件中作为牌的id属性 并将其传入预制件绑定的脚本,

//------------------------------------------
onLoad: function () {

    this._loadedCards = 0
    this._totalNum = 52
    for(var i=1;i<=this._totalNum;i++){
        this._loadPic(i)
    }
},
_loadPic:function(num){
    var that = this
    cc.loader.loadRes("pokerPrefab", function (err, prefab) {
        if(err) cc.log(err)
        var newNode = cc.instantiate(prefab);
        cc.find('Canvas/cards').addChild(newNode);
        newNode.setPosition(0,0)
        newNode.scale = 0.3
        newNode.getComponent('card').pub_setNum(num)
        that._cardsArr.push(newNode)
        that._checkLoadFinish()
    });
},
_checkLoadFinish:function(){
    this._loadedCards++
    if(this._loadedCards == this._totalNum){
        this._splitCards()
    }
},

//------------------------------------

2.创建一个脚本绑定在预制件上,创建一个cardArr全局数组,在创建预制件的方法中将其node 节点push进入数组中,利用cardArr 数组创建for循环,创建一个变量 var random= parseInt(Math.random()*this._cardsArr.length)

//创建随机下标,在for循环中创建一个变量temp = this.cardArr[i]  再讲将temp 和 this._cardsArr[random] 进行交换

/---------------------------------

_splitCards:function(){
    for(var i = 0;i<this._cardsArr.length;i++){
        var random = parseInt(Math.random()*this._cardsArr.length)
        var temp = this._cardsArr[i]
        this._cardsArr[i] = this._cardsArr[random]
        this._cardsArr[random] = temp
    }

/-----------------------------------------------------------------


3. 将打乱的数组移动到 3个位置 创建 3个玩家数组 将其打算数组的下标push进玩家数组 ,将其移动到3个位置

发牌结束后 进入排序方法 将 在 预制件脚本创建一个新的变量 cardNum将 id =cardNum,利用判断将cardNum大小分为1- 13,之后在game脚本中获取预制件脚本中cardNum的大小,并且进行排序。

/-------------------------------------------------------------------

_sortsort: function(arr){
   for(var i = 0; i < arr.length; i++)
    {
        for(var j = 0; j < arr.length; j++)
        {
            if(arr[i].getComponent("Num").value < arr[j].getComponent("Num").value)
            {
                var temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }            
        } 
    }
},


_sorting:function(){   
    this._sortsort(this._GamePlayer1);
    this._sortsort(this._GamePlayer2);
    this._sortsort(this._GamePlayer3);

    for(var i = 0; i < this._GamePlayer1.length;i++){
        this._GamePlayer1[i].setPosition(-463, 211 - (25*i))
        this._GamePlayer1[i].setLocalZOrder(i+100);
    }
    for(var i = 0; i < this._GamePlayer2.length;i++){
        this._GamePlayer2[i].setPosition(-320+(25*i), -310)
        this._GamePlayer2[i].setLocalZOrder(i+100);
    }
    for(var i = 0; i < this._GamePlayer3.length;i++){
        this._GamePlayer3[i].setPosition(450, -235+(25*i))
        this._GamePlayer3[i].setLocalZOrder(i+100);
    }
    
},
/--------------------------------------------------------------


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值