• ベストアンサー

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

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

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

  • ベストアンサー
  • kiki_s
  • ベストアンサー率59% (147/248)
回答No.1

どのようにコードを組まれているのが分かりません。 同じ結果を出すとしても色々な書き方が出来ますよ。 OS、VBのバージョンなども分かりませんし、 乱数の取得部分とイメージの表示ルーチンなど、 必要最小限でも構いませんので、 コードを公開して下さい。

関連するQ&A

  • VB6でモグラ叩きゲームを作っているのですが…

    はじめまして。VB6初心者の者です。 実は今ある用途に使用するためにモグラ叩きゲームを作成しているのですが、モグラが出現してから叩くまでにかかった時間をログで出力できるような仕様にしたいのです。スコアの出力(モグラを一回叩くごとに一点加算)はできたのですが、どうしてもこれがわからなくて。。 もしよろしければアドバイスのほうをぜひよろしくお願いいたします。

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

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

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

    大至急返答お願いします。 学校の自由実験で、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' にキャストできません。 という意味深な文章が表示されてしまいます。 まだ初心者なので、よく分からないことが結構あります。 自己解決しようと努力してきましたが結局できず、終了期間間際になってしまいました。 是非御返答の程よろしくお願いします。

  • VB6.0で製作中の「もぐらたたきゲーム」について(補足版)

    昨日しました質問が要領を得ていなくて、回答してくださった皆様すいません。 ランダムで4種類の画像が同時に16個のImageにランダムに表示するようにしています。が、ランダムに表示するなかでも画像がかぶってしまい3種類、もしくは2種類しか表示されなくなってしまっています。どうしたら4種類とも表示できるでしょうか? <コード> Private Sub Form_Load() Randomize End Sub Private Sub Timer1_Timer() n = n + 1 If n <= 20 Then i = Int(Rnd * 16) f = Int(Rnd * 16) s = Int(Rnd * 16) b = Int(Rnd * 16) Image1(i0) = Image4 Image1(f0) = Image4 Image1(s0) = Image4 Image1(b0) = Image4 Image1(i) = Image2 Image1(f) = Image2 Image1(s) = Image5 Image1(b) = Image7 Label1.Caption = " バイキンマンの数 = " & (2 * n) Label3.Caption = " ドキンちゃんの数 = " & n i0 = i s0 = s b0 = b f0 = f Else Timer1.Enabled = False Command1.Caption = " 再度トライ " End If End Sub もっとコードが必要でしたら公開します。

  • VBでのカードゲーム作成

    VB.netを使ったプログラムについての質問です。 某トランプゲームをみて私もつくろうと思い立ったのですが、分からない点が見つかったのでご教示願いたいです。 ソリューションエクスプローラー内にResourcesという ファイルを作りカードの画像をジョーカー含め53枚入れました。(関係ないのかは不明です。) 手札ということで、カード53枚の中からランダム5枚入手するためにはどういった処理をすればいいのでしょうか? 配列に入れるにしてもどのように扱ったらいいかわからないですし、「山札から手札を配る」のようなアニメーションを加えるにもどうしたらいいかわからないです。 コード丸ごとでなくても「この書籍を見ればいい」「このサイトを見ればいい」などお教え頂く形でも構いません。一応ネットで調べたり、"逆引き大全"などは見たのですがわかりません。 作るものとしては、ポーカーをつくろうと思っています。役の判定アルゴリズムはできているのですが、そのほかがわからないので、お願いします。 □□□□□ □□ □□□□□ とありますが 中段右端を山札とした時、そこから手札配布といったアニメーションができるか、をお教えいただきたいです。 ですがあくまでメインは”乱数発生させて、ランダムで手札を作れるかどうか”です

  • VBでのシューティングゲーム

    こんにちは VB6.0を使ってシューティングゲーム作りしてるですが、弾を発射することはできたのですが弾が当たっても消えません(当たり前ですが 判定でIf文を使うのはわかっているのですが、そこからがわかりません・・・ どなたかご教授お願いします。 内容としては、image3(弾)がimage1(敵)に当たったらimage1が非表示になるって感じにしたいです。 image1も3もタイマーを使っています、よろしくお願いします。

  • 数当てゲームを作っているのですが

    数当てゲームを作っているのですが 乱数を設定してその値よりも小さい値を入力したら「小さい」、 大きい値を入力したら「大きい」と表示して その値を入力したときは「正解」と表示するような数当てゲームを作っています。 一応コードは書けたのですが、コンパイル、実行がうまくいかないのです。 ご指摘お願いします。 以下コード /* 1~99の乱数を発生させる */ #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i,random; // 乱数の種を植える,種に時間を使う srand((unsigned)time(NULL)); for(i=0; i<1; i++) { //乱数の発生 random = 1 + rand()%99; printf("%d\n",random); } printf("数当てゲームをはじめます。\nコンピュータが当たり数を用意しました。当たり数は1~99の間にあります。\n"); for(;;) { printf("あなたの予想は? > "); scanf("%d",&i); if(i>random) puts("大きい"); else puts("小さい"); break; } if(random - i = 0) printf("正解"); return (0); }

  • 乱数の作成について(初心者)

    Java初心者です。 -9から2の乱数を作成したのですが、乱数の出る確立が揃えられなくて困ってます。 どなたかお願いします。 import java.util.Random; class Rando2{ public static void main(String[] args){ Random x=new Random(); //-9から2の中から選びたい int n=x.nextInt(10); int f=x.nextInt(2);//0ならマイナスをつける if(2<n) n=-n;//-9から-3の作成(1/10の確立) else//-2から2の作成(1/20の確立) if(f==0) n=-n; System.out.print("あなたの好きな整数は"+n+"ですね?"); } }

    • ベストアンサー
    • Java
  • 完全な乱数を生成する方法

    C言語で乱数を生成するときに、今まで srand(time(NULL)); を使用していたのですが、それだと1秒以内に複数の処理を行った際に、 同一の乱数が生成されてしまいます。 時間にとらわれずに完全にランダムな数字を出現させるにはどのような方法を取るのが簡単なのでしょうか? よろしくお願いします。

  • エクセルの乱数関数で乱数を作成する。

    エクセルの乱数関数で乱数を作成する。 たとえば1~100までの乱数を作成する時、 1,2,3,・・・・,99,100の整数を複数発生させずに1個ずつ発生させることができますか? VBAとかプログラムを作らないとダメでしょうか?

専門家に質問してみよう