今回はすこし変わったプログラムをご紹介。その名も「カード・ルーチン」です。
このプログラムはゲームや鑑賞ソフトのような、単体で完結したプログラムではありません。指定した座標に任意のトランプのカードを表示するだけの機能しかなく、単体でゲームを遊んだりすることはできません。
なぜそれだけのプログラムが用意されたのか? 答えは至って明快、複数のプログラムで使い回すためです。
このプログラムは、アスキーのポケットバンクシリーズ「トランプゲーム集」に掲載されました。同書にはトランプを使ったカードゲームのプログラムが何本か収められているのですが、当然、それぞれのプログラムにはカードを表示するための処理が必要です。
ただしそれぞれのプログラムを入力するたびに、同じようなカード表示処理もいちいち入力するのは面倒です。ならばカード表示処理を共通化して複数のプログラムで使えるようにしておけば、何かと都合がいいという次第です。
「カード・ルーチン」は、メインとなるプログラムとマージ(結合)して使います。メインプログラムがゲームマスターを担当するのに対し、「カード・ルーチン」はカードの表示を受け持ちます。メインプログラムを差し替えれば、同じ表示ルーチンで様々なゲームが楽しめるという仕組みです。
表示処理を共通化しておくと、様々な利点があります。プログラムごとに表示ルーチンを入力する面倒が省けるのはもちろんです。作る側にとっても、プログラムごとに一からカードをデザインしたり表示処理を組む手間が減らせます。さらにプログラムごとに表示ルーチンを載せなくてもいいからページ数も節約できて非常に合理的(おい)。
よく使う処理を単独のサブルーチンとしておき、必要に応じて組み込んで使うという考え方は、C言語の関数など、効率的なプログラミングの思想に通じるものがあります。
「トランプゲーム集」には、動作サンプルとして「インディアンポーカー」と「おまけのプログラム」が掲載されています*1。「インディアンポーカー」は、自分のカードが相手のカードより強いか弱いかを当てるゲーム。要である表情の読み合いがないので、こちらのプログラムは「数当てゲーム」にすぎませんが、カードのグラフィックが添えられるだけでぐっと楽しさが増します。
「おまけのプログラム」は、山の中から引いたカードがどれかを当てるという、定番のカードマジックを再現したもの。茶番のような内容ですが、「カード・ルーチン」でこんなデモも作れるよというサンプルになっています。
*1:いただけたリストが「カード・ルーチン」とサンプルだけだったのだ。