using System;
using System.Collections.Generic;
namespace ConsoleApp_HW2
{
class Program
{
List<Coords>[][,] moves; //список ходов для любого типа фигур (фигура и ее координаты)
static void Main(string[] args) //выход статичного метода
{
Program program = new Program();
program.Start();
}
void Start()
{
int count = Enum.GetNames(typeof(Figure)).Length; //запрос из списка Enum
moves = new List<Coords>[count][,]; //фигуры с массивом списков координат для фигур
moves[(int)Figure.Rook] = new List<Coords>[8, 8]; //список координат для Ладьи
for (int x = 0; x <= 7; x++)
for (int y = 0; y <= 7; y++)
moves[(int)Figure.Rook][x, y] = RookMoves(x, y);
}
List<Coords> RookMoves (int x, int y) //передвижение Ладьи
{
List<Coords>list = new List<Coords>(14); //фигура имеет 14 ходов из любой точки доски
for (int sx = x - 1; sx >= 0; sx--) //идем влево пока равно нулю или больше и уменьшаем
list.Add(new Coords(sx, y)); //добавляем координату x, y без изменений
for (int sx = x + 1; sx <=7; sx++) //идем вправо пока меньше или равен 7 и прибавляем
list.Add (new Coords(sx, y)); //добавляем координату x, y без изменений
for (int sy = y - 1; sy >= 0; sy--) //идем вниз пока равно нулю или больше и уменьшаем
list.Add(new Coords(x, sy)); //добавляем координату y, x без изменений
for (int sy = y + 1; sy <= 7; sy++) //идем вниз пока меньше или равен 7 и прибавляем
list.Add(new Coords(x, sy)); //добавляем координату y, x без изменений
return list; //вернуть список
}
struct Coords //структура
{
public int x;
public int y;
public Coords (int x, int y)
{
this.x = x;
this.y = y;
}
public override string ToString() //запись координат в строчку
=> $"{x}, {y}";
}
enum Figure //перечисление фигур
{
Rook, // Ладья
Knight, //Конь
Bishop, //Слон
Queen, // Ферзь
King //Король
}
}
}