示例#1
0
        public static void Main(string[] args)
        {
            PRandLSystem              system       = new PRandLSystem("conf/lsys.json");
            HighLevelRoom             head         = new HighLevelRoom();
            HighLevelRoomConfigurator configurator = new HighLevelRoomConfigurator();

            for (int i = 0; i < 40; i++)
            {
                WriteLevelToConsole();
                Console.WriteLine("\n===================================\n");

                system.ProcessSystem();

                foreach (GridPos pos in new List <GridPos>(HighLevelRoom.HighLevelLocDict.Keys))
                {
                    configurator.Configure(HighLevelRoom.HighLevelLocDict[pos], HighLevelRoom.HighLevelLocDict[pos].Type);
                }
            }

            WriteLevelToConsole();

            Console.Read();
        }
        public static void Main(string[] args)
        {
            PRandLSystem system = new PRandLSystem("conf/lsys.json");
            HighLevelRoom head = new HighLevelRoom();
            HighLevelRoomConfigurator configurator = new HighLevelRoomConfigurator();

            for (int i = 0; i < 40; i++)
            {

                WriteLevelToConsole();
                Console.WriteLine("\n===================================\n");

                system.ProcessSystem();

                foreach (GridPos pos in new List<GridPos>(HighLevelRoom.HighLevelLocDict.Keys))
                {
                    configurator.Configure(HighLevelRoom.HighLevelLocDict[pos], HighLevelRoom.HighLevelLocDict[pos].Type);
                }
            }

            WriteLevelToConsole();

            Console.Read();
        }
