示例#1
0
        public static Bitmap MapConfigurationToImage(ConfigurationBase <P, V> config, SpecificationBase <P, V> Spec, int imageSize)
        {
            string ExampleName = Spec.SpecificationName;

            try
            {
                ExpressionValue value;
                switch (ExampleName)
                {
                case "Sliding Game":
                    value = config.GlobalEnv.Variables["board"];
                    return(DrawSlidingBoard(EvaluatorDenotational.GetValueFromExpression(value) as int[], imageSize));

                case "Shunting Game":
                    value = config.GlobalEnv.Variables["board"];
                    int c = (config.GlobalEnv.Variables["c"] as IntConstant).Value;
                    int r = (config.GlobalEnv.Variables["r"] as IntConstant).Value;

                    //row
                    int N = (Spec.GlobalConstantDatabase["N"] as IntConstant).Value;
                    //col
                    int M = (Spec.GlobalConstantDatabase["M"] as IntConstant).Value;

                    Point shunter = new Point(c, r);

                    //DrawShunterBoard
                    //return DrawShunterBoard(EvaluatorDenotational.GetValueFromExpression(value) as int[], imageSize);
                    Point[] crossPos = { new Point(2, 2), new Point(2, 3), new Point(3, 2), new Point(3, 3) };
                    return(DrawShunterBoard(EvaluatorDenotational.GetValueFromExpression(value) as int[], shunter, crossPos, M, N, imageSize, imageSize));
                    //case "Dining Philosopher":
                    //    int numberOfPhilosophers = 5;
                    //    PhilosopherStatus[] philosopherStatuses = new PhilosopherStatus[numberOfPhilosophers];
                    //    philosopherStatuses[0] = PhilosopherStatus.Thinking;
                    //    philosopherStatuses[1] = PhilosopherStatus.Eating;
                    //    philosopherStatuses[2] = PhilosopherStatus.Thinking;
                    //    philosopherStatuses[3] = PhilosopherStatus.Thinking;
                    //    philosopherStatuses[4] = PhilosopherStatus.HaveLeftFork;

                    //    return DrawDiningPhilosopher(imageSize, philosopherStatuses);
                }
            }
            catch (Exception)
            {
            }

            return(null);
        }