Beispiel #1
0
        public void Save(TPackage package)
        {
            IDictionary <string, string> dict = getParameterList();

            foreach (KeyValuePair <string, string> item in dict)
            {
                PropertyInfo pinfo = package.GetType().GetProperty(item.Key.Substring(1));

                if (pinfo != null)
                {
                    _command.Parameters[item.Key].Value = pinfo.GetValue(package, null);
                }
            }
            try
            {
                if (_connection.State != ConnectionState.Open)
                {
                    _connection.Open();
                }

                _command.ExecuteNonQuery();
                _connection.Close();
            }
            catch (SqlException ex)
            {
                Toos.Msg_Error("错误:SQL数据库{0}\n", ex.Message);
            }
            catch (Exception exp)
            {
                Toos.Msg_Error("错误:{0}!\n", exp.ToString());
            }
        }
    public override void Execute()
    {
        int result = integrationModel.Result;

        GameOverArgs e = evt.data as GameOverArgs;

        #region 更新积分
        if (e.PlayWin)
        {
            integrationModel.PlayerIntergration += result;
        }
        else
        {
            integrationModel.PlayerIntergration -= result;
        }
        if (e.ComputerLeftWin)
        {
            integrationModel.ComputerLeftIntergration += result;
        }
        else
        {
            integrationModel.ComputerLeftIntergration -= result;
        }
        if (e.ComputerRightWin)
        {
            integrationModel.ComputerRightIntergration += result;
        }
        else
        {
            integrationModel.ComputerRightIntergration -= result;
        }
        #endregion

        #region 保存数据
        GameData data = new GameData();
        data.playerIntergration        = integrationModel.PlayerIntergration;
        data.computerLeftIntergration  = integrationModel.ComputerLeftIntergration;
        data.computerRightIntergration = integrationModel.ComputerRightIntergration;
        Toos.SaveData(data);
        #endregion

        //更新积分UI
        dispatcher.Dispatch(ViewEvent.UPDATE_INTEGRATION, data);

        cardModel.InitCardLibary();
        roundModel.InitRound();
        PoolManager.Instance.HideAllObject("Card");

        //显示一个游戏结束的面板
        Toos.CreateUIpanel(PanelType.GameOverPanel);
        dispatcher.Dispatch(ViewEvent.SHOW_INTERGRATION, data);
    }
Beispiel #3
0
    /// <summary>
    /// 读取保存数据
    /// </summary>
    private void  GetDaTa()
    {
        string   fileName = Consts.DataPath;
        FileInfo fileInfo = new FileInfo(fileName);

        if (fileInfo.Exists)
        {
            GameData oldData = Toos.GeyDataWithOutBom();

            //保存数据
            intergrationModel.ComputerLeftIntergration  = oldData.computerLeftIntergration;
            intergrationModel.ComputerRightIntergration = oldData.computerRightIntergration;
            intergrationModel.PlayerIntergration        = oldData.playerIntergration;
        }
    }
Beispiel #4
0
        static void Main(string[] args)
        {
            Faker faker = new Faker();
            Bar   f     = faker.Create <Bar>();

            Console.WriteLine(f == null);
            Faker    faker2    = new Faker();
            Too      _too      = faker2.Create <Too>();
            Faker    _faker    = new Faker();
            Dict     _testdict = _faker.Create <Dict>();
            Assembly ass       = Assembly.LoadFile("C:\\Users\\USER\\source\\repos\\ClassLibrary3\\GeneratorsLib\\bin\\Debug\\GeneratorsLib.dll");

            Type[] tt   = ass.GetTypes();
            Toos   ssss = _faker.Create <Toos>();
        }
    /// <summary>
    /// 接受来自
    /// </summary>
    public override void Execute()
    {
        //将倍数传到数据模块
        int multiple = (int)evt.data;

        Debug.Log(intergrationModel.Multiples + "   " + intergrationModel.BasePoint + "   " + intergrationModel.Result);

        intergrationModel.Multiples = multiple;


        //------------------点击完双倍单倍之后就开始游戏了----------------------
        Toos.CreateUIpanel(PanelType.BackgroundPanel);
        Toos.CreateUIpanel(PanelType.CharacterPanel);
        Toos.CreateUIpanel(PanelType.InteractionPanel);
    }
