Динамическое программирование сетки, состоящей из 64 кнопок (8x8) - PullRequest
9 голосов
/ 12 октября 2011

Я пытаюсь создать шахматную игру исключительно для изучения C # и шахмат. Для начала я бы хотел создать сетку кнопок 8x8 с помощью кода, а не дизайнера. Это избавило бы меня от необходимости кодировать каждую кнопку по отдельности.

Массив кнопок может показаться хорошим началом, но я не знаю, как это реализовать.

Ответы [ 3 ]

8 голосов
/ 12 октября 2011

Вы можете создать «квадратный» класс:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;


class Square:PictureBox
{
   private bool color;
   private char piece;
}

и определите массив для размещения 8x8 квадратов.

public partial class Form1 : Form
{
 Square[,] square = new Square[8, 8];

 public Form1()
 {
  InitializeComponent();
  int i, j;

  for (i = 0; i < 8; i++)
  {
     for (j = 0; j < 8; j++)
     {
       this.square[i, j] = new Square();//Creating the chess object//
       this.square[i, j].BackColor = System.Drawing.SystemColors.ActiveCaption;
       this.square[i, j].BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
       this.square[i, j].Location = new System.Drawing.Point(57 + i * 40, 109 + j * 40);
       this.square[i, j].Name = "chessBox1";
       this.square[i, j].Size = new System.Drawing.Size(40, 40);
       this.square[i, j].TabIndex = 2;
       this.square[i, j].TabStop = false;
       this.Controls.Add(this.square[i, j]);
     }
  }
 }
}
5 голосов
/ 12 октября 2011
        int ButtonWidth = 40;
        int ButtonHeight = 40;
        int Distance = 20;
        int start_x = 10;
        int start_y = 10;

        for (int x = 0; x < 8; x++)
        {
            for (int y = 0; y < 8; y++)
            {
                Button tmpButton = new Button();
                tmpButton.Top = start_x + (x * ButtonHeight + Distance);
                tmpButton.Left = start_y + (y * ButtonWidth + Distance);
                tmpButton.Width = ButtonWidth;
                tmpButton.Height = ButtonHeight;
                tmpButton.Text = "X: " + x.ToString() + " Y: " + y.ToString();
                // Possible add Buttonclick event etc..
                this.Controls.Add(tmpButton);
            }

        }
1 голос
/ 12 октября 2011

Может быть, вы воспользуетесь приведенным ниже кодом для решения вашей проблемы.Этот код относится к приложению Windows Form в C #.И для кнопки управления.

    for (int i = 0; i< 8; i++)    
{
    for (int j = 0; j < 8; j++)
      {
        Button BtnNew = new Button;
        BtnNew.Height = 80;
        BtnNew.Width = 80;
        BtnNew.Location = new Point(80*i, 80*j);
        this.Controls.Add(BtnNew);
       }
}
...