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