The Even More Incredible Machine

この記事はプログラマーにオススメしたいゲーム紹介 Advent Calendar 2018の8日目の記事です。

この記事では、The Even More Incredible Machine(日本語版はもっともっとインクレディブル・マシーン)を紹介します。 Incredible Machineはルーブ・ゴールドバーグ・マシーンを作るゲームのシリーズです。ルーブ・ゴールドバーグ・マシーンというのは、単純な作業を手の込んだからくりを使って遠回りに実現する装置のことです。いわゆるピタゴラ装置ですね。

f:id:blue_jam:20181205231335p:plain

The Even More Incredible MachineはIncredible Machineシリーズの2作目で発売年は1992年(日本語版は1995年)だそうです。僕は小学生の時に、家にあった古いWindows 95のノートパソコンで遊んでました。

めちゃくちゃ古いゲームですが、現在はGOG.comというストアでWindows XP,Vista,10で動作するものが購入するできます。なお、The Even More Incredible Machine単体での販売ではなく、シリーズの数作がまとまったMega packが約$10で購入できます。お得ですね。(GOG.comで購入できるMega packはWindowsのみ対応らしいです。昔はMacで動くやつも販売されていたらしいんですが。)

ゲームの形式は次のようになっています。

  • 各ステージ毎に課題と道具の初期配置(固定)、自由に配置できる道具のセットが与えられます。
  • 自由に配置できる道具を配置して、課題をクリアしたら勝ち。

一つだけ例をやってみます。

f:id:blue_jam:20181205222705p:plain

このステージでは一番右の蝋燭に火をつければ勝ちです。自由に使える道具は画面右側のツールボックスにあります。今回はシーソーとロープ、滑車、虫眼鏡、懐中電灯、白熱電球スクリーンショットでは隠れている)です。

課題を解決するには例えば次のように道具を配置します。

f:id:blue_jam:20181205223121p:plain

これを動かしてみると次のようにして課題が解決できます。

  1. バケツが重力に従い落下し、一番左の白熱電球を灯す
  2. 虫眼鏡を通った白熱電球の光がロケットに火をつける
  3. ロケットが発射し上に向かう。途中でダイナマイトに火をつける
  4. ダイナマイトが爆発して、ボウリング球を右側に飛ばす
  5. ボウリング球が懐中電灯のスイッチをつける
  6. 懐中電灯の光が虫眼鏡を通ってロケットに火をつける
  7. ロケットが発射し、シーソーにぶつかる
  8. シーソーにつながれたロープが滑車を通して、白熱電球を灯す
  9. 白熱電球の光が虫眼鏡を通ってろうそくに火をつける

動画で見るとこんな感じです。

ちなみに、このゲームにはフリーエディットモードがあり、使える道具の制約なしに自分の好きなルーブ・ゴールドバーグ・マシーンを作ることができます・・・と聞くと半加算器を実装したくなるのが人情というものですよね。せっかく「プログラマーにオススメしたいゲーム紹介」という企画だったので、そこそこ頭をひねって実装してみました。

1bit半加算器

これが俺の答えじゃー!(ババーーン)

f:id:blue_jam:20181205230116p:plain

左側のスイッチ付きコンセントが入力装置です。スイッチの上に野球ボールを置くと1、置かないと0とします。 右側の家は下位ビットの出力です。家の中に人が入ると1、入らないと0です。 右側の猿が乗った自転車が上位ビットの出力(桁上がり)です。猿が自転車をこぐと1、こがないと0です。

動作させるとこんな感じになります。(野球ボールの位置をミスって何回かトライしてます。)

AND回路の実装は簡単だったのですが、XORの実装方法を考えるのが難しかったです。何度、YouTubeで検索しそうになったことか・・・

お付き合いいただきありがとうございました。