現在、棋譜を蓄積して、成長していくリバーシゲームを作ろうとしています。
具体的には、
http://www.nurs.or.jp/~cosmos/reversi.zip
↑のものが作成中なのですが、
その棋譜の残し方とは、
勝った方の棋譜を、一手一手盤面ごとに蓄積して、
次回から、その盤面を示す棋譜ファイルがあれば、
そちらの手を優先するというものです。
そこまではうまくいったのですが、
その棋譜ファイル名が、盤面の状態を
0:ブランク
1:黒石
2:白石
で64個並べたものです。
しかしこれではあまりにHDDを圧迫するので、
文字列をうまく可逆圧縮出来るをご存知ないですか?
> http://www.nurs.or.jp/~cosmos/reversi.zip
・・・
リンク先のダウンロードファイル葉落とす気がないので確認はしていませんが、
一手一手を別々のファイルに保存しているのでしょうか?
> その棋譜ファイル名が、盤面の状態を
> 0:ブランク
・・・
> で64個並べたものです。
3ステートの情報なら
2ビット×64個/8ビット=16バイト が一盤面で一つのファイルにどんどん
書き込んでいけばいいのでは?手数としては、いっても64手ですよね?
だとすれば
16バイト×64手=1024バイト にしかならないと思いますけど。
はい、今のところ、局面が変化する毎に、
その局面を示すファイル名のファイルに書き込んでいます。
1つのファイルに保存するのは、
プログラムの実行時に、その棋譜を一時記憶用として用いてるのですが、
そのまま1つのファイルに蓄積させると、
読み込みの時や、データ上書きの時に、
巧く呼び出す方法が分からないのですが・・・
でもsilver foxさんの仰る方法の方が、
実行速度は速くなりそうなので、
もうちょっと効率的な文字列検索方法の勉強をしてみます。
> でもsilver foxさんの仰る方法の方が、
・・・
> もうちょっと効率的な文字列検索方法の勉強をしてみます。
ちなみに説明ではビットデータでの扱いでしたので文字列検索では駄目なような・・・
すいません、勘違いしてました。
この場合は、どのような検索方法が有効なのでしょうか?
手数は、最大でも60手で、(実際ありえないけど)
交互に打ち合うわけだから、
ファイルサイズは一局あたり500バイト弱ぐらいだと予想されます。
http://www.geocities.co.jp/SiliconValley-PaloAlto/6407/program/sample/3.html
↑
圧縮プログラムを解説しているページを見つけました。
お騒がせしてすいませんでした。
ツイート | ![]() |