示例#3
0
        public void Configure(IRoom roomObj, string configurationCode)
        {
            HighLevelRoom room = roomObj as HighLevelRoom;

            if (room != null)
            {
                switch (configurationCode)
                {
                case "O":
                    break;

                case ">":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.East))
                    {
                        roomObj.AddExit(ExitDirection.EAST, HighLevelRoom.HighLevelLocDict[room.position.East]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.EAST, new HighLevelRoom("<", room.position.East));
                    }

                    break;

                case "^":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.North))
                    {
                        roomObj.AddExit(ExitDirection.NORTH, HighLevelRoom.HighLevelLocDict[room.position.North]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.NORTH, new HighLevelRoom("v", room.position.North));
                    }

                    break;

                case "v":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.South))
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, HighLevelRoom.HighLevelLocDict[room.position.South]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, new HighLevelRoom("^", room.position.South));
                    }

                    break;

                case "<":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.West))
                    {
                        roomObj.AddExit(ExitDirection.WEST, HighLevelRoom.HighLevelLocDict[room.position.West]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.WEST, new HighLevelRoom(">", room.position.West));
                    }

                    break;

                case "I":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.North))
                    {
                        roomObj.AddExit(ExitDirection.NORTH, HighLevelRoom.HighLevelLocDict[room.position.North]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.NORTH, new HighLevelRoom("v", room.position.North));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.South))
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, HighLevelRoom.HighLevelLocDict[room.position.South]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, new HighLevelRoom("^", room.position.South));
                    }

                    break;

                case "-":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.East))
                    {
                        roomObj.AddExit(ExitDirection.EAST, HighLevelRoom.HighLevelLocDict[room.position.East]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.EAST, new HighLevelRoom("<", room.position.East));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.West))
                    {
                        roomObj.AddExit(ExitDirection.WEST, HighLevelRoom.HighLevelLocDict[room.position.West]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.WEST, new HighLevelRoom(">", room.position.West));
                    }
                    break;

                case "L":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.North))
                    {
                        roomObj.AddExit(ExitDirection.NORTH, HighLevelRoom.HighLevelLocDict[room.position.North]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.NORTH, new HighLevelRoom("v", room.position.North));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.East))
                    {
                        roomObj.AddExit(ExitDirection.EAST, HighLevelRoom.HighLevelLocDict[room.position.East]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.EAST, new HighLevelRoom("<", room.position.East));
                    }

                    break;

                case "r":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.East))
                    {
                        roomObj.AddExit(ExitDirection.EAST, HighLevelRoom.HighLevelLocDict[room.position.East]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.EAST, new HighLevelRoom("<", room.position.East));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.South))
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, HighLevelRoom.HighLevelLocDict[room.position.South]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, new HighLevelRoom("^", room.position.South));
                    }

                    break;

                case "7":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.West))
                    {
                        roomObj.AddExit(ExitDirection.WEST, HighLevelRoom.HighLevelLocDict[room.position.West]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.WEST, new HighLevelRoom(">", room.position.West));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.South))
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, HighLevelRoom.HighLevelLocDict[room.position.South]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, new HighLevelRoom("^", room.position.South));
                    }

                    break;

                case "J":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.North))
                    {
                        roomObj.AddExit(ExitDirection.NORTH, HighLevelRoom.HighLevelLocDict[room.position.North]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.NORTH, new HighLevelRoom("v", room.position.North));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.West))
                    {
                        roomObj.AddExit(ExitDirection.WEST, HighLevelRoom.HighLevelLocDict[room.position.West]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.WEST, new HighLevelRoom(">", room.position.West));
                    }

                    break;

                case "N":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.South))
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, HighLevelRoom.HighLevelLocDict[room.position.South]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, new HighLevelRoom("^", room.position.South));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.East))
                    {
                        roomObj.AddExit(ExitDirection.EAST, HighLevelRoom.HighLevelLocDict[room.position.East]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.EAST, new HighLevelRoom("<", room.position.East));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.West))
                    {
                        roomObj.AddExit(ExitDirection.WEST, HighLevelRoom.HighLevelLocDict[room.position.West]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.WEST, new HighLevelRoom(">", room.position.West));
                    }

                    break;

                case "S":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.North))
                    {
                        roomObj.AddExit(ExitDirection.NORTH, HighLevelRoom.HighLevelLocDict[room.position.North]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.NORTH, new HighLevelRoom("v", room.position.North));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.East))
                    {
                        roomObj.AddExit(ExitDirection.EAST, HighLevelRoom.HighLevelLocDict[room.position.East]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.EAST, new HighLevelRoom("<", room.position.East));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.West))
                    {
                        roomObj.AddExit(ExitDirection.WEST, HighLevelRoom.HighLevelLocDict[room.position.West]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.WEST, new HighLevelRoom(">", room.position.West));
                    }

                    break;

                case "E":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.North))
                    {
                        roomObj.AddExit(ExitDirection.NORTH, HighLevelRoom.HighLevelLocDict[room.position.North]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.NORTH, new HighLevelRoom("v", room.position.North));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.South))
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, HighLevelRoom.HighLevelLocDict[room.position.South]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, new HighLevelRoom("^", room.position.South));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.West))
                    {
                        roomObj.AddExit(ExitDirection.WEST, HighLevelRoom.HighLevelLocDict[room.position.West]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.WEST, new HighLevelRoom(">", room.position.West));
                    }

                    break;

                case "W":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.North))
                    {
                        roomObj.AddExit(ExitDirection.NORTH, HighLevelRoom.HighLevelLocDict[room.position.North]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.NORTH, new HighLevelRoom("v", room.position.North));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.South))
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, HighLevelRoom.HighLevelLocDict[room.position.South]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, new HighLevelRoom("^", room.position.South));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.East))
                    {
                        roomObj.AddExit(ExitDirection.EAST, HighLevelRoom.HighLevelLocDict[room.position.East]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.EAST, new HighLevelRoom("<", room.position.East));
                    }

                    break;

                case "X":
                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.North))
                    {
                        roomObj.AddExit(ExitDirection.NORTH, HighLevelRoom.HighLevelLocDict[room.position.North]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.NORTH, new HighLevelRoom("v", room.position.North));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.South))
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, HighLevelRoom.HighLevelLocDict[room.position.South]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.SOUTH, new HighLevelRoom("^", room.position.South));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.East))
                    {
                        roomObj.AddExit(ExitDirection.EAST, HighLevelRoom.HighLevelLocDict[room.position.East]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.EAST, new HighLevelRoom("<", room.position.East));
                    }

                    if (HighLevelRoom.HighLevelLocDict.ContainsKey(room.position.West))
                    {
                        roomObj.AddExit(ExitDirection.WEST, HighLevelRoom.HighLevelLocDict[room.position.West]);
                    }
                    else
                    {
                        roomObj.AddExit(ExitDirection.WEST, new HighLevelRoom(">", room.position.West));
                    }

                    break;
                }
            }
        }