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); }