• ベストアンサー

画像をランダムに表示させたい(VB6.0)

A、B、C、D、E、Fの6枚の画像を用意して ボタンを押すごとにA、B、Cの3枚の画像をランダムに表示させる方法を教えて下さい。 また、 Aが表示されたとき、キーボードの「A」を押すとDを表示 Bが表示されたとき、キーボードの「B」を押すとEを表示 Cが表示されたとき、キーボードの「C」を押すとFを表示 としたいのですが・・・。 どなたかご教授お願いします。

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

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

#1です。訂正版です。 前準備として、  1.フォーム上にピクチャーボックス(Picture1)、コマンドボタン(Command1)を配置。  2.フォームのKeyPreviewプロパティをTrueにする。(KeyPressイベントを他のコントロールより先に受け取るため。) 次にフォームモジュールに以下のように記述することでできました。 Dim strABC As String '(フォーム)モジュールレベルの変数 Private Sub Command1_Click()   Dim intRND As Integer   Randomize '乱数発生ルーチンを初期化   intRND = Int(3 * Rnd + 1) '1~3の間で乱数を発生   'intRND(1~3の整数)の値からA,B,Cの画像を表示。strABCにどの画像を表示したか設定。   Select Case intRND     Case 1       Picture1.Picture = LoadPicture("C:\A.BMP")       strABC = "A"     Case 2       Picture1.Picture = LoadPicture("C:\B.BMP")       strABC = "B"     Case 3       Picture1.Picture = LoadPicture("C:\C.BMP")       strABC = "C"   End Select End Sub Private Sub Form_KeyPress(KeyAscii As Integer)   If UCase(Chr(KeyAscii)) = "A" And strABC = "A" Then     Picture1.Picture = LoadPicture("C:\D.BMP")   ElseIf UCase(Chr(KeyAscii)) = "B" And strABC = "B" Then     Picture1.Picture = LoadPicture("C:\E.BMP")   ElseIf UCase(Chr(KeyAscii)) = "C" And strABC = "C" Then     Picture1.Picture = LoadPicture("C:\F.BMP")   End If End Sub

sisuado
質問者

お礼

回答ありがとうございます! 訂正版ありがとうございました。 また、KeyPreviewプロパティについても教えて頂きありがとうございました。

その他の回答 (3)

  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.3

rnd関数を使えば簡単にできます。 rnd関数は乱数を発生させる関数です。 int(rnd(1)*3)+1 とすれば整数1~3の乱数が返されます。これは乱数の基本的な使い方です。 後は仕様がよく分からないので適当に補正して下さい。 なお、VBの乱数は精度があまりよくないことが知られているので、 発展としてseedを研究されるとより知識が深まるでしょう。 >Aが表示されたとき、キーボードの「A」を押すとDを表示 キー操作にはkeypress、keydown、keyupの3つのイベントがあり、 この場合はふつうにkeypressに記述すればいいかと思います。

sisuado
質問者

お礼

回答ありがとうございます! 「seed」ですね。ありがとうございます。 早速、調べてみます。

回答No.2

#1です。勘違いしてました。 A,B,Cをランダムに表示させた後に、押したキーによって画像を切り替えるということだったのですね。 私の回答だと、ランダム表示とA,B,Cのどの画像が表示されているかの判定部分が入っていませんね。 すみません。読み飛ばしてください。

回答No.1

質問文だとランダムではなく規則性があるように思えるのですが、 フォームにピクチャーボックス(Picture1)を配置して、フォームのKeyPressイベントに 下記のコードを記述すれば出来ると思いますが。 (画像D,E,FはCドライブの直下にあるBMPファイルと仮定して。) Private Sub Form_KeyPress(KeyAscii As Integer)   If KeyAscii = Asc("A") Then     Picture1.Picture = LoadPicture("C:\D.bmp")   ElseIf KeyAscii = Asc("B") Then     Picture1.Picture = LoadPicture("C:\E.bmp")   ElseIf KeyAscii = Asc("C") Then     Picture1.Picture = LoadPicture("C:\F.bmp")   End If End Sub ※行頭には位置揃えのため全角スペースが入っています。

関連するQ&A