2011-10-12 14 views
8

Próbuję stworzyć grę w szachy wyłącznie dla mojej nauki C# i szachów. Na początek chciałbym stworzyć siatkę przycisków 8x8 za pośrednictwem kodu, a nie projektanta. To oszczędziłoby mi twardego kodowania każdego przycisku indywidualnie.Dynamiczne programowanie siatki składającej się z 64 przycisków (8x8)

Tablica przycisków wydaje się dobrym sposobem na rozpoczęcie, ale nie mam pojęcia, jak to zaimplementować.

+0

tylko po to, aby dodać im studio wizualne 2010 i tworzę te suflory winne – Rg786

+3

Zaktualizuj pytanie zamiast dodawać tego rodzaju komentarze. – Otiel

Odpowiedz

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

to jest dokładnie to, czego potrzebowałem, dziękuję – Rg786

8

Można utworzyć „kwadrat” Klasa:

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

i zdefiniować tablicę, aby zrobić miejsce dla kwadratów 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

chociaż odpowiedź StephanE jest bardziej dostosowana do tego, co id lubimy teraz zaimplementować, twój kod jest otwieraczem alternatywnych sposobów robienia rzeczy, ale z pewnością zajrzę temu więcej, naprawdę doceniam twoją pomoc. Dziękuję Ci. – Rg786

+0

Nie ma za co. –

1

Może być ok użyć kodu poniżej, aby rozwiązać problem. Ten kod jest aplikacji Windows Form w języku C#. I dla przycisku kontrolnego.

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

dziękuję. bardzo podobny do powyższego kodu, chory z pewnością spróbuję tego w moim modelu. – Rg786

Powiązane problemy