Beispiel #6
0
    public override void Execute()
    {
        //创建面板
        Toos.CreateUIpanel(PanelType.StartPanel);


        //初始化数据
        intergrationModel.Initintergration();
        cardModel.InitCardLibary();
        roundModel.InitRound();

        //-----读取数据----------------

        GetDaTa();

        //dispatcher.Dispatch(ViewEvent.UPDATE_INTEGRATION, oldData);
    }
Beispiel #7
0
        public void ThreadCallBack(Object obj)
        {
            _clinet        = obj as ThreadTcpClinet;
            _networkstream = _clinet.TcpClinet.GetStream();
            _formatter     = new BinaryFormatter();

            bool running = true;

            TSqlAdapter SqlAdapter = new TSqlAdapter();

            try
            {
                while (running)
                {
                    _package = (TPackage)_formatter.Deserialize(
                        _networkstream);

                    if (_package.MagicId == 0)
                    {
                        running = false;
                        Toos.Msg_Warn("客户端{0:D5}[{1}]请求结束会话\n",
                                      _clinet.ThreadId, _clinet.TcpClinet.Client.RemoteEndPoint.ToString());
                        break;
                    }

                    SqlAdapter.Save(_package);

                    Toos.Msg_Message("{0}=>{1}#{2};{3};{4}\n",
                                     _clinet.TcpClinet.Client.RemoteEndPoint.ToString(),
                                     Toos.GetLocalIP(), _package.NickFrom, _package.NickTo, _package.Text);
                }
            }
            catch (Exception ex)
            {
                Toos.Msg_Error("错误:{0}\n", ex.StackTrace);
            }
            finally
            {
                Toos.Msg_Warn("线程{0:D5},远程{1} 结束 [OK] .\n",
                              _clinet.ThreadId, _clinet.TcpClinet.Client.RemoteEndPoint.ToString());
                _networkstream.Close();
            }
        }
    /// <summary>
    /// 寻找手牌
    /// </summary>
    /// <returns></returns>
    public List <Card> FindSelectCard()
    {
        CardUI[] cardUIs = characterUI.CreatePoint.GetComponentsInChildren <CardUI>();
        tempUI   = new List <CardUI>();
        tempCard = new List <Card>();


        for (int i = 0; i < cardUIs.Length; i++)
        {
            if (cardUIs[i].IsSelectes)
            {
                tempUI.Add(cardUIs[i]);
                tempCard.Add(cardUIs[i].Card);
            }
        }

        Toos.Sort(tempCard, true);
        return(tempCard);
    }
Beispiel #9
0
        public void Start()
        {
            int i = 1;

            Toos.Msg("服务启动监听 @ {0} .\n", System.ConsoleColor.Green, _tcplistener.LocalEndpoint.ToString());
            _tcplistener.Start();

            while (true)
            {
                _clinet           = new ThreadTcpClinet();
                _clinet.ThreadId  = i;
                _clinet.TcpClinet = _tcplistener.AcceptTcpClient();

                TJobs work = new TJobs();
                ThreadPool.QueueUserWorkItem(work.ThreadCallBack, _clinet);

                Toos.Msg_Warn("客户端({0:D5}) @ {1} 连接[OK]\n", i++,
                              _clinet.TcpClinet.Client.RemoteEndPoint.ToString());
            }
        }
    /// <summary>
    /// 请求玩家出牌事件的回调
    /// </summary>
    /// <param name="payload"></param>
    private void onPlayPayCard(IEvent payload)
    {
        List <Card> cardList = characterView.player.FindSelectCard();
        CardType    cardType;

        Rulers.CanPop(cardList, out cardType);
        //还需要根据上次出牌的类型



        if (cardType != CardType.None)
        {
            //可以出牌
            PlayCardArg e = new PlayCardArg(cardList.Count, Toos.GetWeight(cardList, cardType), CharacterType.Player, cardType);


            dispatcher.Dispatch(CommandEvent.PlayCard, e);
        }
        else
        {
            Debug.Log("请选择正确的牌");
        }
    }
Beispiel #11
0
        public static void Main(string[] args)
        {
            int    _port = 8888;
            string _serverip;
            int    minWorkerThreads, maxWorkerThreads;
            int    minCompletionThreads, maxCompletionThreads;

            System.Threading.ThreadPool.GetMinThreads(out minWorkerThreads, out minCompletionThreads);

            // Get the maximum number of completion threads
            System.Threading.ThreadPool.GetMaxThreads(out maxWorkerThreads, out maxCompletionThreads);
            // Set the new max worker threads, but keep the old max completion threads
            //ThreadPool.SetMaxThreads(someDifferentValue, maxCompletionThreads);

            Toos.Msg_Message("本服务器默认提供最小线程数:{0:D5};最大线程数:{1:D5}\n", minWorkerThreads, maxWorkerThreads);
            if (args.Length > 0)
            {
                Toos.Msg_Message("*本服务器IP:{0}\n", args[0]);
                _serverip = args[0];
            }
            else
            {
                Toos.Msg_Message("本服务器IP:{0}\n", Toos.GetLocalIP());
                Toos.Msg_Message("输入IP地址或者直接回车使用默认地址:");

                _serverip = Console.ReadLine();
                if (_serverip == "")
                {
                    _serverip = Toos.GetLocalIP();
                }
            }


            TServer server = new TServer(_serverip, _port);

            server.Start();
        }
Beispiel #12
0
 /// <summary>
 /// 排序
 /// </summary>
 /// <param name="asc">升序asc 降序desc</param>
 public virtual void Sort(bool asc)
 {
     Toos.Sort(_cardList, asc);
     SortCardUI(_cardList);
 }
