chess/Tile.cs

93 lines
3.5 KiB
C#
Raw Permalink Normal View History

2024-06-24 13:01:12 +02:00
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;
}
}