• ベストアンサー

クイズゲームのフォームについて

こんばんは。VB初心者です。 VB6.0を用いてのクイズゲームを作成することになりました。 フォームの内容は以下のようなものです。 ・問題文(ラベルorテキストボックス) ・ヒントの動画(MCIコントロール) ・四択選択肢(オプションボタン) ・正解不正解(ピクチャボックス) ・解説(ラベルorテキストボックス) これを20問作るのですが、フォームを20個作らずに各コントロールの中身だけを変化させていきたいのですが、どのようなプログラムになるのか検討がつきません。 そこで、大まかなプログラムの流れだけでもいいので教えて欲しいです。 また、クイズ作成において参考になるHPがあれば教えて下さい。宜しくお願いします。

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

  • ベストアンサー
  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答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問最後まで動くインタフェースを作ってからの話ですね。

sisuado
質問者

お礼

回答ありがとうございます! まずは配列ですね♪ 操作性や変数のおく位置についてもありがとうございました。 また質問するかもしれません。その時は宜しくお願いします。

その他の回答 (1)

回答No.1

A) 問題の情報をテキストファイルや Jet 方式のデータベースファイル (*.mdb) にでも書いておく。 B) 起動時に問題情報ファイルから 20問を一気に配列に読み込む。 C) 配列から「次の問題」を引っ張ってきてフォーム内の変数やコントロールに読み込む。 D) ユーザーがフォーム上の [次の問題] を押すと、先と同様に配列から「次の問題」を引っ張ってきてフォーム内の変数やコントロールに読み込む。 E) 問題の移動は以下同様に最終問題まで続く。 問題情報ファイルが持つ要素は ・問題の文章 ・ヒント動画のファイルへのパス ・選択肢の番号と文字 ・正解番号 ・開設 といった感じ。 (B) の部分、つまり全ての問題を管理し、要求があれば「次の問題」(というかカレントの問題)を差し出す機能はクラスにしちゃってもいいんじゃないでしょうかね。 その場合クラスの機能としては(技術的に簡単に済ますなら) ・全ての問題情報を保持する配列(メンバ変数) ・全部で何問目なのかを提供するプロパティ ・現在の問題の問題文、ヒント動画パス、選択肢、などを提供するプロパティ ・次の問題に移動するメソッド といったところでしょうか。

sisuado
質問者

お礼

回答ありがとうございます! まず、配列とクラスについて勉強したいと思います。 また質問するかもしれません。その時は宜しくお願いします。

関連するQ&A

専門家に質問してみよう