Ejemplo n.º 1
0
        /// <summary>
        /// zählt die anzahl der Transitionen und füllt die Liste der Symbole auf
        /// </summary>
        /// <returns>Anzahl der Zustände</returns>
        private int CountStates()
        {
            int CountStates = 0;

            m_Symbols.Clear();

            TMState sts = m_TM.GetStates;

            while (sts != null)
            {
                CountStates++;
                string symbl = sts.GetRead();
                AddSymbol(symbl);
                sts = sts.GetNext();
            }
            return(CountStates);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Look for the next state
        /// </summary>
        /// <param name="FirstSts">first State</param>
        /// <param name="colStates">Liste der zusammengefassten Zustände</param>
        /// <returns>next state</returns>
        private TMState GetNextState(TMState FirstSts, ref ArrayList colStates)
        {
            colStates = new ArrayList();
            TMState resState = null;

            if (FirstSts != null)
            {
                string StateSymbl    = FirstSts.GetStateF();
                string NxtStateSymbl = StateSymbl;
                while (FirstSts != null && StateSymbl.Equals(NxtStateSymbl))
                {
                    colStates.Add(FirstSts);
                    FirstSts = FirstSts.GetNext();
                    if (FirstSts != null)
                    {
                        NxtStateSymbl = FirstSts.GetStateF();
                    }
                }
                resState = FirstSts;
            }
            return(resState);
        }
Ejemplo n.º 3
0
    // 디버깅용
    private void CheckTurnState()
    {
        if (stateMachine.IsStateType(typeof(TurnMgr_Nobody_)))
        {
            tmState = TMState.Nobody;
        }

        else if (stateMachine.IsStateType(typeof(TurnMgr_PlayerBegin_)))
        {
            tmState = TMState.PlayerTurnBegin;
        }

        else if (stateMachine.IsStateType(typeof(PlayerTurnMove)))
        {
            tmState = TMState.PlayerTurnMove;
        }

        else if (stateMachine.IsStateType(typeof(TurnMgr_PlayerAttack_)))
        {
            tmState = TMState.PlayerTurnAttack;
        }

        else if (stateMachine.IsStateType(typeof(PlayerTurnItem)))
        {
            tmState = TMState.PlayerTurnItem;
        }

        else if (stateMachine.IsStateType(typeof(TurnMgr_PlayerSkill_)))
        {
            tmState = TMState.PlayerTurnSkill;
        }

        else if (stateMachine.IsStateType(typeof(TurnMgr_Popup_)))
        {
            tmState = TMState.PlayerTurnPopup;
        }

        else if (stateMachine.IsStateType(typeof(TurnMgr_WaitSingleEvent_)))
        {
            tmState = TMState.WaitSingleEvent;
        }

        else if (stateMachine.IsStateType(typeof(TurnMgr_WaitMultipleEvents_)))
        {
            tmState = TMState.WaitMultipleEvent;
        }

        else if (stateMachine.IsStateType(typeof(AITurnBegin)))
        {
            tmState = TMState.AITurnBegin;
        }

        else if (stateMachine.IsStateType(typeof(TurnMgr_AIPlan_)))
        {
            tmState = TMState.AITurnPlan;
        }

        else if (stateMachine.IsStateType(typeof(TurnMgr_AIAction_)))
        {
            tmState = TMState.AITurnAction;
        }

        else
        {
            tmState = TMState.Nobody;
        }
    }
Ejemplo n.º 4
0
        /// <summary>
        /// konvertiert die Transitionen
        /// </summary>
        /// <returns>konvertierte Transitionen</returns>
        private string ConvertTransitions()
        {
            ArrayList colStates   = null;
            string    Transitions = "";
            TMState   sts         = m_TM.GetStates;
            int       NodesCnt    = NodesTotal(m_BitLen);

            while (sts != null)
            {
                sts = GetNextState(sts, ref colStates);
                if (colStates.Count > 0)
                {
                    string StateSymbl = ((TMState)colStates[0]).GetStateF() + "_";
                    string Trans      = "# Zustand: " + StateSymbl + "\r\n";
                    for (int NodesNr = 1; NodesNr < NodesCnt; NodesNr++)
                    {
                        string StateNrBinaer       = GenerateBinNr(NodesNr);
                        string StateNrBinaerBefore = GenerateBinNr(GetTreeNrBefore(NodesNr));
                        int    rdSymbl             = ((NodesNr + 1) % 2);
                        Trans += CreateTrans(StateSymbl + StateNrBinaerBefore, rdSymbl.ToString(), StateSymbl + StateNrBinaer, rdSymbl.ToString(), "R", (rdSymbl != 0));
                    }
                    Trans += "\r\n";
                    for (int i = 0; i < colStates.Count; i++)
                    {
                        TMState actSts   = (TMState)colStates[i];
                        string  AddSymbl = ConvertSymbol(actSts.GetRead());;
                        for (int Depth = 0; Depth < m_BitLen; Depth++)
                        {
                            Trans    += CreateTrans(StateSymbl + AddSymbl, "0", StateSymbl + AddSymbl + "Z", "0", "L", false);
                            Trans    += CreateTrans(StateSymbl + AddSymbl, "1", StateSymbl + AddSymbl + "Z", "1", "L", true);
                            AddSymbl += "Z";
                        }
                        Trans += "\r\n";
                        char[] writeSymbl = ConvertSymbol(actSts.GetWrite()).ToCharArray();
                        if (actSts.GetMove().ToUpper().Equals("R"))
                        {
                            for (int Depth = 0; Depth < writeSymbl.Length - 1; Depth++)
                            {
                                Trans    += CreateTrans(StateSymbl + AddSymbl, "0", StateSymbl + AddSymbl + "W", writeSymbl[Depth].ToString(), "R", false);
                                Trans    += CreateTrans(StateSymbl + AddSymbl, "1", StateSymbl + AddSymbl + "W", writeSymbl[Depth].ToString(), "R", true);
                                AddSymbl += "W";
                            }
                            Trans += CreateTrans(StateSymbl + AddSymbl, "0", actSts.GetStateN() + "_", writeSymbl[writeSymbl.Length - 1].ToString(), "R", false);
                            Trans += CreateTrans(StateSymbl + AddSymbl, "1", actSts.GetStateN() + "_", writeSymbl[writeSymbl.Length - 1].ToString(), "R", true);
                        }
                        else
                        {
                            for (int Depth = 0; Depth < writeSymbl.Length; Depth++)
                            {
                                Trans    += CreateTrans(StateSymbl + AddSymbl, "0", StateSymbl + AddSymbl + "W", writeSymbl[Depth].ToString(), "R", false);
                                Trans    += CreateTrans(StateSymbl + AddSymbl, "1", StateSymbl + AddSymbl + "W", writeSymbl[Depth].ToString(), "R", true);
                                AddSymbl += "W";
                            }
                            Trans += "\r\n";
                            for (int Depth = 0; Depth < writeSymbl.Length * 2 - 1; Depth++)
                            {
                                Trans    += CreateTrans(StateSymbl + AddSymbl, "0", StateSymbl + AddSymbl + "Z", "0", "L", false);
                                Trans    += CreateTrans(StateSymbl + AddSymbl, "1", StateSymbl + AddSymbl + "Z", "1", "L", true);
                                AddSymbl += "Z";
                            }
                            Trans += CreateTrans(StateSymbl + AddSymbl, "0", actSts.GetStateN() + "_", "0", "L", false);
                            Trans += CreateTrans(StateSymbl + AddSymbl, "1", actSts.GetStateN() + "_", "1", "L", true);
                        }
                        Trans += "\r\n";
                    }
                    Transitions += Trans;
                }
            }
            return(Transitions);
        }