/// <summary> /// 上下対称か判定します。 /// </summary> /// <returns>上下対称なら真、そうでなければ偽が返ってきます。</returns> public static bool VerticallySymmetricalCheck(this Cell[,] field) { for (int x = 0; x < field.Width(); x++) { for (int y = 0; y < field.Height() / 2; y++) { if (field[x, y].Point != field[x, (field.Height() - 1) - y].Point) { return(false); } } } return(true); }
/// <summary> /// フィールド上で上下左右反転したときのマスの座標を取得します。 /// </summary> /// <param name="field">対称となるフィールド</param> /// <param name="point">対称となるマス</param> /// <returns></returns> public static Coordinate FlipHorizontalAndVertical(this Cell[,] field, Coordinate point) => new Coordinate(field.Width() - 1 - point.X, field.Height() - 1 - point.Y);
/// <summary> /// フィールド上で上下反転したときのマスの座標を取得します。 /// </summary> /// <param name="field">対象となるフィールド</param> /// <param name="point">対象となるマス</param> /// <returns></returns> public static Coordinate FlipVertical(this Cell[,] field, Coordinate point) => new Coordinate(point.X, field.Height() - 1 - point.Y);