36 lines
1.6 KiB
C#
36 lines
1.6 KiB
C#
using Chess;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Windows;
|
|
|
|
namespace ChessPanel
|
|
{
|
|
public class Queen : Piece
|
|
{
|
|
public Queen(PieceColor color, Vector position, Grid fields) : base(position, fields)
|
|
{
|
|
type = (PieceType)Enum.Parse(typeof(PieceType), this.GetType().Name);
|
|
this.color = color;
|
|
this.image = (Image)ChessPanel.Properties.Resources.ResourceManager.GetObject($"{this.type.ToString()}{this.color.ToString()}");
|
|
}
|
|
|
|
internal override bool EndageresFieldWithVirtualMove(Grid fields, Field possibleEndageredField, Piece movePiece, Field targetPos)
|
|
{
|
|
return Rook.StaticEndageresFieldWithVirtualMove(fields, this.field, possibleEndageredField, movePiece, targetPos, color)
|
|
|| Bishop.StaticEndageresFieldWithVirtualMove(fields, this.field, possibleEndageredField, movePiece, targetPos, color);
|
|
}
|
|
|
|
internal override Dictionary<Field, PieceTeam> GetTargetFields(Grid fields, Field field, PieceColor color)
|
|
{
|
|
Dictionary<Field, PieceTeam> targetFields = Rook.StaticGetTargetFields(fields, field, this.color); // Take Rook fields
|
|
targetFields = targetFields.Concat(Bishop.StaticGetTargetFields(fields, field, this.color) // Add Bishop; Rook + Bishop = Queen
|
|
.Where(kvp => !targetFields.ContainsKey(kvp.Key)))
|
|
.OrderBy(c => c.Value)
|
|
.ToDictionary(c => c.Key, c => c.Value);
|
|
return targetFields;
|
|
}
|
|
} // FINALIZED
|
|
}
|