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

わんくま同盟

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

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


(過去ログ 68 を表示中)
■39648 / )  Re[9]: PictureBoxを左右に往復するループ
□投稿者/ へっぽこ (18回)-(2009/08/12(Wed) 06:25:31)
No39587 (biac さん) に返信
>> やらせたいことは、こういうことですか?
> 
> 1. 乱数で決めた位置に画像を表示させる。
> 2. 一定の時間間隔で、画像を移動させる。ただし…
>   2-1. 移動させる距離は乱数で決定する。
>   2-2. 移動させる方向は、最初は右向き。ただし、移動させる直前の時点で…
>     2-2a) すでに画像がウィンドウの右端から外へ完全に出ていた場合は、左向きに変える。
>     2-2b) すでに画像がウィンドウの左端から外へ少しでも出ていた場合は、右向きに変える。

おっしゃるとおりです。
下記のコードで思った動きは実現できましたが、

★…★の部分を挿入すると
右端で上下の動きを繰り返し、左端に進もうとしません。
移動量がランダムに変化することとの関係がいまいち理解できません。(-_-;)

→★idouryou = rn.Next(10) '移動量を0〜9で発生★


<            >
Public Class Form1
    Dim idouryou As Integer = 20 '移動量
    Dim rn As Random = New Random()

   
    
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick


        PictureBox1.Top = rn.Next(400) 'Y座標を0〜399で発生
       ★ 'idouryou = rn.Next(10) '移動量を0〜9で発生★

        If PictureBox1.Left > Me.Width - PictureBox1.Width Or PictureBox1.Left < 0 Then
            idouryou *= -1 '上記の条件のときの移動方向を反転

        End If
       
        PictureBox1.Left += idouryou

        

       



        
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       
        Timer1.Enabled = Not Timer1.Enabled

    End Sub


   
End Class

返信 編集キー/


管理者用

- Child Tree -