我在C#中製作15益智遊戲,允許用戶輸入一個自定義的行和列值最大10 x 10的謎題。因此,我遇到了洗牌方法的問題。我想這樣做,這個難題總是可以解決的。通過首先創造一個獲勝的謎題,然後洗空空間。問題是每次調用每個點擊事件的效率太低。我需要一種方法來調用與空白空間相鄰的按鈕的點擊事件,但不是對角線。我還使用一個不可見的靜態按鈕作爲空白點。 PuzzlePiece類繼承自Button。我不太確定如何做到這一點。我將不勝感激任何幫助。15謎洗牌方法問題
感謝
這裏是我有:
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);
}
}
嘿,那裏。查看http://gamedev.stackexchange.com/,它就像是StackOverflow的遊戲開發版本,非常適合這樣的問題。 – CptSupermrkt
那麼,PuzzlePiece_Click效率太低,無法每次點擊都被調用?你點擊了多少次?每秒1000000? –
你真的不應該從UI元素派生你的遊戲對象。如果你將這種關係分開,它應該更直接。製作電路板,隨機播放,然後爲每個作品創建UI元素。 – paddy