Получение команды для чтения несколько раз c # - PullRequest
0 голосов
/ 01 ноября 2019

Я делаю программирование, используя win # cform, который по сути является очень простым языком программирования, который позволяет пользователям вводить команды, например, круг (радиус), прямоугольник (ширина, высота), треугольник (сторона, сторона, сторона),moveTo (x, y) <- для перемещения позиции пера. У меня проблема в том, что программа читает только одну команду за раз, а не принимает все команды и выполняет их как блок. </p>

Я хочу иметь возможность поместить список команд и программузатем выполните этот список, например, moveTo (x, y) circle (radius) <- это нарисует круг на экране с радиусом и везде, где пользователь определил x и y pos. </p>

public void RunProgram()
    {
        try
        {
            string[] spilt = cp.UserCMD(textInput).Split('(', ')', ',');
            foreach (string cmd in spilt) //spilt string on brackets and comma 
            {
                if (cp.ValidCommand(textInput) == true)
                {
                    if (cp.FunctionCMD(textInput) == "reset")
                    {
                        x = 0;
                        y = 0;
                    }
                    else if (cp.FunctionCMD(textInput) == "moveTo")
                    {
                        x = Int32.Parse(spilt[1]);
                        y = Int32.Parse(spilt[2]);

                    }
                }

                if (cp.FunctionCMD(textInput) == "circle")
                {
                    radius = Int32.Parse(spilt[1]);
                }
                if (cp.FunctionCMD(textInput) == "rectangle")
                {
                    width = Int32.Parse(spilt[1]);
                    height = Int32.Parse(spilt[2]);
                }
                if (cp.FunctionCMD(textInput) == "triangle")
                {
                    side1 = Int32.Parse(spilt[1]);
                    side2 = Int32.Parse(spilt[2]);
                    side3 = Int32.Parse(spilt[3]);

                }

            }

            Graphics g;
            g = Graphics.FromImage(drawOutput);
            Pen pen = new Pen(Color.Black, 5);

            if (cp.ValidCommand(textInput) == true)
            {
                if (cp.FunctionCMD(textInput) == "circle")
                {
                    circle.drawCircle(radius, pen, g, x, y);
                    setImage(g);

                }
                if (cp.FunctionCMD(textInput) == "rectangle")
                {
                    rect.drawRectangle(width, height, pen, g, x, y);
                    setImage(g);
                }
                if (cp.FunctionCMD(textInput) == "triangle")
                {
                    tri.drawTriangle(side1, side2, side3, pen, g);
                    setImage(g);
                }

            }
            else
            {
                MessageBox.Show("You have a syntax error, Please check your command");
            }
        }
        catch (IndexOutOfRangeException e1)
        {
            MessageBox.Show("You have a syntax error, Please check your parameters \nError: \n" + e1);
        }
    }

Спасибо

...