• ベストアンサー

vb2008でもぐらたたきを作りたいのですが

vb2008でもぐらたたきを作っているのですが、まだまだ初心者なので分からないことだらけです。 フォーム上のスタートボタンを押すことでゲームを開始させ、Timerを用いてPictureBoxを作成し、PictureBoxにもぐらの画像を対応させて、それを指定された数箇所にランダムに表示させたいのですが、どのようにすれば良いのでしょうか。 表示させるもぐらの座標位置は (50,50),(240,50),(430,50) (50,290),(240,290),(430,50) の6つなのですが。 答えていただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

とりあえず、初心者ということで、ちょっとだけヒントみたいなものを。 私ならとりあえずPictureboxにモグラの絵を表示して、Visibleで非表示にします。 その上で、 *タイマーを使って同じ場所に点滅 *その位置がランダムになるように改造 という感じで進めると思います。

Ninsin
質問者

お礼

なるほど、そのような手もあるのですね。 参考にさせていただきます。 ありがとうございました。

その他の回答 (1)

  • tohru999
  • ベストアンサー率49% (76/154)
回答No.1

もし、NinsinさんがVBの勉強中であれば、ご自分である程度考えた方が良いですよ。 また、何かの課題でしたら、上記と同じですね。 多少なりとも作成してみて、不明点のみ聞くようにした方がイイですよ。 いずれにしても、プログラム丸投げはどうかと...

Ninsin
質問者

補足

すみませんでした。 ソースを載せなければどこが不明なのかよく分かりませんでしたね。 とりあえず、ソースはこのような感じです。 Dim Mole As System.Windows.Forms.PictureBox'表示されるモグラ Dim X, Y As Integer '座標指定 For Each Mole In Me.Controls Mole.Tag -= 1 'もぐらの出現している時間のカウント If Mole.Tag = 0 Then Me.Controls.Remove(Mole) 'カウントが0になったらもぐらが消える End If Next If Rnd() * 4 < 1 Then'1/4の確率でもぐらを表示 Mole = New System.Windows.Forms.PictureBox Mole.Size = New Size(100, 100) 'もぐらのサイズは100*100 X = '←この部分の指定の仕方がよく分かりません Y = '←この部分の指定の仕方がよく分かりません Mole.Location = New Point(X, Y) 'もぐらはX,Yの場所に表示される Mole.Image = My.Resources.Mole Mole.Tag = Int(Rnd() * 2) + 1 'もぐらの停滞している時間のカウント AddHandler Mole.Click, AddressOf PictureBox_Click Me.Controls.Add(Mole) End If 不明なのは座標の部分だけです(他にも間違っている部分がありそうですが…)。 色々考えてはみましたが、もぐらを表示させるためのTimerを6つ用意する以外に思いつきませんでした。

