コード例 #1
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);
            }
        }
コード例 #2
0
        public void GameStart()
        {
            Thread.Sleep(200);
            isPlaying = true;
            int[] mixcards = ShuffleCards();

            for (int i = 0; i < GamePlayerNumber; i++)
            {
                if (dictNNPlayers.ContainsKey(i))
                {
                    var            player   = dictNNPlayers[i];
                    OnePlayerCards onecards = new OnePlayerCards();
                    onecards.seatid = i;
                    onecards.nntype = 0;
                    onecards.xgold  = 0;
                    string logstr = "******   玩家 " + i + " 的牌为 :";
                    for (int j = 0; j < player.NNCards.Length; j++)
                    {
                        var card = mixcards[player.NNCards.Length * i + j];
                        player.NNCards[j] = card;
                        onecards.cards.Add(card);

                        logstr += mixcards[player.NNCards.Length * i + j] + "  ";
                    }

                    player.NNType  = NiuNiuHelper.CalcNNType(player.NNCards);
                    player.MaxCard = NiuNiuHelper.GetMaxCard(player.NNCards);
                    logstr        += string.Format("   牛牛点数为:{0}   最大的牌为:{1}", player.NNType, player.MaxCard);
                    byte[] data = NetUtil.ProtobufSerialize(onecards);
                    player.conn.SendAsync((ushort)MainID.NiuNiu, (ushort)NiuNiuID.GameDeal, data);

                    LogUtil.LogInfo(logstr);
                }
            }

            //倒计时
            int nDelayTime = 3;

            Thread.Sleep(200);
            TimeCount(nDelayTime);

            Thread.Sleep((nDelayTime + 1) * 1000);
            GameLayCards();

            Thread.Sleep((dictNNPlayers.Count + 1) * 1000);
            //判断是否换庄家,游戏初始化
        }