2016 ソフトウェア設計及び演習用の班Wiki

gr01::期末クイズモジュール内部説明書

ヘッダファイル・ソースファイルから参照するもの

・proto.h
ganchan.character
キャラクター構造体
int turn
int backknowledge 
ターン数 
裏学力 
void tyukan(GtkWidget *)  GtkWidget *kimatsu0(GtkWidget *) 
GtkWidget *kimatsu1(GtkWidget *) 
GtkWidget *kimatsuA1(GtkWidget *) 
GtkWidget *kimatsu2(GtkWidget *) 
GtkWidget *kimatsuA2(GtkWidget *) 
GtkWidget *kimatsu3(GtkWidget *) 
GtkWidget *kimatsuA3(GtkWidget *) 
GtkWidget *kimatsu4(GtkWidget *) 
GtkWidget *kimatsuA4(GtkWidget *) 
GtkWidget *kimatsu5(GtkWidget *) 
GtkWidget *kimatsuA5(GtkWidget *) 
はじめの画面 
第1問 
正誤判定1 
第2問 
正誤判定2 
第3問 
正誤判定3 
第4問 
正誤判定4 
第5問 
正誤判定5 
void kimatsu(GtkWidget *)  void cb_mouse_perfect1_press  期末クイズモジュールのマウスクリック 
static gboolean
cb_mouse_press 
module = 7  7番のマウス遷移を使う 


・ ~/material/quiz/kimatsu
tyukan.png  最初の画面の画像 
ki1.png  問題No.1 
ki2.png  問題No.2 
ki3.png  問題No.3 
ki4.png  問題No.4 
ki5.png  問題No.5 
ki6.png  問題No.6 
ki7.png  問題No.7 
ki8.png  問題No.8 
ki9.png  問題No.9 


難易度
tyukan.png  最初の画面の画像 
ki1.png  普通
ki2.png  普通 
ki3.png  簡単
ki4.png  簡単 
ki5.png  難しい 
ki6.png  難しい 
ki7.png  難しい 
ki8.png  簡単 
ki9.png  簡単 

・ ~/material/quiz
qa1.png  正解の時の画像 
qa2.png  不正解の時の画像 



・music.h
効果音(BGM)やクリック音を再生するためのファイル。start_musicには .mp3形式のBGMが入っており、start_seには .wav形式のクリック音が入っている。


・ ~/material/quiz/bgm
kimatsu.mp3  期末クイズの時のBGM 

・ ~/material/quiz/bgm
war.wav  クリック音 

説明

  • 動作は全てクリックで行う
  • 出題は全5問
  • 8月(ターン20)で中間クイズが始まるので、play.c に ganchan.turn == 20 のときに期末クイズモジュールに遷移できるように設定してある
  • クリックの範囲が初めの画面、出題画面、正解画面、不正解画面で異なるので 変数 n を1〜4で設定しそれぞれの画面に対応している
    • n = 1 ・・・はじめの画面「START」のところのマウスクリック
    • n = 2 ・・・選択肢「1」「2」「3」のところのマウスクリック
    • n = 3 ・・・ 正解画面のところの「次へ」に該当するマウスクリック
    • n = 4 ・・・ 不正解画面のところの「次へ」に該当するマウスクリック
  • kimatsu0 はクイズの初めの画面なのでクリックの範囲は n = 1
  • 難易度は、裏学力(ganchan.backknowledge)の値で決め、学力が30以上のときは簡単な問題で、30未満のときは難しい問題となる
    • 裏学力は稀にドロップするレアアイテム過去問をドロップすることでアップする
    • int p, f のうち p に裏学力の値、 f で難易度の分岐をしている
    • 難易度の分岐は quikimatsu1 kimatsu2 kimatsu3 kimatsu4 kimatsu5 の全てで行っている
    • 全部で9問あるが、全体的に難易度が高めなので、その中で難しい・普通・簡単に分け、普通の問題は、簡単・難しいどちらにも所属している
  • クイズはランダムで出題されているが、GetRandom() で乱数にされたもののうち、一番上にあるものを表示している。このとき、kimatsu1 kimatsu2 kimatsu3 kimatsu4 kimatsu5 でそれぞれ GetRandom() を行い、Do〜While を使って問題が被らないようにしている
    • kimatsu1 kimatsu2 kimatsu3 kimatsu4 kimatsu5 のクリックの範囲は n = 2
    • マウスのクリックの範囲は選択肢の3種類。それぞれ1,2,3の値を持つ
    • GetRandom() event.c で定義している
  • 正誤判定は、クリックの範囲の1,2,3で、その値が正解かどうか判定する
    • kimatsuA1 kimatsuA2 kimatsuA3 kimatsuA4 kimatsuA5 のクリックの範囲は、正解の時 n = 3、不正解の時 n = 4
    • 正解のときは変数 sinka に1を加え、不正解のときは0を加える
  • 終わりに
    • キャラクターの進化に関する変数 ganchan.seikai sinka の値を入れる
    • ターン21に移るために ganchan.turn をプラス1する


最終更新日:2016/08/06 04:59:10