Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="dirAhead">Направление движения к перекрестку</param>
        /// <param name="countRoadToCross">Количество полос к перекрестку</param>
        /// <param name="countRoadFromCross">Количество полос встречных</param>
        /// <param name="LenghtOfRoad">Длина дороги</param>
        public Road(dirRoad dirAhead, int countRoadToCross, int countRoadFromCross, int LenghtOfRoad)
        {
            Tdir          = dirAhead;
            TcountRoad    = countRoadFromCross + countRoadToCross;
            TLenghtOfRoad = LenghtOfRoad;

            //Левая прилегающая дорога к перекрестку
            if (dirRoad.Left_To_Rigth == dirAhead || dirRoad.Right_To_Left == dirAhead)
            {
                matrixRoad = new int[TcountRoad, LenghtOfRoad];
                //Дорога от перекрестка
                for (int i = 0; i < countRoadFromCross; i++)
                {
                    for (int j = 0; j < LenghtOfRoad; j++)
                    {
                        matrixRoad[i, j] = (int)dirRoad.Right_To_Left;
                    }
                }

                for (int i = countRoadFromCross; i < TcountRoad; i++)
                {
                    for (int j = 0; j < LenghtOfRoad; j++)
                    {
                        matrixRoad[i, j] = (int)dirRoad.Left_To_Rigth;
                    }
                }

                Width  = TLenghtOfRoad;
                Height = TcountRoad;
            }

            //Нижняя прилегающая дорога к перекрестку
            if (dirRoad.Bot_To_Top == dirAhead || dirRoad.Top_To_Bot == dirAhead)
            {
                matrixRoad = new int[LenghtOfRoad, TcountRoad];
                //Дорога от перекрестка

                for (int i = 0; i < LenghtOfRoad; i++)
                {
                    for (int j = 0; j < countRoadFromCross; j++)
                    {
                        matrixRoad[i, j] = (int)dirRoad.Top_To_Bot;
                    }
                }

                for (int i = 0; i < LenghtOfRoad; i++)
                {
                    for (int j = countRoadFromCross; j < TcountRoad; j++)
                    {
                        matrixRoad[i, j] = (int)dirRoad.Bot_To_Top;
                    }
                }

                Width  = TcountRoad;
                Height = TLenghtOfRoad;
            }
        }
    /// <summary>
    /// Функция для создания объекта дроги
    /// </summary>
    /// <param name="dir">Направление</param>
    /// <param name="input">Данные из формы для ввода</param>
    /// <returns></returns>
    Road CreateRoad(dirRoad dir, InputField input)
    {
        Debug.Log(input.text);
        int[]    data    = new int[3];
        string[] dataStr = new string[3];
        //Делим через пробел
        string temp = input.text;

        dataStr = temp.Split(' ');

        if (dataStr.Length != 3)
        {
            dataStr = new string[] { "0", "0", "0" };
        }
        for (int i = 0; i < 3; i++)
        {
            string str = dataStr[i];
            int    num;
            bool   isNum = int.TryParse(str, out num);
            if (isNum)
            {
                data[i] = Convert.ToInt32(dataStr[i]);
            }
            else
            {
                data[i] = 0;
            }
        }

        for (int i = 0; i < dataStr.Length; i++)
        {
            data[i] = Convert.ToInt32(dataStr[i]);
            Debug.Log(data[i]);
        }
        if (data.Length < 3)
        {
            data[0] = 0;
            data[1] = 0;
            data[2] = 0;
        }


        return(new Road(dir, data[0], data[1], data[2]));
    }