VB.NETを使っているのですが
授業で前、PICTUREBOXの画像を、その画面上で飛ばすというのはしたのですが
Aの地点からBの地点まで移動させる方法がちょっとわかりません。(そこに着いたら止まるように)
comboboxを使って、地点の名前とかのリストをつけてるのですが
例えば 福岡を選んだら 福岡の地点に画像がいてくれるとか
そういうのをしたいんですよ、そしてGOとか押したら選んだ地点まで飛んでいくという
説明ヘタで申し訳ありません、アドバイスあればよろしくおねがいします
>授業で前、PICTUREBOXの画像を、その画面上で飛ばすというのはしたのですが
これが理解できないのですが、実際どんなコードなのでしょうか?
これが出来ているなら
>そしてGOとか押したら選んだ地点まで飛んでいくという
これも似たようなコードできると思いますが・・・
コードはこのようなものです
Public X, X0, Y, Y0 As Integer '変数の宣言
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Enabled = True
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Timer1.Enabled = False
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
End
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
X0 = 20 : Y0 = 20 : X = 0 : Y = 0 '変数の初期化
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
PictureBox1.SetBounds(X, Y, 16, 16)
X = X + X0 '座標の更新
Y = Y + Y0
If X > (480 - 4) Or X < 0 Then X0 = -X0 '四辺にあたると方向転換
If Y > (260 - 30) Or Y < 0 Then Y0 = -Y0
End Sub
End Class
ただ、これだったら、そのタイマーの時間間隔で座標のあれこれで飛んでいるという感じなので
そうではなくて、ただ、A地点からB地点まで飛ばせて止まらせたいのです
うーんこのコードを理解していれば、あとは組み替えるだけだと思うのですが
Button1をクリックするとTimerが有効になって画像が飛ぶ(あえてこの表現で)
Button2をクリックするとTimerが無効になった止まる。
じゃぁどこで画像を動かしているかとなるとTimerのイベントですよね。
> Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
> PictureBox1.SetBounds(X, Y, 16, 16)
>
> X = X + X0 '座標の更新
> Y = Y + Y0
>
> If X > (480 - 4) Or X < 0 Then X0 = -X0 '四辺にあたると方向転換
> If Y > (260 - 30) Or Y < 0 Then Y0 = -Y0
> End Sub
最初の1行以外は座標の計算です。PictureBox1.SetBoundsについて調べてみてはいかがでしょう?
いまいろいろと試行錯誤しております
また分からなくなれば質問したいと思います
しばし葛藤中
あぁ・・・勉強不足・・・混乱してきました涙
If RadioButton1.Checked And RadioButton8.Checked = True Then
PictureBox2.Left = PictureBox2.Left + 1
End If
これだったら、右にずっと進むだけですよね・・・・
ななめってどうやって進む・・・はぁ・・・
MSDNが全部英語で理解不能
Leftプロパティの増減で左右に
Topプロパティの増減で上下に動かせますよ。
斜めに動かしたたければ(動いたように見せるなら)
同じタイミングで同じ値をTopとLeftに与えてあげればいいかと思います。
おお、ありがとうございます
If PictureBox2.Left > 75 And PictureBox2.Top > 30 Then Timer1.Enabled = False
PictureBox2.Left = PictureBox2.Left + 1
PictureBox2.Top = PictureBox2.Top - 1
ってしたら斜めにいってくれました^^;
問題は、ラジオボタンで 出発地点 到着地点を作って
出発地点別にそれぞれの座標移動を行うようにしたいです。
これから試してみます! IF・・・を使うのかな?
ラジオボタンから地点を判断して、その座標のTopとLeftをどこかに
保持しましょう。
出発点と到着地点のTopとLeftの差分だけ動かしてあげれば良いかと思います。
もうむりかなと・・・かなりしんどいです
なんでうまくいかないのかわからないや・・・
誰かサンプルとか作ってくれないかしら涙
ご飯食べたらもっかい挑戦します・・・
勉強を他人にやらせても、何の力にもなりません
出発点のX座標、Y座標と到着点のX座標、Y座標を比較してみてください
例えば出発点のX座標が100で到着点のX座標が200なら、その差は100です
10回に分けて到着させるなら、1回の移動距離は10になります
例えば出発点のX座標が100で到着点のX座標が0なら、その差は-100です
10回に分けて到着させるなら、1回の移動距離は-10になります
Y座標も同じですね
あとは日本語をプログラムに換えれば完成間近でしょう
まるちだね。
http://vbnet-iku2.hp.infoseek.co.jp/cgi-bin/treecrsdx01/index.cgi?m=look&bnum=3013
ツイート | ![]() |