ローグのふるまい


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

本質なんてページにしているけど、たいしたことはない、自分用のメモ。

プレイヤーが必要な情報は

Thinkに与えられている情報に等しい。これをスタブの視点からドライバの視点に書き換える。


RogueCore

構築

RogueCore(string scriptFileName)

まず、設定ファイルを読み込んでローグの世界を構築する。

今回のローグは特殊なローグで、

読み込み時にすべての世界がスクリプト(台本)どおりに動くことが想定されているのでこれでいい。

制御

Rogue#append_term()

世界の時間を進める。これは本当はいらないのかもしれないけど、

アニメーションやプレイヤとのやりとりの関係で入れることに。

1termで1キャラ動く。

戻り値はActDataオブジェクト。

Rogue#skipTerm()

プレイヤのターンまですすめてしまう。

選択

Attack(direction)

directionに指定した方向へ攻撃を行う。

攻撃が成功するとログが返ってくる。

攻撃できない状態で攻撃を行うと、"行動不能通知ログ"が返ってくる

Move(direction)

directionに指定した方向へ動く。

動くことができると、行動ログが返ってくる。

移動できない場所へ移動を行うと、"行動不能通知ログ"が返ってくる

Use(itemid)

アイテムを利用する。アイテムはget_itemlistを利用した時に得られる

アイテムリストを利用する。


情報

get CurrentStage //ゲーム中のステージも別に必要はない

世界の中では見えないStage上もキャラクターが動いている。しかしそれは今は無視をする。

get CurrentObjPool //裏のオブジェクトプールで動いている人間もいるが、表にでる情報には必要ない

上に同じ。

get ItemList //もっているアイテムリストの取得、ファイナルなんとかのうわさのソートプログラムは必須。
get PlayerInfo //プレイヤーの情報
get TalkLog //トークログ
get DebugLog //デバグ時のログ


廃止項目

SetPlayerAction(Action action,Direction dir,ItemID item_id)

プレイヤのターンが回ってきた際にプレイヤが行動する値。

行動できないような命令にならないようにするには、

廃止理由

move,attack,use,throwingに変更。

NextTurmIsPlayer()

次の行動がプレイヤのターンかどうか。

プレイヤのターンならば、

セクションを切り替えてやる。

廃止理由

AppendTurnした時に、"プレイヤターン通知ログ"を返した方がスマートな気がしたのと、

pythonインタプリタ上で遊ぶ時にそっちの方が操作が楽だとおもったから。


これからの方向

import rogue

して

rogue = Rogue(scenariofile)

して遊べるようにする。


その後、コンソールラッパとしてあとで作り直す。

基本的にRogue#get系で得られるデータは生データに近い形式をとる。

ローグの内部仕様について