- 締切済み
sgfファイル(囲碁)の中身を変更したい…してほしいんですが
囲碁の盤面の棋譜のファイルという物なんですが… その事はどうでもいいんですが、 さっそくなんですが、sgfファイルの中身は↓ _____________________________ (; GM[1]SZ[9] PB[Human] PW[GNU Go 3.6] DT[2008-12-05] RE[W+6.5] KM[6.5]TM[]RU[Japanese]PC[]EV[]GN[]AP[CgfGoBan 1.04] C[Time 0:12,0:00] C[Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz] C['T' means thinking time per a move.] ;B[cc]T[ 2];W[gg]T[ 0];B[cg]T[ 2];W[gc]T[ 0];B[ec]T[ 0];W[eg]T[ 0] ;B[de]T[ 8];W[ge]T[ 0]) _______________________________ というものなんです。(OSはXPです。メモ帳で開くと↑のように表示されます。) これを以下のように変換して表示したいんです。(メモ帳で開く) ________________________________ +++++++++ +++++++++ ++@+@+O++ +++++++++ +++@++O++ +++++++++ ++@+O+O++ +++++++++ +++++++++ ________________________________ (都合上↑のファイルを囲碁ファイルと呼びます) どういう事かというと、sgfファイルの ;B[cc]T[ 2];W[gg]T[ 0];B[cg]T[ 2];W[gc]T[ 0];B[ec]T[ 0];W[eg]T[ 0] ;B[de]T[ 8];W[ge]T[ 0]) と書かれている行が囲碁ファイルに関連します。 例えばB[cc]は@が左上から右に向かって3番目、左上から下に向かって3番目 です。つまり、+++という事になります。 +++ ++@ つまり、座標で考えると(3,3)は(c、c)という事です。 他の例だとW[ge]→座標で考えると(7、5)で(g、e)という事です。 +++++++ +++++++ +++++++ +++++++ ++++++O となります。このようにして ;B[cc]T[ 2];W[gg]T[ 0];B[cg]T[ 2];W[gc]T[ 0];B[ec]T[ 0];W[eg]T[ 0] ;B[de]T[ 8];W[ge]T[ 0]) を +++++++++ +++++++++ ++@+@+O++ +++++++++ +++@++O++ +++++++++ ++@+O+O++ +++++++++ +++++++++ となるんです。 流れはこんな感じです。 java言語でこのように読み込んだsgfファイルを別のファイルで囲碁ファイルとして作成するプログラムがほしいんです。 出来れば作っていただいてソースを公開してほしいです。 厚かましいとは思いますが、どうぞよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- _ranco_
- ベストアンサー率58% (126/214)
> 出来れば作っていただいてソースを公開してほしいです。 ここは自分でJavaプログラミングをやる人のための質問の場です。 やりかたを説明します。 まず +の列と最後の改行だけのデータを、文字列(JavaのStringオブジェクト、いや、StringBufferのほうが書き換え用としては便利)として必要な数だけArrayListに入れてください。 次に、sgfファイルのデータをひとつひとつ読みながら、上のArrayList内のデータ(String内の各文字)を書き換えてください。 書き換えが終了したら、その内容をファイルに出力してください。 これで、あなたの言う「囲碁ファイル」ができあがります。 ArrayListなど、Javaのデータ構造オブジェクトの使い方や、基本的なファイルI/Oのやり方等は、基礎からちゃんと勉強&練習してください。
お礼
どうもありがとうございます。 参考になりました。