Пример #1
0
        public static void MatrixTrafficCheck(Element[,] matrix, int[] demands, int[] stocks)
        {
newCatch:

            var minValue = int.MaxValue;
            var minRow    = 0;
            var minColumn = 0;

            for (var rowNumber = 0; rowNumber < matrix.GetLength(0); rowNumber++)
            {
                for (var columnNumber = 0; columnNumber < matrix.GetLength(1); columnNumber++)
                {
                    if ((demands[columnNumber] != 0) && (stocks[rowNumber] != 0) &&
                        (matrix[rowNumber, columnNumber].Value < minValue))
                    {
                        minValue  = matrix[rowNumber, columnNumber].Value;
                        minRow    = rowNumber;
                        minColumn = columnNumber;
                    }
                }
            }
            if ((demands[minColumn] != 0) && (stocks[minRow] != 0))
            {
                _matrixTrafficCalculate(matrix, demands, stocks, minRow, minColumn);
                goto newCatch;
            }
        }
Пример #2
0
        public static void ResultOutput(Element[,] matrix)
        {
            Console.WriteLine("\nResult matrix:");

            for (var rowNumber = 0; rowNumber < matrix.GetLength(0); rowNumber++)
            {
                Console.WriteLine();
                for (var columnNumber = 0; columnNumber < matrix.GetLength(1); columnNumber++)
                {
                    Console.Write("{0,5}", matrix[rowNumber, columnNumber].Delivery);
                }
            }

            var function = 0;

            for (var rowNumber = 0; rowNumber < matrix.GetLength(0); rowNumber++)
            {
                Console.WriteLine();
                for (var columnNumber = 0; columnNumber < matrix.GetLength(1); columnNumber++)
                {
                    function += matrix[rowNumber, columnNumber].Delivery * matrix[rowNumber, columnNumber].Value;
                }
            }

            Console.WriteLine($"The function value is equal to {function}");
        }
Пример #3
0
 public World(Element[,] world, string name)
 {
     this.world = world;
     Name       = name;
     Rows       = world.GetLength(0);
     Columns    = world.GetLength(1);
 }
Пример #4
0
 /// <summary>
 /// Выбор следующего элемента. По горизонтали.
 /// </summary>
 public void SelectNextY()
 {
     if ((IndexX != Elements.GetLength(1) - 1) && (Elements[IndexY, IndexX + 1].Text != " "))
     {
         Elements[IndexY, IndexX].IsSelected   = false;
         Elements[IndexY, ++IndexX].IsSelected = true;
     }
 }
Пример #5
0
 // loop through multidimensional array printing based on element type
 public static void PrintMap()
 {
     for (int i = 0; i < gridMap.GetLength(0); i++)
     {
         for (int j = 0; j < gridMap.GetLength(1); j++)
         {
             // this is land
             if (gridMap[i, j] == Element.Land)
             {
                 Console.Write("O  ");
                 // this is water
             }
             else if (gridMap[i, j] == Element.Water)
             {
                 Console.Write("~  ");
                 // this is explored area
             }
             else if (gridMap[i, j] == Element.ExploredArea)
             {
                 Console.Write("X  ");
                 // this is treasure (looks like land)
             }
             else if (gridMap[i, j] == Element.Treasure)
             {
                 Console.Write("O  ");
             }
             if (j == gridMap.GetLength(1) - 1)
             {
                 Console.WriteLine();
             }
         }
     }
 }
Пример #6
0
 // loop through multidimensional array printing based on element type
 public static void PrintMap()
 {
     for (int i = 0; i < gridMap.GetLength(0); i++)
     {
         for (int j = 0; j < gridMap.GetLength(1); j++)
         {
             if (gridMap[i, j] == Element.Land)
             {
                 Console.Write("O  ");
             }
             else if (gridMap[i, j] == Element.Water)
             {
                 Console.Write("~  ");
             }
             else if (gridMap[i, j] == Element.ExploredArea)
             {
                 Console.Write("X  ");
             }
             else if (gridMap[i, j] == Element.Treasure)
             {
                 Console.Write("O  ");
             }
             if (j == gridMap.GetLength(1) - 1)
             {
                 Console.WriteLine();
             }
         }
     }
 }
Пример #7
0
 /// <summary>
 /// 构造函数,传入一个二维数组,将内部矩阵设置为该二位数值,只是深度复制
 /// </summary>
 /// <param name="matrix"></param>
 public SimpleMatrix(Element[,] matrix) : this()
 {
     this.Matrix = new Element[matrix.GetLength(0), matrix.GetLength(1)];
     for (int row = 0; row < this.Row; row++)
     {
         for (int col = 0; col < this.Column; col++)
         {
             this.Matrix[row, col] = matrix[row, col];
         }
     }
 }
Пример #8
0
    private static string[,] GetTagMap(Element[,] map)
    {
        string[,] tagMap = new string[map.GetLength(0), map.GetLength(1)];
        for (int x = 0; x < tagMap.GetLength(0); x++)
        {
            for (int y = 0; y < tagMap.GetLength(1); y++)
            {
                tagMap[x, y] = map[x, y].tag;
            }
        }

        return(tagMap);
    }
