Создание шахматной доски с использованием Windows Forms - PullRequest
1 голос
/ 18 июля 2011

Как лучше всего создать шахматную доску с помощью Windows Forms?

Я все еще новичок в графическом кодировании в winforms, и я не уверен, какой элемент управления использовать для этого?

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

Спасибо

Ответы [ 4 ]

4 голосов
/ 18 июля 2011

Есть много способов. Вот альтернатива, которая поможет вам начать работу с некоторыми концепциями WinForms:

(Для создания шахматной доски используется двумерная сетка элементов управления Panel. Чтобы расширить ее, вы можете изменить фоновое изображение каждой панели, чтобы показать шахматные фигуры. Игровой процесс определяется вами.)

    // class member array of Panels to track chessboard tiles
    private Panel[,] _chessBoardPanels;

    // event handler of Form Load... init things here
    private void Form_Load(object sender, EventArgs e)
    {
        const int tileSize = 40;
        const int gridSize = 12;
        var clr1 = Color.DarkGray;
        var clr2 = Color.White;

        // initialize the "chess board"
        _chessBoardPanels = new Panel[gridSize, gridSize];

        // double for loop to handle all rows and columns
        for (var n = 0; n < gridSize; n++)
        {
            for (var m = 0; m < gridSize; m++)
            {
                // create new Panel control which will be one 
                // chess board tile
                var newPanel = new Panel
                {
                    Size = new Size(tileSize, tileSize),
                    Location = new Point(tileSize * n, tileSize * m)
                };

                // add to Form's Controls so that they show up
                Controls.Add(newPanel);

                // add to our 2d array of panels for future use
                _chessBoardPanels[n, m] = newPanel;

                // color the backgrounds
                if (n % 2 == 0)
                    newPanel.BackColor = m % 2 != 0 ? clr1 : clr2; 
                else
                    newPanel.BackColor = m % 2 != 0 ? clr2 : clr1;
            }
        }
    }
2 голосов
/ 18 июля 2011

Лучший способ - использовать «шахматный стартовый комплект»: http://www.chessbin.com/page/Chess-Game-Starer-Kit.aspx (альтернативный проект: http://www.codeproject.com/KB/game/SrcChess.aspx)

В настоящее время многие вещи имеют стартовые наборы (для C #), которые дают вамобразец для начала.

1 голос
/ 18 июля 2011

В обработчике событий OnPaint элементов управления вы начинаете с рисования шахматной фигуры либо неявно, используя формулу (floor (x * 8) mod 2) = (floor (y * 8) mod 2) илипросто рисуя квадраты с помощью Graphics.FillRectangle.Вторым шагом будет нарисовать фигуры сверху с помощью Graphics.DrawImage.

0 голосов
/ 18 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...