
こんばんは。VB初心者です。
VB6.0を用いてのクイズゲームを作成することになりました。
フォームの内容は以下のようなものです。
・問題文(ラベルorテキストボックス)
・ヒントの動画(MCIコントロール)
・四択選択肢(オプションボタン)
・正解不正解(ピクチャボックス)
・解説(ラベルorテキストボックス)
これを20問作るのですが、フォームを20個作らずに各コントロールの中身だけを変化させていきたいのですが、どのようなプログラムになるのか検討がつきません。
そこで、大まかなプログラムの流れだけでもいいので教えて欲しいです。
また、クイズ作成において参考になるHPがあれば教えて下さい。宜しくお願いします。
No.2ベストアンサー
- 回答日時:
20個フォームをつくるなんてやめて~(笑)
クイズは問題数分の配列を用意すればいいです。問題文と答えは
DIM Aestion(20) As String
DIM Kotae(20) as integer
ついでに回答者の結果を格納する配列も用意しましょう。
DIM Kekka(20) As Integer
とりあえず処理の中心は上記3つの配列です。
コードの先頭において、どこでも参照できるようにした方が楽です。
問題文はファイルから読み込む方が汎用性があっていいですが、
初心者だと大変なので、とりあえずはForm_Loadに書いてしまいましょう。
20問は毎回固定になります。
慣れたらQuestionとKotaeの配列を100に増やすとかしてもいいです。
問題文は最初100題書いておいて、20題だけ出題することもできます。
選択肢はオプションボタンとありますが、これは要らない。
最初から4つのボタンを用意して、
それを押下させた方が操作性もいいしコードも楽になります。
何問目の問題かを制御するカウンターもコードの先頭に宣言しましょう。
Dim nanmonme As Integer
これら変数をコードの先頭におくと便利なのは、
VBがイベント駆動型で処理がイベントにまたがってしまうからです。
どこのSub にもFunctionにも属さないコードの先頭におけば
フォームを閉じるまで変数の値はずっと保持されています。
MCIコントロールは最後の最後。
とりあえず20問最後まで動くインタフェースを作ってからの話ですね。
回答ありがとうございます!
まずは配列ですね♪
操作性や変数のおく位置についてもありがとうございました。
また質問するかもしれません。その時は宜しくお願いします。

No.1
- 回答日時:
A) 問題の情報をテキストファイルや Jet 方式のデータベースファイル (*.mdb) にでも書いておく。
B) 起動時に問題情報ファイルから 20問を一気に配列に読み込む。
C) 配列から「次の問題」を引っ張ってきてフォーム内の変数やコントロールに読み込む。
D) ユーザーがフォーム上の [次の問題] を押すと、先と同様に配列から「次の問題」を引っ張ってきてフォーム内の変数やコントロールに読み込む。
E) 問題の移動は以下同様に最終問題まで続く。
問題情報ファイルが持つ要素は
・問題の文章
・ヒント動画のファイルへのパス
・選択肢の番号と文字
・正解番号
・開設
といった感じ。
(B) の部分、つまり全ての問題を管理し、要求があれば「次の問題」(というかカレントの問題)を差し出す機能はクラスにしちゃってもいいんじゃないでしょうかね。
その場合クラスの機能としては(技術的に簡単に済ますなら)
・全ての問題情報を保持する配列(メンバ変数)
・全部で何問目なのかを提供するプロパティ
・現在の問題の問題文、ヒント動画パス、選択肢、などを提供するプロパティ
・次の問題に移動するメソッド
といったところでしょうか。
回答ありがとうございます!
まず、配列とクラスについて勉強したいと思います。
また質問するかもしれません。その時は宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- PDF PDFのテキストを追加機能 1 2022/06/18 12:45
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Illustrator(イラストレーター) Illustrator アンカーポイント選択について 3 2023/01/30 12:31
- 英語 問題 : I visit the ( ) with my mom every week. 3 2022/08/15 23:49
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- 計算機科学 アルゴリズムについて 1 2023/01/01 19:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
複数のtextboxの処理を一括で行...
-
大量の変数を定義するにはどう...
-
vba フィルター 複数条件 3つ以...
-
Excel2010のinputboxで複数デー...
-
excel vbaの配列なんですが・・・
-
Dir関数で読み取り順を操作でき...
-
VBAでMODE関数をつくる
-
構造体配列の特定のメンバーをF...
-
VB.NETの配列の限界を教えてく...
-
エクセルでXY座標に並べられた...
-
VBA 桁数が混在するソート
-
配列のペースト出力結果の書式...
-
EXCELを使って、アクセスログを...
-
countif/sumifのようなVBA関数
-
定数配列の書き方
-
ジャグ配列生成時の1オリジン
-
VBScriptでCSVファイルを読み出...
-
C言語 ポインタと配列
-
エクセル(VBA)の空白配列の削除...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Dir関数で読み取り順を操作でき...
-
エクセルでXY座標に並べられた...
-
配列のペースト出力結果の書式...
-
定数配列の書き方
-
大量の変数を定義するにはどう...
-
構造体配列の特定のメンバーをF...
-
Redim とEraseの違いは?
-
複数のtextboxの処理を一括で行...
-
VB.NETの配列にExcelから読み込...
-
COBOLの基本的な事なので...
-
Excel2010のinputboxで複数デー...
-
VBAでMODE関数をつくる
-
レコードセットの中身を配列に...
-
ReDim PreserveよりもReDimが遅い
-
EXCELを使って、アクセスログを...
-
配列の中の最大値とそのインデ...
-
VB6のメモリ解放に関して
おすすめ情報