@Ledington

Как скорректировать массив, чтобы он ходил по шагу?

Всем привет!
Подскажите как сделать так, чтобы фигура в каждой точке массива [8х8] перемещалась на один шаг во все стороны.
Никак не могу понять как сделать. На данный момент код адекватно работает только в точке [3,3], в остальных помимо нужных координат выдает еще кучу ненужных.
И как вывести результат количества возможных ходов в каждой точке, чтобы потом сравнить и написать, где меньше всего ходов?

Код программы (часть)
List<Coords> KingMoves(int x, int y) 
        {
            List<Coords> list = new List<Coords>(8); 
            
            //ходим по диагонали во все стороны (код работает только для координат [3,3])
            for (int sx = x - 1; sx >= 2; sx--) 
            for (int sy = y - 1; sy >= 2; sy--) 
                list.Add(new Coords(sx, sy)); 
            for (int sx = x + 1; sx <= 4; sx++) 
            for (int sy = y + 1; sy <= 4; sy++) 
                list.Add(new Coords(sx, sy)); 
            for (int sx = x - 1; sx >= 2; sx--) 
            for (int sy = y + 1; sy <= 4; sy++) 
                list.Add(new Coords(sx, sy)); 
            for (int sx = x + 1; sx <= 4; sx++) 
            for (int sy = y - 1; sy >= 2; sy--) 
                list.Add(new Coords(sx, sy)); 

            //ходим по горизонтали и вертикали во все стороны (код работает только для координат [3,3])
            for (int sx = x - 1; sx >= 2; sx--) 
                list.Add(new Coords(sx, y)); 
            for (int sx = x + 1; sx <= 4; sx++) 
                list.Add(new Coords(sx, y)); 
            for (int sy = y - 1; sy >= 2; sy--) 
                list.Add(new Coords(x, sy)); 
            for (int sy = y + 1; sy <= 4; sy++) 
                list.Add(new Coords(x, sy)); 
                        
            return list; 
        }
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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