Beispiel #13
0
        public static void Main(string[] args)
        {
            string        ipString;
            int           port = 8888;
            TPackage      _package;
            IFormatter    _formater = new BinaryFormatter();
            NetworkStream _networkstream;

            Random rand = new Random();

            IPAddress ipaddress = new IPAddress(0);

            if (args.Length > 0 && IPAddress.TryParse(args[0], out ipaddress))
            {
                ipString = args[0];
                Toos.Msg_Message("远程服务器地址:{0}", ipString);
            }
            else
            {
                Toos.Msg_Message("请输远程服务器地址:");
                ipString = Console.ReadLine();
            }

            TcpClient clinet = new TcpClient();

            clinet.Connect(new IPEndPoint(IPAddress.Parse(ipString), port));
            Toos.Msg_Message("发送超时:{0:D};接受超时{1:D}", clinet.SendTimeout, clinet.ReceiveTimeout);

            _networkstream = clinet.GetStream();

            Toos.Msg_Error("正在连接{0}:{1} ...\n", ipString, port);
            Toos.Msg_Message("程序运行中按任意键退出:D\n");



            while (!Console.KeyAvailable)
            {
                _package = new TPackage()
                {
                    NickFrom = "发送:" + rand.Next(),
                    NickTo   = "接收:" + rand.Next(),
                    Text     = "数据:" + rand.Next(),
                    QQTo     = rand.Next().ToString(),
                    QQFrom   = rand.Next().ToString(),
                    DTime    = DateTime.Now,
                    MagicId  = 1
                };
                System.Threading.Thread.Sleep(500);

                try
                {
                    _formater.Serialize(_networkstream, _package);
                    Toos.Msg_Message("{0}=>{1}#{2};{3};{4}\n",
                                     Toos.GetLocalIP(),
                                     ipString, _package.NickFrom, _package.NickTo, _package.Text);
                }
                catch (Exception ex)
                {
                    Toos.Msg_Error("错误:{0}\n", ex.Message);
                }
            }

            //发送魔术包!
            _package = new TPackage()
            {
                NickFrom = "准备" + rand.Next(),
                NickTo   = "结束" + rand.Next(),
                Text     = "通讯" + rand.Next(),
                DTime    = DateTime.Now,
                MagicId  = 0
            };

            _formater.Serialize(_networkstream, _package);

            _networkstream.Close();
            clinet.Close();
        }
    IEnumerator DelayOneSecound(ComputerSmartArgs obj)
    {
        yield return(new WaitForSeconds(1f));

        bool can = false;

        switch (obj.characterType)
        {
        case CharacterType.ComputerRight:
            can = characterView.ComputerRight.ComputerSemarPlayCard(obj.cardType, obj.weight, obj.lenght, obj.biggerst == CharacterType.ComputerRight);
            if (can)
            {
                List <Card> cardList = characterView.ComputerRight.SelectCards;
                CardType    cardType = characterView.ComputerRight.currType;
                //--------------------------添加牌到桌面----------------



                characterView.Desk.Clear();    //添加牌之前把桌面清空下。这里可以做一个剩余牌数(记牌器),把出的牌临时放到一个数组里面,把总牌数减去手牌减去临时数组,就是剩余牌数,这是一个扩展
                foreach (Card card in cardList)
                {
                    characterView.AddCard(CharacterType.Desk, card, false);
                }


                //-----------------可以出牌-------------------
                PlayCardArg ee = new PlayCardArg(cardList.Count, Toos.GetWeight(cardList, cardType), CharacterType.ComputerRight, cardType);


                if (!characterView.ComputerRight.HasCard)
                {
                    Identity     r   = characterView.ComputerRight.Identity;
                    Identity     l   = characterView.ComputerLeft.Identity;
                    Identity     p   = characterView.player.Identity;
                    GameOverArgs eee = new GameOverArgs()
                    {
                        ComputerRightWin = true,

                        ComputerLeftWin = l == r ? true : false,
                        PlayWin         = p == r ? true: false,
                    };


                    dispatcher.Dispatch(CommandEvent.GameOver, eee);
                }
                else
                {
                    dispatcher.Dispatch(CommandEvent.PlayCard, ee);
                }
            }
            else
            {
                dispatcher.Dispatch(CommandEvent.PassCard);
            }

            break;

        case CharacterType.ComputerLeft:

            can = characterView.ComputerLeft.ComputerSemarPlayCard(obj.cardType, obj.weight, obj.lenght, obj.biggerst == CharacterType.ComputerLeft);

            if (can)
            {
                List <Card> cardList = characterView.ComputerLeft.SelectCards;
                CardType    cardType = characterView.ComputerLeft.currType;
                //--------------------------添加牌到桌面----------------
                characterView.Desk.Clear();    //添加牌之前把桌面清空下。这里可以做一个剩余牌数(记牌器),把出的牌临时放到一个数组里面,把总牌数减去手牌减去临时数组,就是剩余牌数,这是一个扩展
                foreach (Card card in cardList)
                {
                    characterView.AddCard(CharacterType.Desk, card, false);
                }


                //-----------------可以出牌-------------------
                PlayCardArg ee = new PlayCardArg(cardList.Count, Toos.GetWeight(cardList, cardType), CharacterType.ComputerLeft, cardType);

                if (!characterView.ComputerLeft.HasCard)
                {
                    Identity     r   = characterView.ComputerRight.Identity;
                    Identity     l   = characterView.ComputerLeft.Identity;
                    Identity     p   = characterView.player.Identity;
                    GameOverArgs eee = new GameOverArgs()
                    {
                        ComputerLeftWin  = true,
                        ComputerRightWin = r == l ? true : false,
                        PlayWin          = p == l ? true : false,
                    };


                    dispatcher.Dispatch(CommandEvent.GameOver, eee);
                }
                else
                {
                    dispatcher.Dispatch(CommandEvent.PlayCard, ee);
                }
            }
            else
            {
                dispatcher.Dispatch(CommandEvent.PassCard);
            }

            break;

        default:
            break;
        }
    }