関連するQ&A

  • VBでの「もぐらたたきゲーム作成」について

    VBで「もぐらたたきゲーム」を作成しています。 モグラの出現をRandomizeで乱数にしていますが、複数Imageでモグラを出現させていると、ランダムでモグラがかぶってしまって、一方のモグラしか出現しません。 If で、かぶった時にランダムにするようにしたいのですが、うまくいきません。 どうしたらいいでしょうか?

  • もぐらたたきのプログラミング

    大至急返答お願いします。 学校の自由実験で、VB2008でもぐらたたきを作っているのですが、以下のソースでデバッグし、ゲームを開始するボタンを押すとすると変なバグが表示されます。 Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Static Hit As Integer 'もぐらを叩いた時 Me.Controls.Remove(sender) 'もぐらが消える Hit += 1 'Hitが1加算される Point = 0 + Hit 'Pointは 0+ Hit で表わされる Label5.Text = Format(Point, "000") End Sub Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick Dim X, Y As Integer '座標指定 Dim mole1 As System.Windows.Forms.PictureBox '表示されるモグラ For Each mole1 In Me.Controls mole1.Tag -= 1 'もぐらの出現している時間のカウント If mole1.Tag < 0 Then Me.Controls.Remove(mole1) 'カウントが0になったらもぐらが消える End If Next If Rnd() * 4 < 1 Then mole1 = New System.Windows.Forms.PictureBox '1/4の確率でもぐらを表示 mole1.Size = New Size(100, 100) 'もぐらのサイズは100*100 X = Rnd() * (Me.ClientSize.Width - 100) Y = Rnd() * (Me.ClientSize.Height - 100) mole1.Location = New Point(X, Y) 'もぐらはX,Yの場所に表示される mole1.Image = My.Resources.Mole mole1.Tag = Int(Rnd() * 9) + 7 'もぐらの停滞している時間のカウント AddHandler mole1.Click, AddressOf PictureBox_Click Me.Controls.Add(mole1) End If End Sub もぐらを表示させるためのTimerのソースはこれなのですが、デバッグしてゲームスタートボタンを押すと InvalidCastExceptionはハンドルされませんでした。 型 'System.Windows.Forms.Label' のオブジェクトを型 'System.Windows.Forms.PictureBox' にキャストできません。 という意味深な文章が表示されてしまいます。 まだ初心者なので、よく分からないことが結構あります。 自己解決しようと努力してきましたが結局できず、終了期間間際になってしまいました。 是非御返答の程よろしくお願いします。

  • VBのファイル読み込み

    VBでランダムに画像ファイルを 読み込んでPictureBoxに表示させたいです。 どうすればよいでしょうか? 教えてください!

  • VB2008によるコントロール配列

    VB初心者でただ今勉強中です。VB2008です。 Form1の中にたくさん(100個くらい)の星(ビットマップデータ)をちりばめ、その星がランダムに点いたり消えたりするプログラムを作成しようとしています。 フォームにPictureBoxを配置して(星.bmp)とします。 その星を100個フォーム上にちりばめたいのですがPictureBoxを100個も置くのはムダな労力です。 それで配列を使いたいのですが、PictureBoxを1つだけフォームに配置してそれをコード上で配列として使う方法がわかりません。 いろいろ調べてみたのですが初心者にはわからない説明ばっかりで途方に暮れています。

  • VB2005 スクロールバーポジション

    PanelにPictureBoxを入れてます。 PictureBoxがPanelより大きな時スルロールバーがでますが、その位置(Position)を取得したり設定するにはどうするのでしょうか? またスクロールさせた時、PictureBoxの描画範囲(Panel内の表示されている部分)の左座標、上座標、右座標、下座標の値を取得するには、どうしたらできるでしょうか?

  • VB2005 PictureBox1に線を描きたい

    VB2005 のPictureBox1に1秒毎に読込んできた値を折れ線グラフにして表示したいのですが、その方法を参考書を見ても良く分かりません。また、そのPictureBox1の上に別のフォームとかを表示すると、PictureBox1と重なった部分の表示が消えてしまいます。この2つを解決したいのですが。どなたか解決する方法を知っている方教えて頂きたいのですが。よろしくお願いします。

  • VBのフォームをスクロールさせるには

    VB6.0+WinXP環境です。 VBのフォームがありそのフォームは大きさを自由に変えられるとします。フォームを小さくした時に、フォーム上のボタンなどが、表示から隠れてしまいますが、フォームに水平および垂直スクロールバーをつけて、スクロールさせて表示できるようにしたいと思います。 簡単なコントロールを配置するだけで可能ですか。それともスクロールコントロールを配置して、座標やフォームの大きさや移動具合などを考慮して、プログラムをつくり込まないと駄目でしょうか。

  • PictureBoxの更新

    VB2005にてプログラミングをしています。 座標点の表示をするためにpictureboxを用い、繰り返し処理と併用しています。 繰り返して座標点の位置(変数)が変わる度にpictureboxを更新したいのですが、繰り返し処理が全て終わった後にしか更新されません。 これを繰り返す度に更新するにはどのようにしたらよいでしょうか。 よろしくお願いいたします。

  • vb2005 マウス座標の取り方

    VB2005(Win.Vista) フォームに置いたPictuteBoxで動いているマウスの座標(X,Y)値を知るにはどうするんでしょうか? たぶん同じだと思いますが、マウスボタンダウン時の座標の取り方もいっしょでしょうか? DelphiからいきなりVB2005にきたので、まったくわかりません。 どこか入門用のサイトありましたら、合わせてお願いします。

  • VBでクリックイベントを発生させたいです

    VBのことについての質問なんですが 座標を指定してマウスカーソルを自動でクリックさせたり、何秒間か長押しさせたりするイベントの発生のさせ方はどうするんですか? またデスクトップの座標ではなく、フォーム内での座標指定はできますか? 回答よろしくお願いいたします

専門家に質問してみよう