![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
初心者なのですが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件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
Imageコントロール単体で画像の重ね合わせは出来ないと思います
表示する元画像とボーナス用の画像を合成した画像を準備してそれを
ボーナス有り、ボーナス無しとして切り替えるなら可能でしょう
No.2
- 回答日時:
ImageまたはPictureコントロールを使うということなんですが …
ボーナス表示用のイメージコントロールまたはピクチャーコントロールをフォームに貼り付けていてこれを操作するようにします
redfox63さま
ご回答ありがとうございます。私の考えでは新しいImageコントロールを貼り付けるのではなく、同じImageコントロールにボーナス画像を出そうと思っていたんですが(>_<)
つまり同じImage1コントロールにランダムで2つの画像を重ならないように表示させたいということです。私の説明が悪かったようですみません(>_<)
No.1
- 回答日時:
よく意図が飲み込めないんですが ・・・
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部分にコンパイルエラーで『変数が定義されていません。』と出てきました。
この場合にはどのような変数を定義したら良いのでしょうか?よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
背景画像の繰り返しについて
-
vb.net 画像の透過について
-
PHPの画像アップロード
-
uwscの画像認識に失敗します。
-
画像のビット数を変更する方法
-
uwscの画像認識の不具合だと思...
-
UWSCについて質問です
-
パネルに画像
-
画像の重ね合わせがうまくでき...
-
複数枚画像の合成
-
【Papervision3D】円柱にテクス...
-
UWSCを使って画像リンクをクリ...
-
日本の白地図の画像に、都道府...
-
UWSC 画像認識で条件分岐
-
画像のピクセルデータの取得
-
OpenCVを使った画像の切り抜き
-
colorbox.js 画像クリックで閉じる
-
ImageMagickでgif画像の一部が...
-
クリックした位置に画像を貼り...
-
OpenCVで出力を24bitのbmpにす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ImageMagickでgif画像の一部が...
-
Pythonでgif画像が上手く作れない
-
こんなことてしますか??
-
【EXCEL VBA】ダブルクリックで...
-
Excel ユーザーフォームで表示...
-
「using Windows」でエラーが出る
-
背景画像の繰り返しについて
-
【WPF】画像の切り替え
-
uwcs のマクロで画像認識をして...
-
uwscの画像認識に失敗します。
-
vb.net 画像の透過について
-
EXCEL VBA 複数のImageコントロ...
-
UWSC「画像が無い場合」
-
gif 画像上の ボタンに リン...
-
VBAのユーザーフォームのイメー...
-
VBA シート毎に画像挿入
-
画像処理したBitmapをピクチャ...
-
UWSC 画像判定と条件分岐について
-
UWSC 画像認識で条件分岐
-
自作の地図をグーグルマップの...
おすすめ情報