0

私はC#を初めて使用するので、Windowsフォームを使用してC#で雪が降る(ドット)ようなものを作成したいと考えています。

私はすでに画面の上部に雪片を作成することができました(フォームのランダムなx位置で、0,1秒ごとに新しいドットを作成し、すべての雪片の位置をリスト(ポイント)に書き留めます。タイマー(0,1s)スノーフレークの位置を下に3ピクセル、右に1〜3ピクセル変更したい)

しかし、雪片の位置を更新することに問題があります。リスト内の各スノーフレークにアクセスして、新しい位置をランダム化する方法がわかりません。foreachを試しましたが、foreachで変数を変更できないというエラーが表示されます。

例:

foreach (var snowflake in snowflakeList)            
            {
               snowflake.Y += 3;
               snowflake.X += moveRandom.Next(1, 4);
            }

雪片のリスト(ポイント)を個々の雪片に分割して、すべてのドットの位置を個別に変更するにはどうすればよいですか?

ありがとうございました :-)

4

2 に答える 2

0

最も簡単な方法は、コレクションのインデックスを使用することです。

for (int i = 0; i < snowflakeList.Count; i++)            
{
    var snowflake = snowflakeList[i];
    snowflake.Y += 3;
    snowflake.X += moveRandom.Next(1, 4);
    snowflakeList[i] = snowflake;
}
于 2012-11-01T16:10:59.787 に答える
0

Andrewsの回答では、forループを使用しますが、リストはポイント(値型)であるため、コピーを作成するのではなく、リスト内のポイントを直接参照する必要があります。

for (int i = 0; i < snowflakeList.Count; i++)            
{
    snowflakeList[i].Y += 3;
    snowflakeList[i].X += moveRandom.Next(1, 4);
}
于 2012-11-01T16:37:06.933 に答える