C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 68 を表示中)
■39587 / )  Re[8]: PictureBoxを左右に往復するループ
□投稿者/ biac (148回)-(2009/08/11(Tue) 11:12:44)
biac さんの Web サイト
No39575 (へっぽこ さん) に返信
>         number = rn.Next(10)

>             number *= -1

number って何ですか? 
番号とか数字とかいう意味だとすると、 *= -1 は何をしているのですか?
「番号に -1 を掛ける」ことに、どういう意味があるのですか?

適切な変数名に直してください。
英語が面倒なら、日本語も使えますよ。 


>         If PictureBox1.Left < 0 Or PictureBox1.Left > Me.Width Then

なんでこんな複雑な条件式を書くのかなぁ?
まとめて書いたほうが格好良さそう? たしかにそういうこともありますが、それはちゃんと動いてからの話。

ちなみに、格好良く書くなら、この if 文全体…
>         If PictureBox1.Left < 0 Or PictureBox1.Left > Me.Width Then
>             number *= -1
>             PictureBox1.Left += number
>         Else
>             PictureBox1.Left += number
> 
> 
>         End If
…は、こう↓書けますね。 
        If PictureBox1.Left < 0 Or PictureBox1.Left > Me.Width Then
            number *= -1
        End If
        PictureBox1.Left += number

で。
やらせたいことは、こういうことですか?

1. 乱数で決めた位置に画像を表示させる。
2. 一定の時間間隔で、画像を移動させる。ただし…
  2-1. 移動させる距離は乱数で決定する。
  2-2. 移動させる方向は、最初は右向き。ただし、移動させる直前の時点で…
    2-2a) すでに画像がウィンドウの右端から外へ完全に出ていた場合は、左向きに変える。
    2-2b) すでに画像がウィンドウの左端から外へ少しでも出ていた場合は、右向きに変える。

※ 2-2a と 2-2b が対称になっていないのが、ちょっと気になりますが f(^^;

やらせたいことは、これでいいですか?
プログラムってのはコンピューターに対する命令ですよね。
命令をいきなりプログラミング言語で考えるのは、そりゃあ難しいです。
まずは、日本語で命令をきっちりと考えてから、プログラミング言語に翻訳しましょう。

さて。
やらせたいこと を日本語で記述した中に、number (番号) は出てきていませんよね?
それで最初の質問をしたのです。

画像を移動させるために決定しなければならないことは?
移動させる距離 と 移動させる方向 の 2つではありませんか?

※ 「そんなことは分かってるよ。2つ合わせて number にしたんだ!」 ということかもしれませんが、
   それはプログラムがちゃんと動くようになってから。
   どうしてもというなら、その考え方で、やらせたいことを日本語できっちり書いてから。

返信 編集キー/


管理者用

- Child Tree -