kiyo_hikoのブログ

メモ+日記?

Javaでクイズ暗記ツール作成(8)

クラス設計を見直して再構成中


とりあえず文字パネルを作った。


f:id:kiyo_hiko:20130827095352p:plain:w400

いまのところ

  • パネルのローダーで最初の1問目のクイズだけなぜかちゃんと読み込まない
  • 新規出題し直すときに再描画がうまく行ってない
  • OKはこの場合不要だからあとで消す

という具合で、いろいろ直さねばならない困り者。


ひとまずパネルのフォーマットは次のようなもの

{
寒気と暖気の勢力が等しいときに出来る全線を何という?

      • -

停滞前線
閉暖温塞寒冷
}

で、これを次のようなコードで読み込むのだけど、

try {
    BufferedReader in = new BufferedReader(new FileReader(filename));
    String s;
    ...
    while ((s = in.readLine()) != null) {
    Matcher m = comments.matcher(s);
    s = m.replaceFirst("");
    s = s.trim();
    if (s.equals("")) continue;
    if (s.equals("{")) {
        // ↑この条件を捕まえられない
        continue;
    }
...

コードにコメントで書いたとおり、最初の一問だけなぜか"{".equals("{")がtrueに評価されない。
2問目以降はOKだし、問題順序を入れ替えれば、交換して一番上に来た問題でやっぱり同じ問題が起きてる。BufferedReaderの使い方間違ってるのかしら。


あと出題機構の方はどうせイージーミスだろうからじっくり治すとして。

その他の展望

  • パネルはを完成させたら○✕形式を作る
  • そのあとは形式をランダムに混ぜて出す機構を作る

今のところ、
型パラメーターをとる出題機構クラスに単一形式のクイズローダーを渡して出題オブジェクトを作成しているので、ここに新規クラスRandomQuizLoaderを渡すようにする。

  • CardLayoutをもっとうまく制御する

SwingのCardLayoutには、現在のカードを選択するためのメソッドがないので、今のところshowメソッド呼び出し時にアクティブにしたカードを変数に記憶している。

これがめんどくさいので、CardLayoutを継承して構文糖?的なものを付けたCardLayoutSugar?クラスを作って現在のカードの管理はそれにお任せする。


的なことをやりたい。

なお、先週のドラゴンたち

  • 社会は1回ぐらい討伐
  • 文系は2回ぐらい討伐
  • 理系は7回ぐらい討伐

いまのところ理系だけランキングに載ってる。
たばこのけぶりが嫌だったし、そのおかげで1日4時間前後で済ませたのでこんなものか。