1

私は再び頭を抱えているという明確な感覚を持っています。数か月前、コードを検索し、リフレクションを使用して変更を加えるシステムを構築しました。これはうまくいきました。現在、システムを再構築し、そのいくつかの側面を少し一般化しようとしています。私がやりたいことの 1 つは、最新の計算で起こった可能性のある変更にとらわれないようにすることです。

たとえば、私がマリオ プログラムを実行していて、ボタンを押したとします。ゲームの状態が変化しましたが、その方法がわかりません。この効果を逆にして、時間をさかのぼって別のボタンを押すことができるようにします。私の計画は次のとおりです。

  • 何らかの効果が適用された可能性のあるすべてのゲーム クラスを外部化します。静的な値を含むすべての非最終フィールドの値を保存します。
  • extern を使用してすべてのゲーム オブジェクトを書き出します。
  • 変更を行います。
  • extern を使用してすべてのゲーム オブジェクトを書き出します (後でこの状態に戻りたい場合)。
  • 変更前の状態を再度読み込みます。

一見すると、ここで私の顔の中で何かが爆発するのでしょうか? これは正しい考えですか?または、いくつかの静的フィールド/奇妙な動作が私を台無しにしますか? 外部化のために、私は文字通り、リフレクションを介してすべてのフィールドのリストを要求し、何も見逃さないように反復順に書き出すことを計画しています。

改造 - 外部化は既存のタグではないため、タグのシリアル化を使用しました。それが大丈夫であることを願っています。

編集-ローカル変数の値、またはスタックまたはヒープはまだ必要ありません。ただし、これは後で考慮する場合があります。特に、変更の間に破棄された可能性のあるオブジェクトの存在/非存在です。

基本的に、一般的な計算ステップを逆にする必要があります。これが可能かどうかはわかりません。

4

1 に答える 1