Ходы фигур в шахматах

142
19 октября 2021, 05:20

Создал шахматное поле и разрабатываю ходы. Поле сделал с помощью грида и заполнил кнопками. Каждая отличающаяся фигура имеет собственный тег. Я понял как в такой системе я могу двигать те же пешки, но вот как двигать фигуры по типу ладьи, ферзя и т.д. Как ограничить их ход, в том плане чтоб они не перепрыгивали через другие фигуры

int x1=Grid.GetRow(sender as Button);
        int y1=Grid.GetColumn(sender as Button);
        go=Convert.ToInt32(((Button)sender).Tag);
        if(pos==1)//пешка
        {
            if(x1==x+1 && y1==y && go==0)//ход пешки
            {
                ((Button)sender).Content=1.ToString();
                ((Button)sender).Tag=1;
                ((Button)vernut).Content="";
                ((Button)vernut).Tag=0;
            }
            else if((go==11||go==12||go==13||go==14||go==16||go==15) && ((x1==x+1 && y1==y-1) ||(x1==x+1 && y1==y+1)))//сруб пешки
            {
                ((Button)sender).Content=1.ToString();
                ((Button)sender).Tag=1;
                ((Button)vernut).Content="";
                ((Button)vernut).Tag=0;
                int a=Convert.ToInt32(belie.Text);
                a+=1;
                belie.Text=a.ToString();
            }
            else
            {
                MessageBox.Show("Вы не можете ходить по координатам x:"+x1.ToString()+"  y:"+y1.ToString());
            }
        }
        else if(pos==2)
        {
            if((x1==x+1 && y1==y||x1==x+2 && y1==y||x1==x+3 && y1==y||x1==x+4 && y1==y||x1==x+5 && y1==y||x1==x+6 && y1==y||x1==x+7 && y1==y) && go==0)
            {
                ((Button)sender).Content=2.ToString();
                ((Button)sender).Tag=2;
                ((Button)vernut).Content="";
                ((Button)vernut).Tag=0;
            }
            else if(x1==x+1 && y1==y && go!=0)
            {
                ((Button)sender).Content=2.ToString();
                ((Button)sender).Tag=2;
                ((Button)vernut).Content="";
                ((Button)vernut).Tag=0;
                int a=Convert.ToInt32(belie.Text);
                a+=1;
                belie.Text=a.ToString();
            }
        }
Answer 1

я вообщем могу тебе помочь я сделал реализацию примерно как и ты. Вообщем я накладываю картинки поверх кнопок и если фигура перемещается то удаляю ее на старом месте и переношу на новое. Пока сделал только ходы для ферзей и пешек. Сейчас думаю над реализацией шаха не можешь помочь? вот ввобщем ссылка на мой проект. https://github.com/AmpilGit/chess-wpf.

READ ALSO
Собрать консольное приложение как exe

Собрать консольное приложение как exe

Всем привет! Создал консольный проект C#, но после сборки в папке bin/debug лежит папка netcoreapp21

151
Позиция слов datagridview

Позиция слов datagridview

нужна очень помощь, пожалуйстаВ datagridview находится массив слов, который берется с richtextbox

300
C# не видит класс Stopwatch

C# не видит класс Stopwatch

Я хочу использовать класс StopwatchПодключил System

152
Как получить текст из консольного приложения (ListDLLs)

Как получить текст из консольного приложения (ListDLLs)

ListDLLs выдаёт текст в консоль при правильных аргументах

209