我正在用 C# 制作一个 15 拼图游戏,它允许用户输入自定义行和列值,最大为 10 x 10 拼图。因此,我在使用 shuffle 方法时遇到了问题。我想做到这一点,所以这个难题总是可以解决的。首先创建一个获胜的谜题,然后将空白空间洗牌。问题是每次调用每个点击事件效率太低。我需要一种方法来调用与空白空间相邻但不是对角线的按钮的单击事件。我还在空白处使用了一个不可见的静态按钮。PuzzlePiece 类继承自 Button。我不太确定该怎么做。我将不胜感激任何帮助。
谢谢
这是我所拥有的:
private void shuffleBoard()
{
//5 is just for test purposes
for (int i = 0; i < 5; i++)
{
foreach (Control item in this.Controls)
{
if (item is PuzzlePiece)
{
((PuzzlePiece)item).PerformClick();
}
}
}
}
void PuzzlePiece_Click(object sender, EventArgs e)
{
PuzzlePiece piece = (PuzzlePiece)sender;
if (piece.Right == puzzleForm.emptyPiece.Left && piece.Top == puzzleForm.emptyPiece.Top)
{
movePiece(piece);
}
else if (piece.Left == puzzleForm.emptyPiece.Right && piece.Top == puzzleForm.emptyPiece.Top)
{
movePiece(piece);
}
else if (piece.Top == puzzleForm.emptyPiece.Bottom && piece.Left == puzzleForm.emptyPiece.Left)
{
movePiece(piece);
}
else if (piece.Bottom == puzzleForm.emptyPiece.Top && piece.Left == puzzleForm.emptyPiece.Left)
{
movePiece(piece);
}
}