Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2021, 08:18   #1
dmmelg
Пользователь
 
Регистрация: 01.11.2021
Сообщений: 14
По умолчанию Структура

Объявите структуру, которая описывала бы клетку на шахматной доске.

Напишите функции (три разных функции), которые по информации о двух клетках на шахматной доске определяют может ли сделать ход шахматная фигура: ладья, слон и конь.

Последний раз редактировалось dmmelg; 11.11.2021 в 09:06.
dmmelg вне форума Ответить с цитированием
Старый 12.11.2021, 09:43   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Ага .. бежим спотыкаемся объявлять...
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 15.11.2021, 22:08   #3
NeLirik
Пользователь
 
Регистрация: 09.11.2021
Сообщений: 11
По умолчанию

Не собираюсь выполнять полностью задание, но просто я бы начал так
Код:
 struct Cell
    {
        public Point koor;//координаты начала кдетки
        public Color color;//цвет клетки
        public Size size;//размер клетки
        public char column;//это столбец  от 1 до 8
        public char row;// это  ряд от а до h
        public Boolean activ;// это есть на клетке фигура или нет

    }
    struct Desk
    {
        Cell[] desk;
        public Desk(Point begin,Size size)
        {
            desk = new Cell[64];
            
            for (int j=0;j<8;j++)
            for (int i=0; i<8;i++)
                
            {
                desk[i+8*j].koor.X = begin.X + i * size.Width;
                desk[i+8*j].koor.Y = begin.Y +j*size.Height;
                    desk[i + 8 * j].size.Width = size.Width;
                    desk[i + 8 * j].size.Height = size.Height;
                    desk[i + 8 * j].row = (char)((byte)'A' + j);
                desk[i + 8 * j].column = (char)((byte)'1'+j);
                desk[i + 8 * j].activ = false;
                if ((i+j)%2==0) { desk[i + 8 * j].color = Color.Black; }  else { desk[i + 8 * j].color = Color.White; }            
                
                }
            }
        public void Show(ref Bitmap bmp) 
       
        {
            
            Graphics g = Graphics.FromImage(bmp);
            Pen pen = new Pen(Color.IndianRed, 1.0f);
            // Font font1 = new Font("Arial", 20);
                SolidBrush brush1;
                 brush1 = new SolidBrush(Color.Black);
            Rectangle rt = new Rectangle();


            for (int i =0;i<64;i++)
            {
                brush1.Color = desk[i].color;

                rt.X = desk[i].koor.X;
                rt.Y = bmp.Height- desk[i].koor.Y-30;
                rt.Width = desk[i].size.Width;
                rt.Height = desk[i].size.Height;

                g.FillRectangle(brush1,rt);


            }
          

        }

    }

    public partial class Form1 : Form
    {
        Desk my_Desk;
        Bitmap bmp;
        public Form1()
        {
            InitializeComponent();
            Point begin = new Point(20, 10);
            Size size = new Size(40, 35);
            my_Desk = new Desk(begin, size);
        }

        private void button1_Click(object sender, EventArgs e)
        {
         //   bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            my_Desk.Show(ref  bmp);
            pictureBox1.Image = bmp;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
        }
    }
А дальше надо смотреть. Может для отработки логики движений шахматных фигур удобнее двумерный массив ячеек. Для фигур надо свои структуры создавать, с заложенной логикой ходов. Ну и так далее.

Последний раз редактировалось BDA; 17.11.2021 в 07:40.
NeLirik вне форума Ответить с цитированием
Старый 16.11.2021, 15:11   #4
dmmelg
Пользователь
 
Регистрация: 01.11.2021
Сообщений: 14
По умолчанию

NeLirik,
я решила так, просто долго никто не отвечал
Код:
 public struct Cell
        {
            public int Row; // строка
            public int Col; // столбец
 
        }
 
        public static bool CheckRook(Cell from, Cell to)
        {
            if (from.Row == to.Row || from.Col == to.Col)
                return true;
            else
                return false;
 
        }
 
        public static bool Bishop( Cell from, Cell to)
        {
            if (Math.Abs(to.Row - from.Row) == Math.Abs(to.Col - from.Col))
                return true;
            else
                return false;
         
 
 
        }
       public static bool Knight( Cell from, Cell to)
        {
            int c, f;
            c = Math.Abs(to.Col - from.Col);
            f = Math.Abs(to.Row - from.Row);
            if (c == 2 &&  f == 1 || c == 1 && f == 2)
                return true;
            else
                return false;

Последний раз редактировалось BDA; 17.11.2021 в 07:40.
dmmelg вне форума Ответить с цитированием
Старый 17.11.2021, 07:46   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Для ладьи и слона, наверное, стоит учесть случай совпадения клеток from и to. А еще можно возвращать сам результат логического выражение (без if).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать программу массивы (C++) - Даны два массива, скопировать эти массивы в 3-й результирующий (размером 10 элементов) так, что Саша1990 Помощь студентам 1 02.02.2015 16:03
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12