英単語リストを使った辞書攻撃機能を追加。Iteratorインターフェースを守ることで、ブルートフォースと辞書攻撃を自由に切り替えるポリモーフィズムを学びます。
Mooを使って「次のパスワード候補」を生成するクラスを作成。複雑なループ構造をオブジェクトの中に隠蔽し、スッキリとしたコードを実現します。
パスワードの桁数が増えるとfor文のネストでは対応できません。可変長のループ処理における問題点と、再帰処理の難しさを体験します。
Perlで3桁のパスワードを特定する単純なスクリプトを作成。for文のネストで総当たり攻撃(ブルートフォースアタック)の基本を学びます。
PerlとMooで学ぶデザインパターン実践シリーズ。RPGのセーブ/ロード機能を作りながら、状態管理の本質とMementoパターンを自然に習得できる全10回の連載です。
作ってきたものが「Mementoパターン」だったことを明かします。Commandパターンとの違い、Originator-Memento-Caretaker構造を解説。
全機能を統合してセーブ機能付きRPGを完成。対話的なCLIでゲームプレイのデモを行い、完成コードを確認します。
3つのセーブスロットから選んでロードできる機能を追加。複数履歴の管理と選択インターフェースを実装します。
セーブデータを外部から変更できないよう保護。Mooのis=>'ro'によるアクセス制御で、不正なデータ書き換えを防止します。
ボス戦前・エリア移動時に自動でセーブする機能を追加。auto_saveフラグと自動セーブロジックでゲーム体験を向上させます。
複数のセーブポイントを管理するGameManagerクラスを作成。セーブスロット機能でsave_game・load_gameメソッドを実装します。
スナップショットからプレイヤーの状態を復元。restore_from_snapshotメソッドを実装し、セーブ→ダメージ→ロードの流れを確認します。
プレイヤーの状態を1つのオブジェクトにまとめて保存。PlayerSnapshotクラスを作成し、is=>'ro'で不変(イミュータブル)なスナップショットを実装します。
ゲームオーバーで最初からやり直し...途中から再開したい!単純な変数コピーで状態保存を試みますが、参照コピーの罠に直面します。
PerlとMooを使ってシンプルなRPGを作成します。Playerクラスを定義し、HP・所持金・位置を管理。ゲームループで移動・戦闘のデモを実装します。