アドベンチャーの履歴表示に関して

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
RUIN

アドベンチャーの履歴表示に関して

#1

投稿記事 by RUIN » 16年前

C言語ではなく、Javaなのですが、ゲームのアルゴリズム
に関する質問ということで、書き込ませて頂きます。

現在、アドベンチャーのプログラミングを行っておりますが、ベースは昔、別の人が作った物で、仕様等は殆ど変更できない(データ&プログラムのベース)状況です。それが、いろいろ問題のあるもので、なんとかベースを変えずに調整して、いろいろ書き換えているのですが、履歴取得~描画に関して悩んでいます。

アドベンチャーの履歴表示に関して検索はしてみましたが、良いサイトが見つかりませんでした。履歴表示方法はいろいろあるとは思いますが、コマンドごとに(1文章ごと)ではなく、複数の文章(&名前)を、特定の行数分表示する必要があり、↑↓で文字数や改行で分割された状態のものをスクロールさせるので、非常に面倒な仕様となっています。元のプログラムで、そのスクロール部分にバグがあり、良くわからない組み方になっているので、取得の段階から書き換えたいと思っております。

時間もないので、簡単な手法として、シナリオデータの読み込み時に全「文章&名前」を文字数と改行コードで分割された状態で履歴用のString配列に生成してしまい、現在の進行状態を見て、履歴の表示位置だけを指定して表示してしまおうかと考えているのですが、アドベンチャーの履歴取得表示の手法としては邪道ですよね?。

その場合、String配列を2000行分程生成してヒープに確保しておくということになるのですが、危険な気がするので、やっぱり別の方法にした方が良いでしょうか?。ヒープに余裕があるわけでもないですし(3MB程)。

わかりにくい質問で申し訳ないのですが、ご意見、参考になりそうなサイト情報などありましたら、宜しくお願いします。

ibis

Re:アドベンチャーの履歴表示に関して

#2

投稿記事 by ibis » 16年前

メモリ上に置きたくないということでしたらファイルに置いとくのが基本ですよね。
で、ファイルから必要なところだけロードする。
速度に難があるようならバッファリングもするとか。

あと、場合によってはデータ構造を変えると軽くできるかも。
例えば、
String str; //ここに文章を全部詰め込む
int ptr[2000]; //ptr[x]はx行目の開始位置が何文字目かを示す
みたいにするとか。

閉鎖

“C言語何でも質問掲示板” へ戻る