コード例 #1
0
        public SubProcedureEnum Next()
        {
            var prePri = CurrentPrimaryStage;
            var preSub = CurrentSubStage;
            int intPri = (int)CurrentPrimaryStage;
            int intSub = (int)CurrentSubStage;

            intSub = (intSub + 1) % Helper.EnumHelper.GetValues(typeof(SubProcedureEnum)).Length;
            if (intSub == 0)
            {
                intPri = (intPri + 1) % Helper.EnumHelper.GetValues(typeof(PrimaryProcedureEnum)).Length;
            }
            CurrentPrimaryStage = (PrimaryProcedureEnum)intPri;
            CurrentSubStage     = (SubProcedureEnum)intSub;


            if (GameForward != null)
            {
                GameForward(prePri, preSub, CurrentPrimaryStage, CurrentSubStage);
            }

            return(CurrentSubStage);
        }
コード例 #2
0
        void Next()
        {
            var prePri = CurrentPrimaryStage;
            var preSub = CurrentSubStage;
            int intPri = (int)CurrentPrimaryStage;
            int intSub = (int)CurrentSubStage;

            intSub = (intSub + 1) % Helper.EnumHelper.GetValues(typeof(SubProcedureEnum)).Length;
            if (intSub == 0)
            {
                intPri = (intPri + 1) % Helper.EnumHelper.GetValues(typeof(PlayerEnum)).Length;
            }
            CurrentPrimaryStage = (PlayerEnum)intPri;
            CurrentSubStage     = (SubProcedureEnum)intSub;

            if (CurrentSubStage == SubProcedureEnum.Checking)
            {
                bool blackWin = board.HasConsecutiveNPiece(Status.StateEnum.black, 5);
                bool whiteWin = board.HasConsecutiveNPiece(Status.StateEnum.white, 5);
                if (blackWin && whiteWin)
                {
                    OnGameOver(Status.StateEnum.empty);
                }
                else if (blackWin)
                {
                    OnGameOver(Status.StateEnum.black);
                }
                else if (whiteWin)
                {
                    OnGameOver(Status.StateEnum.white);
                }
                else if (!board.Content.Any(e => e.State == Status.StateEnum.empty))
                {
                    OnGameOver(Status.StateEnum.empty);
                }
                else
                {
                    Next();
                    return;
                }
            }

            OnTurnChange();

            if (CurrentSubStage == SubProcedureEnum.Rotation && IsCurrentPlayerHuman())
            {
                OnRotateButtonSwitch(true);
            }
            if (CurrentSubStage == SubProcedureEnum.Placement)
            {
                if (!IsCurrentPlayerHuman())
                {
                    new Thread(new ThreadStart(GetCurrentPlayer().Active)).Start();
                    //GetCurrentPlayer().Active();
                }
                else
                {
                    Placeable = true;
                }
            }
        }