- ベストアンサー
VB6.0でランダムに表示するブランクつき画像のプログラムの作成方法
- VB6.0を使用して、ランダムにブランクつきの画像を表示するプログラムを作成したいです。写真は8枚で、各写真を2秒間表示し、1.5秒間のブランクを挿入します。
- 現在のコードでは、8回のループでランダムな画像を表示しています。ただし、ブランク(非表示)の処理が正しくなく、改良が必要です。
- Randomize関数を使用して、画像のランダム表示とブランクの挿入を正しく実装する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
『ランダムに8枚』というのが 1) 8枚すべてを表示したい 2) 重複があってもかまわないので8回表示したい のどちらでしょう 1) ならば 0-7までの数値を代入した配列をシャッフルして この配列を元にファイル名を決定すればいいでしょう 2)ならば 単にINT(Rnd()*8) でファイル名の決定をすればいいように思います Form クラスの変数として dim nIndex(7) as Byte, sName(7) as String FormLoadイベントで dim n as Integer, m as Integer, w as integer for n = 0 to 7 nIndex(n) = n sName(n) = "C:\AAA" & n & ".jpg" next for n = 0 to 7 m = rnd()* 8 w = nIndex( m ) nIndex( m ) = nIndex( n ) nIndex( n ) = w next といった具合に下準備 Private Sub Command1_Click() dim n as Integer Command1.Visible = False Picture1.Visible = False for n = 0 to 7 ' 1) の場合 PresentStimulus( sName( nIndex(n) ) ) ' 2) の場合 ' PresentStimulus( sName( Int(Rnd()*8) ) ) Next End Sub Private Sub PresentStimulus(sFileName) Picture1.Picture = LoadPicture(sFileName) Picture1.Visible = True nowtime = timeGetTime() 'milliseconds from windows startup Do DoEvents Loop Until timeGetTime() - nowtime > 2000 Picture1.Visible = False Do DoEvents Loop Until timeGetTime() - nowtime > 1500 End Sub といった具合で ・・・
お礼
分かりづらい説明ですみません。私の場合『8枚全てを表示したい』という1)の方です。とても分かりやすい回答をありがとうございます!!授業で本当に少ししかかじっていない私には難しく、あきらめていたのですが、redfox63さんのおかげでどうにかまた頑張れそうです!!ありがとうございました!!