Python で基本的なゲームを作成する方法を独学しています (テキスト ベース - pygame は使用しません)。(注:基本的なコア構造を最初に把握したかったので、実際には「ゲーム」の部分には到達していません。)
私はセーブ/ロードのシナリオをどのように実装するかを理解しようとしているところであり、プログラムのシングル実行を超えてゲームセッションを持続させることができます。私は少し検索を行いましたが、すべてが最良の解決策として酸洗いまたは棚上げを指しているようです.
私のテスト シナリオは、クラスの 1 つのインスタンスを保存して読み込むためのものです。具体的には、Characters() というクラスと、(テストのために) pc という変数に割り当てられたそのクラスの 1 つのインスタンスがあります。Character クラスのインスタンスには name という属性があり、最初は「DEFAULT」に設定されていますが、新しいゲームの初期セットアップ時にユーザー入力に基づいて更新されます。例:
class Characters(object):
def __init__(self):
self.name = "DEFAULT"
pc = Characters()
pc.name = "Bob"
私はまた、割り当てられた変数を使用してさまざまなインスタンスを参照する多数の関数を持っています (または持つ予定です)。たとえば、簡単な例として構成されたものは次のようになります。
def print_name(character):
print character.name
def run():
print_name(pc)
run()
PCインスタンスを(他の情報とともに)現在の情報(例:更新された名前)でパックする保存機能を用意する予定です。また、ユーザーが新しいゲームを開始する代わりに、保存したゲームをプレイできるようにするロード機能も用意します。私が読んだことから、負荷は次のように機能する可能性があります。
*assuming info was saved to a file called "save1"
*assuming the pc instance was shelved with "pc" as the key
import shelve
mysave = shelve.open("save1")
pc = mysave["pc"]
私の質問は、保留ロードがインスタンスに関連付けられた変数名を「記憶」し、その << pc = mysave["pc"] >> ステップを自動的に実行する方法はありますか? または、その変数名を文字列(キーなど)として保存し、その文字列を使用して正しい名前(pc)で変数を作成する方法はありますか?
多くのインスタンスを「保存」する必要があり、そのプロセスをループで自動化できますが、特定の変数名へのアンロードを自動化する方法がわかりません。それぞれを個別かつ明示的に再割り当てする必要がありますか? インスタンスを適切な変数名に割り当てる必要があります.bcには、変数名を使用して特定のインスタンスを参照するコア関数がたくさんあります(上記の例のように).
アイデア?これは可能ですか、それとも私が見ていないまったく別の解決策がありますか?
ありがとう!
〜肋骨