93 lines
3.5 KiB
C#
93 lines
3.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Chess
|
|
{
|
|
public enum Kolor { WHITE, BLACK, NONE }
|
|
public partial class Pole : UserControl
|
|
{
|
|
public Figura figura = new Figura(RodzajFigury.EMPTY);
|
|
public Kolor kolor = Kolor.WHITE;
|
|
public Lokalizacja lokalizacja = new Lokalizacja();
|
|
public Kolor atakNaPole = Kolor.NONE;
|
|
public void UstawAtak(Figura figuraAtak) { atakNaPole = figuraAtak.kolor; }
|
|
public void UsunAtak() { atakNaPole = Kolor.NONE; }
|
|
|
|
public byte GetY => lokalizacja.y;
|
|
public byte GetX => lokalizacja.x;
|
|
public bool jestZajete()
|
|
{
|
|
return figura.rodzajfigury != RodzajFigury.EMPTY;
|
|
}
|
|
|
|
public Pole(byte y, byte x) { InitializeComponent(); lokalizacja.y = y; lokalizacja.x = x; Location = new Point(x * Size.Width, y * Size.Height); }
|
|
public Pole(byte y, byte x, Kolor kolor) : this(y, x) { this.kolor = kolor; }
|
|
public Color KolorPola()
|
|
{
|
|
return kolor != Kolor.WHITE ? Color.DarkOliveGreen : Color.WhiteSmoke;
|
|
}
|
|
|
|
public void PrzydzialFigur(Figura figura)
|
|
{
|
|
this.figura = figura;
|
|
FiguraObraz.BackgroundImageLayout = ImageLayout.Center;
|
|
FiguraObraz.BackgroundImage = FiguryObrazy[figura.NazwaObrazu()];
|
|
FiguraObraz.Size = new Size(Size.Width / 2, Size.Height / 2);
|
|
}
|
|
private void Tile_Load(object sender, EventArgs e)
|
|
{
|
|
FiguraObraz.BackColor = KolorPola();
|
|
BackColor = KolorPola();
|
|
Click += KliknietoNaPole;
|
|
FiguraObraz.Click += KliknietoNaPole;
|
|
}
|
|
|
|
private static int click = 0;
|
|
private static Posuniecie ruchyfigur;
|
|
public void PossibleMove(bool show)
|
|
{
|
|
FiguraObraz.Image = !show ? null : (Image)Properties.Resources.PossibleMove;
|
|
}
|
|
private void KliknietoNaPole(object sender, EventArgs e)
|
|
{
|
|
if (click == 0 && figura.kolor != Szachownica.KogoTerazTura)
|
|
{
|
|
return;
|
|
}
|
|
|
|
click++;
|
|
if (click == 1)
|
|
{
|
|
ruchyfigur = new Posuniecie(this);
|
|
_ = ruchyfigur.CzyKrolJestBezpieczny();
|
|
ruchyfigur.InterfejsObslugiPoprzednichRuchow(true);
|
|
}
|
|
else
|
|
{
|
|
_ = ruchyfigur.jestRuchMozliwy(this);
|
|
click = 0;
|
|
}
|
|
}
|
|
public static Dictionary<string, Image> FiguryObrazy = new Dictionary<string, Image> {
|
|
{ "BBishop",Properties.Resources.Black_Bishop},
|
|
{ "BKnight",Properties.Resources.Black_Knight },
|
|
{ "BRook",Properties.Resources.Black_Rook },
|
|
{ "BKing",Properties.Resources.Black_King },
|
|
{ "BQueen",Properties.Resources.Black_Queen },
|
|
{ "BPawn",Properties.Resources.Black_Pawn },
|
|
{ "WBishop",Properties.Resources.White_Bishop },
|
|
{ "WKnight",Properties.Resources.WKnight },
|
|
{ "WRook",Properties.Resources.White_Rook },
|
|
{ "WKing",Properties.Resources.WKing},
|
|
{ "WQueen",Properties.Resources.White_Queen },
|
|
{ "WPawn",Properties.Resources.White_Pawn },
|
|
{ "EMPTY",null }
|
|
};
|
|
}
|
|
public struct Lokalizacja
|
|
{
|
|
public byte y, x;
|
|
}
|
|
} |