Я создаю приложение для настольных игр с UWP и C#. В настоящее время моя доска определяется как двумерный массив, который растет по мере размещения плиток. Я бы хотел иметь сетку, которая росла вместе с массивом. Я также хотел, чтобы пустые места в сетке определялись как кнопки, позволяющие размещать плитку в сетке одним щелчком мыши.
Я пытался использовать этот метод в коде бэкэнда на основе ответа, который я видел на эта ссылка но я не думаю, что делаю все правильно.
public Grid GridGenerator(int rows, int cols, int[,] map)
{
Grid grid = new Grid();
grid.Margin = new Thickness(50, 50, 50, 50);
grid.Background = new SolidColorBrush(Windows.UI.Colors.Brown);
grid.HorizontalAlignment = HorizontalAlignment.Center;
grid.VerticalAlignment = VerticalAlignment.Center;
for (int i = 0; i < rows; i++)
{
RowDefinition Row = new RowDefinition();
Row.Height = new GridLength(0, GridUnitType.Auto);
grid.RowDefinitions.Add(Row);
for (int j = 0; j < cols; j++)
{
ColumnDefinition column = new ColumnDefinition();
column.Width = new GridLength(0, GridUnitType.Auto);
grid.ColumnDefinitions.Add(column);
if (map[i, j] == 0)
{
Button button = new Button();
button.MinHeight = 30;
button.MinWidth = 30;
button.Background = new SolidColorBrush(Windows.UI.Colors.AliceBlue);
button.Name = i.ToString() + j.ToString();
grid.Children.Add(button);
Grid.SetColumn(button, j);
}
else
{
TextBlock text = new TextBlock();
text.Text = map[i, j].ToString();
text.HorizontalTextAlignment = (TextAlignment)HorizontalAlignment.Center;
text.HorizontalAlignment = HorizontalAlignment.Center;
text.VerticalAlignment = VerticalAlignment.Center;
grid.Children.Add(text);
Grid.SetColumn(text, j);
}
}
}