dポイントプレゼントキャンペーン実施中!

初心者なのですがVisual Studio6.0でもぐらたたきゲームを利用した作品を現在制作しています。内容は決まった画像がランダムでImageコントロールに表示され、それをクリックできると画像が変わり得点加算、クリックできないと画像が変わり減点というゲームです。現在Imageコントロールに決まった画像を呼び出す処理が完成しました。そして追加機能としてクリックできたらボーナスポイントの画像をImageコントロールに何分の何かの確率で表示させたいのですがわからない状態です。ちなみに画像は私のパソコンのDドライブから呼び出して表示させています。
どういった命令文を打ったら良いのかわかる方教えて下さい。宜しくお願いします。

こちらがプログラムです。
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

A 回答 (3件)

Imageコントロール単体で画像の重ね合わせは出来ないと思います


表示する元画像とボーナス用の画像を合成した画像を準備してそれを
ボーナス有り、ボーナス無しとして切り替えるなら可能でしょう
    • good
    • 0

ImageまたはPictureコントロールを使うということなんですが …



ボーナス表示用のイメージコントロールまたはピクチャーコントロールをフォームに貼り付けていてこれを操作するようにします
    • good
    • 0
この回答へのお礼

redfox63さま
ご回答ありがとうございます。私の考えでは新しいImageコントロールを貼り付けるのではなく、同じImageコントロールにボーナス画像を出そうと思っていたんですが(>_<)
つまり同じImage1コントロールにランダムで2つの画像を重ならないように表示させたいということです。私の説明が悪かったようですみません(>_<)

お礼日時:2008/01/29 21:41

よく意図が飲み込めないんですが ・・・


Timer1_Timerイベントの ctlFlagが1、HitFlgが1のときにボーナスを表示させたいってことですか
でしたら
' ここの 0.03などはご希望の確率に修正してください
if rnd() < 0.03 then
  ImageBonus.Picture = LoadPicture("Bonus.bmp")
  ImageBonus.Visible = True
  Ten = Ten + 10
end if
といった具合でしょうか ・・・
Timrt1_Timerの先頭で
ImageBonus.Visible = False
も追加って感じだろうと思います

毎回 LoadPictureで画像を読み込むより アプリケーション起動時にイメージを変数に取り込んでおいた方がいいように思います

Dim oImg(2) as stdPicture
をフォームレベルの変数として用意して
Set oImg(0) = LoadPicture("D:制作\5\画像1.bmp")
Set oImg(1) = LoadPicture("D:制作\5\画像2.bmp")
Set oImg(2) = LoadPicture("D:制作\5\画像3.bmp")
といった具合に初期化して

Image1.Picture = oImg(0)
といった具合に使えばいいかと思います

この回答への補足

redfox63さま
とてもご丁寧な回答をありがとうございます。

さっそくtimerイベントに↓
『ImageBonus.Visible = False』

『if rnd() < 0.03 then
 ImageBonus.Picture = LoadPicture("Bonus.bmp")
 ImageBonus.Visible = True
 Ten = Ten + 10
 end if』
を追加してみました。
実行してみましたら、3つあるimageBonus部分にコンパイルエラーで『変数が定義されていません。』と出てきました。
この場合にはどのような変数を定義したら良いのでしょうか?よろしくお願いします。

補足日時:2008/01/28 16:03
    • good
    • 0
この回答へのお礼

時間が迫ってて本当に困ってます(>_<)
どなたか宜しくお願いします。

お礼日時:2008/01/29 15:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!