ソースコードに埋め込まれたバグを解きながらプログラミングを学べる、hackforplayの攻略法

「hackforplay 書き換え方」でこのblogを訪れる人が多いみたいなので、hackforplayの書き換え方、攻略について記載する。

hackforplay

ただhackforplayというゲームは唯一絶対の回答/攻略法があるわけではない。なので、自分が気付いた攻略方法を列挙している。

ステージ1.【天地長久のブルースライム】

main.jsのコメントとしても記載されているが、一番簡単な攻略法はブルースライムのhpを1に書き換えることだ。他にも以下のような攻略法がある。

  • プレイヤーの位置を書き換える(階段の近くに)
  • 階段の位置を書き換える(プレイヤーの近くに)
  • ブルースライムの位置を書き換える(離れたところに)
  • そもそもブルースライムを登場させない
  • このフロアでは必要な宝石は得られないので、思い切って飛ばす(ステージ2に飛ぶ)

ステージ2.【閉鎖空間のリロケーション】

main.jsのコメントとしても記載されているが、一番簡単な攻略法はプレイヤーや階段をリロケーションすることだ。他にも以下のような攻略法がある。

  • 壁を侵入可能にする(そうすればリロケーションする必要はない)
  • このフロアで取る宝石(サファイア)を取ったことにして、思い切って飛ばす(ステージ3に飛ぶ)

ステージ3.【火炎吐息のトゥルーオアフォルス】

main.jsのコメントとしても記載されているが、一番簡単な攻略法は題名の通り、trueと記載されている箇所をfalseに書き換えることだ。ただこれを行うとクリアに必要なルビーが消えてしまうので、100%クリアを目指す場合は別の手段を講じる必要がある。

  • プレイヤーの位置を書き換える(階段の近くに)
  • 階段とルビーの位置を書き換える(プレイヤーの近くに)
  • 穴を侵入可能にする(そうすればfalseにする必要はない)
  • このフロアで取る宝石(ルビー)を取ったことにして、思い切って飛ばす(ステージ4に飛ぶ)

ステージ4.【死屍累々のメイズ】

main.jsのコメントとしても記載されているが、一番簡単な攻略法は骸骨(skull)の動きを止めることだ。他にも以下のような攻略法がある。

  • プレイヤーとダイヤモンドの位置を書き換える(階段の近くに)
  • 階段とダイヤモンドの位置を書き換える(プレイヤーの近くに)
  • 骸骨(skull)からのダメージをゼロにする
  • このフロアで取る宝石(ダイヤモンド)を取ったことにして、思い切って飛ばす(ステージ5に飛ぶ)

ステージ5.【因果応報のインヘリタンス】

main.jsのコメントとしても記載されているが、プレイヤーの能力に一定の倍率をかけたものが相手の能力になる。初期状態では2倍なので、絶対勝てないようになっている。一番簡単な攻略法は倍率を2倍から1/2倍など1未満にすることだ。他にも以下のような攻略法がある。

  • 階段を作る(倒さなくても出現するようにする)
  • このフロアでは必要な宝石は得られないので、思い切って飛ばす(ステージ6に飛ぶ)

ステージ6.【機械演算のパラドックス】

ここはコメントに書いてある攻略法で来るとゲームをクリア自体はできるものの、ルビーを得ていないので、100%クリアにならないというものだ。ステージ3.【火炎吐息のトゥルーオアフォルス】の別解でステージ3をクリアすればルビーを持ってここに来れるが、そうすると今度はスターを少年が渡してくれないので、スターを渡すフラグを書き換えるのが良いだろう。

所感

このゲームはプログラミングの面白さを体験するのにもってこいの教材だ。自分でゲームを作るのではなく、色々弄れる仕組みが備わっているので、素材としてかなり楽しめるだろう。上に記述した攻略法はソースを修正する箇所をかなり絞っているが、他にもステージ4.【死屍累々のメイズ】の骸骨(skull)のようにプレイヤーを自動で動かすことだってできる。

このゲームの秀逸な部分は少しずつ書き換えていくことで、プログラミング(Javascript)の基本を理解できる点だろう。こういった教材が他の言語でも増えるのを期待したい。