コード例 #1
0
        public void  NextGame()
        {
            //判断是否需要切换庄家
            var hplayer = dictNNPlayers[hostid];

            for (int i = 0; i < GamePlayerNumber; i++)
            {
                if (dictNNPlayers.ContainsKey(i))
                {
                    var p = dictNNPlayers[i];
                    if ((int)p.NNType >= (int)NiuNiuType.牛牛)
                    {
                        if (NiuNiuHelper.CalcPower(p, hplayer) > 0)
                        {
                            hplayer = p;
                        }
                    }
                }
            }
            SetHost(hplayer.SeatID);

            //数据初始化
            for (int i = 0; i < GamePlayerNumber; i++)
            {
                if (dictNNPlayers.ContainsKey(i))
                {
                    dictNNPlayers[i].NNCards = new int[5];
                    dictNNPlayers[i].NNType  = 0;
                    dictNNPlayers[i].GState  = 0;
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// 游戏开牌
        /// </summary>
        public void GameLayCards()
        {
            var hostPlayer = dictNNPlayers[hostid];
            int xhostgold  = 0;

            AllPlayersCards allcards = new AllPlayersCards();

            foreach (var v in dictNNPlayers.Values)
            {
                if (v.SeatID != hostid)
                {
                    OnePlayerCards onecards = new OnePlayerCards();
                    onecards.seatid = v.SeatID;
                    onecards.nntype = (int)v.NNType;
                    for (int i = 0; i < v.NNCards.Length; i++)
                    {
                        onecards.cards.Add(v.NNCards[i]);
                    }
                    //计算得分  数据库得更新
                    onecards.xgold   = NiuNiuHelper.CalcPower(v, hostPlayer) * Score;
                    v.UserInfo.gold += onecards.xgold;
                    LobbyServer.Ins.SaveUserInfo(v.UserInfo);

                    xhostgold += (-onecards.xgold); //庄家得分等于所有玩家相加的相反数
                    LogUtil.LogInfo("玩家 : " + onecards.seatid + " 牛牛 : " + onecards.nntype + " 输赢 : " + onecards.xgold);
                    allcards.oneplayercards.Add(onecards);
                }
            }

            //把庄家也加进去
            OnePlayerCards hostcards = new OnePlayerCards();

            hostcards.seatid = hostid;
            hostcards.xgold  = xhostgold;
            hostcards.nntype = (int)hostPlayer.NNType;
            for (int i = 0; i < hostPlayer.NNCards.Length; i++)
            {
                hostcards.cards.Add(hostPlayer.NNCards[i]);
            }
            allcards.oneplayercards.Add(hostcards);

            byte[] data = NetUtil.ProtobufSerialize(allcards);

            foreach (var v in dictNNPlayers.Values)
            {
                v.conn.SendAsync((ushort)MainID.NiuNiu, (ushort)NiuNiuID.GameLay, data);
            }
        }