Пример #9
0
 public bool isWallTR(int x, int y, Element[,] c)
 {
     x = x + 1;
     y = y - 1;
     if ((((x < 0) || (y < 0)) || (x > c.GetLength(0) - 1) || (y > c.GetLength(1) - 1)) || c[x, y] == null || c[x, y].et.Equals(Enum.ElementTypes.PacDot) || c[x, y].et.Equals(Enum.ElementTypes.PacPlayer) || c[x, y].et.Equals(Enum.ElementTypes.Ghost) || c[x, y].et.Equals(Enum.ElementTypes.Powerup) || c[x, y].et.Equals(Enum.ElementTypes.Fruit) || c[x, y].et.Equals(Enum.ElementTypes.GhostSpawn))
     {
         return(false);
     }
     else if (c[x, y].et.Equals(Enum.ElementTypes.Wall))
     {
         return(true);
     }
     return(false);
 }
Пример #10
0
        public static void GetString(Element[,] matrix)
        {
            StringBuilder matrixString = new StringBuilder();

            for (int row = 0; row < matrix.GetLength(0); row++)
            {
                for (int col = 0; col < matrix.GetLength(1); col++)
                {
                    matrixString.Append($"{matrix[row, col]} ");
                }
                matrixString.Append("\n");
            }
            Console.WriteLine(matrixString.ToString());
        }
Пример #11
0
 private static void _matrixRateInitialize(Element[,] matrix)
 {
     for (var rowNumber = 0; rowNumber < matrix.GetLength(0); rowNumber++)
     {
         for (var columnNumber = 0; columnNumber < matrix.GetLength(1); columnNumber++)
         {
             matrix[rowNumber, columnNumber] = new Element
             {
                 Value = InputAndOutput.
                         GetNumberFromUser($"Enter rate of [{rowNumber}, {columnNumber}] : ")
             };
         }
     }
 }
Пример #12
0
        public static (int[], int[]) DemandsAndStocksInitialize(Element[,] matrix)
        {
            int[] demands = new int[matrix.GetLength(1)];
            for (var rowNumber = 0; rowNumber < matrix.GetLength(1); rowNumber++)
            {
                demands[rowNumber] = InputAndOutput.GetNumberFromUser($"Enter demand #{rowNumber} : ");
            }

            int[] stocks = new int[matrix.GetLength(0)];
            for (var columnNumber = 0; columnNumber < matrix.GetLength(0); columnNumber++)
            {
                stocks[columnNumber] = InputAndOutput.GetNumberFromUser($"Enter stock #{columnNumber} : ");
            }
            return(demands, stocks);
        }
Пример #13
0
        public int WallRight(int x, int y, Element[,] c)
        {
            int count = 0;

            x = x + 1;
            if ((((x < 0) || (y < 0)) || (x > c.GetLength(0) - 1) || (y > c.GetLength(1) - 1)) || c[x, y] == null || c[x, y].et.Equals(Enum.ElementTypes.PacDot) || c[x, y].et.Equals(Enum.ElementTypes.PacPlayer) || c[x, y].et.Equals(Enum.ElementTypes.Ghost) || c[x, y].et.Equals(Enum.ElementTypes.Powerup) || c[x, y].et.Equals(Enum.ElementTypes.Fruit) || c[x, y].et.Equals(Enum.ElementTypes.GhostSpawn))
            {
                return(count);
            }
            else
            {
                count = 10;
            }
            return(count);
        }
Пример #14
0
 public Game(Element[,] map, Hero hero, int treasures, int score = 0, int health = 3)
 {
     Health    = health;
     Score     = score;
     Treasures = treasures;
     Hero      = new Hero(hero.X, hero.Y);
     Map       = new Element[map.GetLength(0), map.GetLength(1)];
     for (int i = 0; i < map.GetLength(0); i++)
     {
         for (int j = 0; j < map.GetLength(1); j++)
         {
             Map[i, j] = (Element)map[i, j].Clone();
         }
     }
 }
Пример #15
0
 /// <summary>
 /// Доп метод для реализации инвентаря.
 /// </summary>
 /// <param name="Listing"> Массив куда нужно внести объекты (фактически создается новый массив)</param>
 /// <param name="s"> Элемент класса Item которого нужно разделить на составляющие чтобы добавить эти составляющие в массив по x увечив его по y </param>
 /// <returns> Возращает новый массив дополненный элементами из Item s</returns>
 private static Element[,] TheLastElement(Element[,] Listing, Item s)
 {
     Element[,] newElement = new Element[Listing.GetLength(0) + 1, Item.Number];
     for (int i = 0; i < Listing.GetLength(0); i++)
     {
         for (int j = 0; j < Listing.GetLength(1); j++)
         {
             newElement[i, j] = Listing[i, j];
         }
     }
     for (int j = 0; j < Item.Number; j++)
     {
         newElement[Listing.GetLength(0), j] = new Element(s[j]);
     }
     return(newElement);
 }
Пример #16
0
        public int Sum_Brick()
        {
            int col = 0;

            for (int i = 0; i < world.GetLength(0); i++)
            {
                for (int j = 0; j < world.GetLength(1); j++)
                {
                    if (world[i, j].sym == '#')
                    {
                        col++;
                    }
                }
            }
            return(col);
        }
Пример #17
0
 public static bool isEffactive(Element a, Element b)
 {
     for (int i = 0; i < effectiveTo.GetLength(0); i++)
     {
         if (a == effectiveTo[i, 0] && b == effectiveTo[i, 1])
         {
             return(true);
         }
     }
     return(false);
 }
Пример #18
0
 public World(int x, int y)
 {
     world   = new Element[x, y];
     Rows    = world.GetLength(0);
     Columns = world.GetLength(1);
 }