goo blog サービス終了のお知らせ 
見出し画像

Retro-gaming and so on

RE: Rustでトランキライザーガン

さてさて。またもや龍虎氏が面白い事をやっている。

トランキライザーガンに付いては以前書いた事がある。往年のセガのゲームだ。


トランキライザーガンは1980年のビデオゲームで、平安京エイリアン(1月)、パックマン(5月)と同期だ。つまり、固定画面でパックマンと同様に「面が進めば迷路の構成が変わる」と言う事がない(そういう意味では平安京エイリアンの方が進歩してたかも・笑)。
同年11月にナムコから「ラリーX」、日本物産から「クレイジークライマー」が「画面スクロール」と言う機能付きのゲームをリリースするが、この11月以前には基本的に「スクロール」なんつーモノはなく、全て「固定画面」だ。
従って、トランキライザーガンもその当時の「旧式の」ゲームにあたる。

 まあ、こういう固定画面方式のゲームでプレイヤーはゾウ、ライオン、ゴリラ、ヘビの4種の動物を麻酔銃で眠らせてサファリカーまで運ぶ・・という内容。
・画面の密林部分にはプレイヤーは侵入不可。
・動物は密林部分も道路部分も自由に移動できて、密林に入ってるときには不可視
・動物ごとに麻酔銃に対する耐性が異なる(ゾウはたしか5発だったかと)
・画面の周囲は全部道路扱いで、サファリカーに乗って移動出来る。眠らせた動物はこの車に運び入れないといずれ目を覚ましてしまう(曖昧)
・ゴリラは車に接触することで、檻を開けて捕らえていた動物を全部逃してしまう


 ルールはこんな感じだったと思う。不明な点は・・
・どうやったらクリアか(面クリア方式なのか、ひたすら捕らえ続けるのか)?
・一度に同じ種類の動物が複数出てくるのか?
・車でヘビを轢き殺せるという噂が当時あったような・・(でも、殺したら意味がないのでデマだと思う)

前書いた記事でも言及したが、このトランキライザーガン、SEGA SG-1000/SC-3000向けに「サファリハンティング」を名前を変えて移植されている。

 
その(たった6ページしかない)マニュアルによると、「遊び方」は次のようになっている。



動物は4種類しかいなく、「麻酔銃一発」で寝る動物はいない。最低でも二発以上になる。



まぁ、これが「仕様」って言えば仕様だろうか(笑)。得点に絡んで如何にプログラムに組み込むか、そしてゴリラの動きだよな。その辺に工夫が必要かも。


なお、「サファリハンティング」を見ると、「トレーラーの燃料」の初期状態は30Lで、しかもこれがタイマーの役割を果たしてて、一定時間経つと1Lづつ減っていく。多分1面で7〜8秒で1L減る、ってカンジ?この辺は自分で決めたらいいとは思うんだけど、恐らく、面の攻略時限が3分、って辺りから割り出した数値じゃなかろうか。なお、このヴァージョンの移植担当は例によってコンパイルだ。

 Claude先生はマップデータの要素をEnumで書かせたいようだ

Enumerate、あるいは列挙体は最近のプログラミング言語には含まれていない。当然RacketなんかのLispでも含まれてないデータだ。
Lispなんかは当然、「何かを名前付きで表現したい」場合、クオートされたシンボルを使えば済む話なんで、列挙体のお世話にならなくていい。この辺の話はここで書いた事があるが、ザックリ言うと、例えばC言語やPascalなんかでオセロを書きたい、なんて言った場合、盤面や黒、白、なんかを列挙体で定義すると、それぞれの「名前」はIDナンバー付き、になる。IDナンバーを使って僕らが判別するわけじゃなく、それら「名前」っつーかシンボルを使って「人間に分かりやすい」ようにプログラムを組んでいくと、プログラム側の方がIDナンバーを「識別」する事によってプログラムが構成される、と言う・・・・・・。
どっちにせよ、Lispだとシンボルがあるんで列挙体は必要ないんだけど、CやPascalのような低抽象度の言語だと、シンボル代わりに列挙体を使うぞ、とまぁ、そう言った話になる・・・うん、これは利便性の話なんで、「要らない」って言えば使わないでプログラム自体は組めるんだよな(笑)。
まぁ、そんなんで、あまり重要視されてなく、モダンなプログラミング言語だとそういう機能が欠けてる事が多いわけ(笑)。
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「プログラミング」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事