@slimebro

Можно ли упростить этот метод?

Помогите упростить поиск похожих "тайлов".
Суть в том что этот метод является методом объекта класса Tile (то, из чего состоит карта). Объект проверяет вокруг себя по определенным линиям тайлы на наличие схожих по свойству mark и если это так, увеличивает значение комбо.
Сама карта - это двумерный массив
Также тайлов на линии не может быть больше 3
632357341d79c565749911.png
Зеленым цветом - тайлы
Разноцветные линии - разные проверяемые направления
Одна пара в словаре - одна линия
График слева сверху показывает направление осей, но на самом деле оси это мерности массива, где y - первая мерность, а x - вторая

GetTile() - метод другого класса который возвращает тайл на карте по координатам (сигнатура: GetTile(int,int))
public Dictionary<string,int> GetComboLines()
        {
            Dictionary<string,int> combos = new Dictionary<string,int>();
            combos.Add("horizontal",0);
            combos.Add("vertical",0);
            combos.Add("diagonal",0);
            combos.Add("diagonal2",0);

            for (int j = -2; j<2; j++)
            {
                if (GetTile(this.y,this.x+j).mark==this.mark)
                {
                    combos["vertical"]++;
                }

                if (GetTile(this.y+j,this.x).mark==
                    this.mark)
                {
                    combos["horizontal"]++;
                }

                if (GetTile(this.y+j,this.x+j).mark==this.mark)
                {
                    combos["diagonal"]++;
                }

                if (GetTile(this.y-j,this.x+j).mark==this.mark)
                {
                    combos["diagonal2"]++;
                }
            }

            return combos;
        }
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 1
@GLeBaTi
[Flags] 
enum LineType{ 
    None = 0, Red = 1, Green = 2,  Pink = 4, Gray = 8,
   All = Red | Green | Pink | Gray
}

LineType[,] map = new LineType[10, 10];

//TODO: заполнить map 

map[0,0] = LineType.All;


А дальше делаешь что хочешь с этой картой
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы