レベル調節での手札の移動

Issue #61 resolved
k4nagatsuki repo owner created an issue

レベル調節で持ちきれなくなった手札は荷物袋等に自動的に移動されるが、これを元に戻すのが面倒なのでなんとかしたい。

案としては、

  1. 手札に残すが使用できないようにする。判定などにも引っかからなくする
  2. 持ちきれなくなったカードを入れるポケットを設け、自動でその中に入れる。レベルを戻すとそのポケットから手札に戻ってくる
  3. 移動したカードをマークし、レベルを戻すと戻ってくるようにする

1と2はいずれもカードの配布ややり取り、所持分岐(本当は持ちきれないカードは荷物袋に持っていることになるが……)などの処理が懸案。

3はマークしたきりそのPCがいなくなってしまった場合等に困る。PCの行方を追跡してマークを書き換えなくてはならない。

Comments (10)

  1. takuto_cw

    2は、カードを置く場所を1こ増やす、ということでしょうか。 それだとプレイしていて混乱しそうな予感がします。 既存の場所、キャラ側ないし荷物袋・カード置き場側のどちらかで処理する方が良いように思えます。

    (1だと、このキャラには格闘技などと決めてる人にうけがよさそう。 似合うカードの中から、今日はこれで行こう、という使い方もできるかも。 ……とここまで考えて、自分がイメージしているのは「プレイヤーから見た操作」であって、 今議題に挙がっているのは「プログラムでの処理の仕方」と、全然違うことに気が付いた。 似合うカードを表示するだけなら、別に荷物袋側で管理しても、「似合うカードリスト」さえ存在すれば何とかできそう)

  2. takuto_cw

    やっぱり分岐その他の都合を考えると、3でしょうか。 マークするというのがどういうことか、あまりよく分かってないのですが、 自分のイメージしたのはこんな感じです。

    レベルを下げたときに、そのキャラの元のレベルと所持カード情報(シナリオ名、作者名、種別、ID)のリストを記録し、以降は レベル調整画面に、「元に戻す」「クリア」ボタンが出る。 元に戻すをクリックすると、確認ダイアログが出る。 レベル+カード(荷物袋から探す。なければカード置き場も探す。それ以上は探さない)を表示。 戻せないカードは文字色を変えて通知。OKで、レベル変更とカード移動を一度に行う。 パーティ全員分、一気に確認・戻せると楽でいい。 クリアボタンを押せば、元に戻す用のデータを消去。

    (処理内容を考えていたはずなのに、ついプレイヤー操作のイメージにずれていく……)

    所持してたカードの追跡は結構適当です。

  3. k4nagatsuki reporter

    やはりキャラクター側で記憶するのが妥当でしょうね。キャラクターに、所持カードのリストとは別に、「所持していたカード」のリストを持たせればよさそうです。

    CardWirthのカードのマッチング方式を考えると、名前と解説+作者・シナリオ名辺りで記憶するのがよいかもしれません。アイテムカードの使用回数など、若干の誤爆の可能性はありますが、そこまでは厳密にはやらなくてもいいと思います。どうせ見つけられないカードなども発生しますし。

    ユーザインタフェースとしては、ユーザに操作を求めるよりは、いっそレベルが戻った時に自動で戻してしまってもいいと思います(オプションで自動的に戻すか選択できるようにして)。

  4. k4nagatsuki reporter

    試しに上の仕様で最新のデイリービルドで実装してみました(お試しみたいなのはブランチ切ってやった方がいいと思うが……こういう時gitが羨ましい)。

    使い勝手はどんなものでしょうか。

  5. takuto_cw

    おおお…! こんなに早く組み込んでいただけるなんて。ありがとうございます! 夕方まで時間が取れないので、取り急ぎレスを。

    CardWirthPy_20130623b + WinXP
    エラーが出て、エンジンが起動しません。
     File "cw\setting.pyo", line 53, in init_settings
     NameError: global name 'slef' is not defined

    パソコン上のリポジトリで Commit 0397356 まで pull して動かせば、無事起動しました。 カードが戻ったときは、感動! そうそう、この機能が欲しかったんです!

    ただ……ときどき挙動がおかしくなるようです。同じ操作をしているのに、 うまくいくときと、駄目なときがありました。 駄目なときは、レベル調整直後に音楽が止まったり、こんなエラーが出ました。

    Traceback (most recent call last):
     File "D:_cwpy-clone\cw\dialog\edit.py", line 745, in OnOk
      cw.cwpy.exec_func(func, self.get_selected(), self.slider.slider.GetValue())
     File "D:_cwpy-clone\cw\thread.py", line 479, in exec_func
      pygame.event.post(event)
    pygame.error: video system not initialized

    ご確認お願いいたします。

  6. k4nagatsuki reporter

    self。slef。これはひどい。

    起動できないバグは直したと思います。

    挙動がおかしくなるほうは、なにかややこしい事が起きていそうな感じがします。調べてみますのでもうしばらくお待ちください。

  7. k4nagatsuki reporter

    wxPython側でダイアログが破棄された後にpygame側のスレッドからダイアログのメンバにアクセスしようとしている箇所があって、そのためタイミング次第でエラーが起きていました。

    直ったと思います。ご確認ください。

  8. takuto_cw

    いつも迅速な対応ありがとうございます。 cardwirthpy_20130623d と winXP にて、起動時バグ及び、レベル調整直後の不具合の修正を確認いたしました。

    確認ダイアログがいちいち出るより、こちらの方がシンプルでいいですね。既にオプション対応しているところがすごい。お疲れ様です!

  9. k4nagatsuki reporter

    ありがとうございました。また何か問題が起きたら修正して行きましょう。

  10. Log in to comment