コード例 #1
0
        private static void Start(string[] args)
        {
            if (args.Length != 4)
            {
                throw new Exception("Запускать с параметрами: [файл карты] [к-во игроков в одной команде] [программа 1] [программа 2]");
            }
            if (!File.Exists(args[0]))
            {
                throw new Exception("Некорректный файл карты");
            }
            if (!File.Exists(args[2]))
            {
                throw new Exception("Некорректный файл первой программы");
            }
            if (!File.Exists(args[3]))
            {
                throw new Exception("Некорректный файл второй программы");
            }

            int cnt;

            try
            {
                cnt = int.Parse(args[1]);
            }
            catch
            {
                throw new Exception("Неверное количество игроков");
            }
            GameBackground back = new GameBackground(args[0], cnt);
            Ether          eth  = new ListEther();

            eth["0"] = new string[cnt];
            eth["1"] = new string[cnt];

            // creating map with Color in Background's cells and LiteListCells in map's cells
            Map2D <int> map2D =
                new Map2D <int>(
                    // its size is simmilar to image size
                    back.Width, back.Height,
                    // delegate for creating new cells
                    delegate(Map2D <int> map, Coordinate2D coord) { return(new ListCell <Coordinate2D, Metric2D, int>(map, coord)); },
                    // backround of this map is based on image
                    back,
                    // ether of this map (usualy used ListEther)
                    eth);

            List <ConsoleController> l1 = new List <ConsoleController>();

            for (int j = 0; j < 2; j++)
            {
                for (int i = 0; i < cnt; i++)
                {
                    ConsoleController c = new ConsoleController(args[j + 2], j, i);
                    Fighter           f = Fighter.CreateFighter(map2D, j, i, c.Letter, c);
                    map2D.Add(new Coordinate2D(f.Location.X, f.Location.Y), f);
                    l1.Add(c);
                }
            }

            Application.Run(new GameForm(back, eth, map2D));

            foreach (ConsoleController c in l1)
            {
                c.Dispose();
            }

            return;
        }