public static void SimuHanoi(int n, char a, char b, char c)  //栈模拟汉诺塔
        {
            Stack <HanoiData> stack = new Stack <HanoiData>();
            HanoiData         temp  = new HanoiData(n, a, b, c);

            stack.Push(temp);
            int num = 1;

            while (stack.Count != 0)
            {
                temp = stack.Pop();
                if (temp.N == 1)
                {
                    Move(temp.Start, temp.End);
                    step++;
                }
                else
                {
                    HanoiData temp1 = new HanoiData(temp.N - 1, temp.Start, temp.End, temp.Middle);
                    HanoiData temp2 = new HanoiData(1, temp.Start, temp.Middle, temp.End);
                    HanoiData temp3 = new HanoiData(temp.N - 1, temp.Middle, temp.Start, temp.End);
                    stack.Push(temp3);
                    stack.Push(temp2);
                    stack.Push(temp1);
                    num++;
                }
            }
            step = 1;
        }
示例#2
0
    public override void processJsonObject(JSONObject job, HanoiData hd)
    {
        for (int i = 0; i < job.keys.Count; i++)
        {
            JSONObject val = job.list[i];
            switch (job.keys[i])
            {
            case "ft":
                if (val.IsNumber)
                {
                    frameTime = val.f;
                }
                break;

            case "fut":
                if (val.IsNumber)
                {
                    frameUnityTime = val.f;
                }
                break;

            case "fid":
                if (val.IsNumber)
                {
                    frameID = (int)val.n;
                }
                break;

            case "lc":
                if (val.IsNumber)
                {
                    frameLuaTime = val.f;
                }
                break;

            case "fc":
                if (val.IsNumber)
                {
                    frameFunTime = val.f;
                }
                break;

            default:
                // Debug.LogFormat("unknown field: {0}", obj.keys[i]);
                break;
            }
        }
    }
示例#3
0
    public virtual void processJsonObject(JSONObject job, HanoiData hd)
    {
        for (int i = 0; i < job.keys.Count; i++)
        {
            JSONObject val = job.list[i];
            switch (job.keys[i])
            {
            case "ln":
                if (val.IsNumber)
                {
                    currentLine = (int)val.n;
                }
                break;

            case "cs":
                if (val.IsNumber)
                {
                    timeConsuming = val.n;
                }
                break;

            case "lv":
                if (val.IsNumber)
                {
                    stackLevel = (int)val.n;
                    if (stackLevel > hd.m_maxStackLevel)
                    {
                        hd.m_maxStackLevel = stackLevel;
                    }
                }
                break;

            case "info":
                if (val.IsString)
                {
                    string type = val.str;
                    if (type.Equals("C"))
                    {
                        callType = eHanoiCallType.C;
                    }
                    if (type.Equals("Lua"))
                    {
                        callType = eHanoiCallType.Lua;
                    }
                }
                break;

            case "bt":
                if (val.IsNumber)
                {
                    beginTime = val.n;
                }
                break;

            case "et":
                if (val.IsNumber)
                {
                    endTime = val.n;
                }
                break;

            case "mod":
                if (val.IsString)
                {
                    moduleName = val.str;
                }
                break;

            case "fn":
                if (val.IsString)
                {
                    funcName = val.str;
                }
                break;

            case "sub":
                foreach (JSONObject childJson in val.list)
                {
                    HanoiNode child = new HanoiNode(this);
                    if (hd.readObject(childJson, child))
                    {
                        Children.Add(child);
                    }
                }
                break;

            default:
                // Debug.LogFormat("unknown field: {0}", obj.keys[i]);
                break;
            }
        }
    }
示例#4
0
 public ThreadCombineJson(HanoiData hanoiData)
 {
     m_data  = hanoiData;
     mThread = new Thread(new ThreadStart(HandleMsgAsyn));
     mThread.Start();
 }