初心者なのですがVisual Studio6.0でもぐらたたきゲームを利用した作品を現在制作しています。内容は決まった画像がランダムでImageに表示され、それをクリックできると得点加算、クリックできないと減点というゲームです。現在Imageコントロールに決まった画像を呼び出す処理が完成しました。そして追加機能としてそのImageコントロールに5分の1の確率で他の画像を呼び出して表示させたいのですがわからない状態です。宜しくお願いいたします。
こちらがプログラムです。
Option Explicit
Const MinImgAry = 0
Const MaxImgAry = 15
Const GameTime = 15
Dim HitFlg As Integer
Dim TEN As Integer
Dim HoleNum As Integer
Dim IconAry(2) As String
Private Sub Command1_Click()
Command1.Enabled = False
Option1.Enabled = False
Option2.Enabled = False
Option3.Enabled = False
HitFlg = 0
TEN = 0
Text1.Text = Str(TEN)
Timer1.Enabled = True
Timer2.Enabled = True
End Sub
Private Sub Command2_Click()
Form1.Show
End Sub
Private Sub Form_Load()
Dim StrPath As String
StrPath = App.Path
If Right(StrPath, 1) <> "\" Then
StrPath = StrPath + "\"
End If
IconAry(0) = "D:制作\5\画像1.bmp"
IconAry(1) = "D:制作\5\画像2.bmp"
IconAry(2) = "D:制作\5\画像3.bmp"
End Sub
Private Sub Image1_Click(Index As Integer)
Image1(Index).Enabled = False
HitFlg = -1
End Sub
Private Sub Option1_Click()
Timer1.Interval = 1000
End Sub
Private Sub Option2_Click()
Timer1.Interval = 800
End Sub
Private Sub Option3_Click()
Timer1.Interval = 500
End Sub
Private Sub Timer1_Timer()
Static CtlFlg As Integer
Select Case CtlFlg
Case 0
Image1(HoleNum).Enabled = False
Image1(HoleNum).Visible = False
HoleNum = Int((MaxImgAry - _
MinImgAry + 1) * Rnd + MinImgAry)
Image1(HoleNum).Picture = _
LoadPicture(IconAry(0))
CtlFlg = 1
Image1(HoleNum).Visible = True
Image1(HoleNum).Enabled = True
Exit Sub
Case 1
Image1(HoleNum).Enabled = False
If HitFlg Then
HitFlg = 0
Image1(HoleNum).Picture = _
LoadPicture(IconAry(2))
TEN = TEN + 1
Text1.Text = Str(TEN)
Else
Image1(HoleNum).Picture = _
LoadPicture(IconAry(1))
TEN = TEN - 1
Text1.Text = Str(TEN)
End If
CtlFlg = 0
Exit Sub
End Select
End Sub
Private Sub Timer2_Timer()
Static TimeCnt As Long
TimeCnt = TimeCnt + 1
If TimeCnt <> GameTime Then
Exit Sub
End If
Timer1.Enabled = False
Timer2.Enabled = False
MsgBox "おしまい"
TimeCnt = 0
Command1.Enabled = True
Image1(HoleNum).Enabled = False
Image1(HoleNum).Visible = False
Option1.Enabled = True
Option2.Enabled = True
Option3.Enabled = True
End Sub
すみませんいい忘れましたが、
このプログラムに何を追加すれば良いのでしょうか?だなたかお願いいたします。
ランダム
以上
ヒントさん→ランダムというのはわかるんですが何冊も本を調べてネットで調べたものを自分なりに考えて打ってみてもできないんです泣
編集 削除> 自分なりに考えて打ってみてもできないんです
確率1/5なら、ランダム関数で1〜5もしくは0〜4の値を作成するようにしましょう。
で、1(もしくは0)の時だけ呼び出す画像を別の画像にすればいいじゃな〜い。
ちなみに、あくまでも1/5の確率だから、5回やったら必ず1回は出るというものじゃないよ。
5回で0回かもしれないし、5回で2回かもしれない。
でも1万回繰り返したら総計2000回になるかもしれない。
で、何を持って「出来ない」って言ってるの?
「どこ」が出来てないの?
ひんと→初心者でまだVBがどんな命令を打てばどんなプログラムが実行されるかもわからないんです(>_<)
どんなソースを打てばいいのかすらわかりません泣
自分なりに調べて実行してみた、というのが見えませんよね・・・?
虚偽の情報はよい結果を招きませんよ
検索サイトにて「VB6 ランダム」として調べるだけでトップに出てくると思いますが
ここで質問しても、調べて出てくるものと同様の答えしか返ってきませんよ
どんなコードでどんな結果になるのかがわからない、というのであれば本を買って勉強することを強くおすすめします
うーんと。
ソースコードを大まかに眺めて、
★ 16個の穴に、一定間隔で画像を表示。
・穴は「Image1」の配列で実現。
・表示する画像は「IconAry」に格納されている。
・「IconAry」には
0:出てきたもぐら
1:叩かれたもぐら
2:叩かれなかったもぐら
の絵が入っている。
みたいな感じでしょうか。
HoleNum = Int((MaxImgAry - MinImgAry + 1) * Rnd + MinImgAry)
で出てくる穴を決めていますので、Rnd関数の使い方はおわかりなんですよね。
で、
「Imageコントロールに5分の1の確率で他の画像を呼び出して表示させたい」
ということですので、例えば「出てきたもぐら」を表示する
Image1(HoleNum).Picture = LoadPicture(IconAry(0))
を、1/5の確率で高得点なスペシャルもぐらに差し替えたい、ということになるんでしょうか。
であれば、例えば
・HoleNumを算出するタイミングで、スペシャルもぐらの有無も算出する。
・スペシャルもぐら有無フラグの変数を用意。
・Rnd関数で0〜4を算出する計算式を作り、0ならフラグ=True、それ以外ならフラグ=False。
・IconAryの(3),(4),(5)にスペシャルもぐらの3種類の画像を用意。
・LoadPictureで読み込む画像をフラグで分岐させる。
フラグ=TrueならIconAry(3),(4),(5)のセット、=Falseなら(0),(1),(2)のセット。
のようにしてみてはいかがでしょう。