ややプログラム紀行

博士2年のプログラムに関する日記

RPGに少し使える事

①Composite

今回のRPGの機能「物を拾う」は死体を漁ったり、宝箱から物を取るのも統合してしまおうと言うことになりました

イメージ的には「拾う」→「死体」→「衣類」みたいな感じです

つまり入れ子のような状態なんですね

これはどうやって実装しようか特に考えて無かったんですけど

まるぺけのデザインパターンをみてたらそれに適したのがありました

Composite

まあ原理は簡単です

ただ、こういう上手い継承の使い方をするべきだな~と思いました

②アイテムの追加、削除

昨日僕は「アイテムの追加の方法がまだ解決してない・・・」なんて言ってましたが、それは要するに

「テキスト(もしくはスクリプト)をどうやってC++の関数に変換しようか」

ってことだったんです

例えば会話で「倒してやる!」を選んだとき相手は戦闘モードになるとし、

そのシナリオがテキストでは

&倒してやる!%

CharacterMode(Battle)

こんな感じだったとします

さて、どうやってテキストの「CharacterMode」をC++の関数にしようか

それを悩んでました

まぁ普通に考えてReadFileクラスみたいなのを作って関数に置き換えるのが一番ですよね

スクリプトだと違うかもしれませんが・・・

簡単に思いつくのは

ReadFileクラスでその部分を読み取って(引数)

配列に関数オブジェクトのポインタでも入れて返す(戻り値)

のが楽でしょうね

③柔軟に対応するために

それぞれに適したやり方をするためには

動作1つ1つを関数オブジェクトみたいなのにして、

Player->RutinChange( ここはそれぞれテキトーに );

みたいなのがいいんじゃないかな~と思います

僕はプログラム初心者なので、多分作っている途中で

「あ~!こうしとけばよかった!!」

なんていうことが沢山あると思いますが

これならある程度は対応できそうです

対応できないとしたらそれは引数とか戻り値とかそこらへんでしょう