私は C# の初心者で、15 パズルのコーディングを試してみることにしました。これは、16 個のボタン、16 個のボタン クリック イベント、および大量の if ステートメントを使用して、過去に Delphi (Paschal) で行った演習です。今回は、プログラムでボタンを作成し、すべてのボタンが使用する単一の buttonClick メソッドを使用しています。隣接するボタンをチェックし、空白のボタンがある場合はボタンのテキストを変更するように設定されています。これで問題ありません。ただし、スクランブラー ボタンを作成しようとしたとき、Delphi で行った方法は、10,000 回ループする for ルックを作成することでした。ループ内で、数字 (0 ~ 15) をランダムに選択し、そのボタンの Click メソッドを呼び出しました。明らかに、すべてのクリックが登録されるわけではありませんが、これを 10,00 回実行すると、パズルを十分にスクランブルできます。これは、Delphi で完了するのに約 1 秒かかります。C# では、コードを高速に実行するのに苦労しています。Button.PerformClick アクションは、予想よりも非常に遅く実行されているようです。私が間違っていることはありますか?助けていただければ幸いです。ありがとう!
これがスクランブルボタンのコードです。
void scramble_Click(object sender, MouseEventArgs e)
{
for (int i = 0; i < 1000; i++)
{
int temp = rand.Next(16);
int div = temp % 4;
int rem = temp / 4;
buttonClick(puzzle[div, rem], new EventArgs());
Refresh();
}
}
ボタンは 4x4 グリッドにあり、x 座標として乱数 mod 4 と y 座標の乱数 intDiv 4 を介してアクセスされます。他に知りたい情報があれば教えてください!再度、感謝します!