Welcome to touyou note!!

こんにちは。touyouです。touyou noteは、creativeな人間を志すちっぽけな学生が様々なことに体当たりするブログです。
どうぞお楽しみ下さい。

Twitter: @touyoubuntu
HomePage: TOUYOUBUNTU

検索用ワード

PC Linux Windows Cygwin Android Python Java C/C++ C# HTML Processing Lisp Perl Arduino Japanino Unity Google TopCorder Codeforces Vim Emacs Github PSP Gundam Soccer Mobile Dialy Study Music ...

2011年12月19日月曜日

D2Q開発記[12/19]

ライナーレイアウト、辞書追加の詳細なUIなどなかなかに開発が進みませんが・・・

とりあえずこれまでの経過←




①FileManagerクラス
これに関してはだいぶ前に作っていましたが、こんな感じ。

一応アプリの内部構造なども考慮して色々試行錯誤を・・・

public class FileManager {
 /* コンテキストでファイル入出力 */
    public static void contextWriteFile(Context context,String sData, String sFileName) {
     byte[] byArrData = sData.getBytes();
     OutputStream outputStreamObj=null;

     try {
      //Contextから出力ストリーム取得
      outputStreamObj=context.openFileOutput(sFileName,Context.MODE_PRIVATE);
      //出力ストリームにデータを出力
      outputStreamObj.write(byArrData,0,byArrData.length);
     } catch (Exception e) {
      Log.d("testWriteFile", e.getMessage());
     } finally{
      try {
       if (outputStreamObj!=null) outputStreamObj.close();
      } catch (Exception e2) {
       Log.d("testWriteFile", e2.getMessage());
      }
     }
    }
    public static String contextReadFile(Context context, String sFileName) {
     byte[] byArrData;
     int iSize;
     byte[] byArrTempData=new byte[128];
     InputStream inputStreamObj=null;
     ByteArrayOutputStream byteArrayOutputStreamObj=null;
     try {
      //Contextから入力ストリームの取得
      inputStreamObj=context.openFileInput(sFileName);
      byteArrayOutputStreamObj=new ByteArrayOutputStream();
      //ファイルからbyte配列に読み込み、さらにそれをByteArrayOutputStreamに追加していく
      while (true) {
       iSize=inputStreamObj.read(byArrTempData);
       if (iSize<=0) break;
       byteArrayOutputStreamObj.write(byArrTempData,0,iSize);
      }
      //ByteArrayOutputStreamからbyte配列に変換
      byArrData = byteArrayOutputStreamObj.toByteArray();
     } catch (Exception e) {
      Log.d("testReadFile", e.getMessage());
      return "";
     } finally{
      try {
       if (inputStreamObj!=null) inputStreamObj.close();
       if (byteArrayOutputStreamObj!=null) byteArrayOutputStreamObj.close();
      } catch (Exception e2) {
       Log.d("testReadFile", e2.getMessage());
      }
     }
     return new String(byArrData);
    }
    /* ここまで */
    public static List<String> dataLoad(Context context, String FileName) {
     String res = contextReadFile(context, FileName);
     String[] resAry = res.split("\n");
     List<String> resAry2 = new ArrayList<String>();
     for (int i=0; i<resAry.length; i++) resAry2.add(resAry[i]);
     return resAry2;
    }
    public static void dataSave(Context context, List<String> data, String FileName) {
     StringBuffer sb = new StringBuffer();
     for (int i=0; i<data.size(); i++) {
      sb.append((String)data.get(i));
     }
     contextWriteFile(context,sb.toString(),FileName);
    }
}

一応説明といいますか、軽く言うと、仕組み的にはファイルに改行で区切ってデータを溜め込んでおき、それをこれらの関数で分割したり、結合して書き込んだりと・・・まぁ簡単ですねw

Listにして返された配列の一つ一つの要素は何らかの形式で区切られた、問題と答えの塊です。

②問題出題システム
出題システムは、主に次の二つを候補に上げています。

  1. 問題→答えモードと、答え→問題モードを用意する
  2. 問題→答え、答え→問題をランダムに織り交ぜて出題する
現実的にも、効果的にも2の方がよさそうですが一応検討。
その上で採点、出題する問題、形式なども考慮してみました。

採点は何点か用意して間違える度に減らしていくようにしてみればいいでしょう。
出題する問題はできるだけ、間違った回数の多い問題、あるいは正解した回数の少ない問題を優先で出せるように。
形式は、一応筆記にするつもりですが、英語の日本訳など微妙な表現の違いでバツにしてしまうことになるので日本語を答えるようなところでは選択問題にできればと考えています。



以上です。
頑張ります♪

とりあえずこのあとは精進(`・ω・´)

0 件のコメント:

コメントを投稿