我是 C# 初学者,正在尝试制作一款扫雷游戏。到目前为止,我已经取得了很大的进展,但我遗漏了一些细节。我正在二维数组中制作按钮网格。
以下是按钮数组的代码:
btnArray = new Button[rows, cols];
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
btnArray[i, j] = new Button();
btnArray[i, j].Width = 40;
btnArray[i, j].Height = 40;
btnArray[i, j].Margin = new (0);
btnArray[i, j].Left = xPos;
btnArray[i, j].Top = yPos;
btnArray[i, j].BackColor = Color.Gray;
btnArray[i, j].MouseDown += btnArray_MouseDown;
hasbomb = bombeListe[o];
if (hasbomb)
{
plassertBomber++;
}
btnArray[i, j].Tag = new Cell(i, j, hasbomb, false);
_buttonForm.Controls.Add(btnArray[i, j]);
xPos += btnArray[i, j].Width;
if (m == cols)
{
xPos = 0;
yPos += btnArray[i, j].Width;
m = 0;
}
m++;
o++;
}
}
我想要做的是在网格右侧添加一个暂停按钮,比如说顶部/右侧。问题是我有 3 种不同的难度(简单、中等、困难)和一个自定义,玩家可以选择网格的大小,当我在它们之间更改时,暂停按钮会改变位置。
以下是暂停按钮的代码:
public void Generate_buttons()
{
Button pause = new();
int xpos = (btnArray.GetLength(0) * 42);
pause.BackColor = Color.YellowGreen;
//int pos = (btnArray[btnArray.GetLength(0), 0].Location.X);
pause.Text = ("Pause");
pause.Width = 130;
pause.Height = 40;
pause.AutoSize = true;
pause.UseCompatibleTextRendering = true;
pause.Margin = new(0);
pause.Left = xpos;
_buttonForm.Controls.Add(pause);
}
感谢我能得到的所有帮助:)顺便说一句,我是初学者,所以我知道我的代码可能不是那么好,但我会很感激任何提示!:D
(我也是堆栈溢出的新手,所以如果我现在需要一些提问技巧,我希望获得我能得到的所有帮助。顺便说一句,问题中只能有两张图片吗?) 谢谢!
首先,我认为你这里有一个错误:
yPos += btnArray[i, j].Width;
:大概应该是yPos += btnArray[i, j].Height;
我认为你应该使用 int
xpos = (btnArray.GetLength(1) * 40);
无论如何,单元格大小应声明为常量,以便在声明单元格和按钮时不必使用固定数字。