2011-10-12 13 views
8

Estoy tratando de crear un juego de ajedrez puramente para mi aprendizaje del C# y el ajedrez. Para comenzar, me gustaría crear una cuadrícula de 8x8 botones a través del código en lugar del diseñador. Esto me ahorraría la dificultad de codificar cada botón individualmente.Programando dinámicamente una grilla que consta de 64 botones (8x8)

Una matriz de botones parece una buena manera de comenzar, pero no tengo idea de cómo implementar esto.

+0

tan solo para agregar im utilizando visual studio 2010 y estoy creando este tipo de winforms – Rg786

+3

Actualice su pregunta en lugar de agregar este tipo de comentario. – Otiel

Respuesta

4
 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); 
      } 

     } 
+0

esto es precisamente lo que necesitaba, gracias – Rg786

8

Puede crear una clase "cuadrado":

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; 
} 

y definir una matriz para hacer sitio a los cuadrados de 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]); 
    } 
    } 
} 
} 
+0

aunque la respuesta de StephanE es más adecuada para lo que es conveniente implementar ahora, su código es un abridor para alternar formas de hacer las cosas, sin duda investigar más esto, realmente aprecio su ayuda. gracias. – Rg786

+0

De nada. –

1

Puede ser que ca usar el siguiente código para resolver su problema. Este código es de la aplicación Windows Form en C#. Y para el botón de control.

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); 
     } 
} 
+0

gracias. muy similar al código anterior, sin duda probaré esto en mi modelo. – Rg786

Cuestiones relacionadas